The story of a Telegram bot

Nearly three years ago, I started one of the most amusing side projects. I did not even regard it as a side project; it was something I rapidly hacked while under the excitement of messing with my friends.

Nearly three years ago, I started one of the most amusing side projects. I did not even regard it as a side project; it was something I rapidly hacked while under the excitement of messing with my friends.

Pop, a hero, is born

My University friends and I have a Telegram group chat that we use for sharing our news, heated debates of any kind, but first and foremost shit-posting. Imagine introducing a bot in such an environment, trolling people when they say something or shit-post on its own. Endless possibilities.
But what if this bot had a personality, a character? I thought it would be funnier if the bot had a more humane image. I thought about using a cartoon character, so I picked "Bob the Builder," which I used to watch as a kid. It was hilarious to have a bot with the face of innocent Bob shit-posting in our chat and trolling my friends. But since it was not the original Bob but my little Frankenstein, I named it Pop. I was so excited.

At the time, I was learning JavaScript while working on my first thesis project, so I used Node.js for the implementation. After spending some hours reading the documentation of the Telegram Bot API, I had a plan. I would need the following:
A simple server with a single endpoint that would be called by Telegram and accept the messages sent in the group.
A simple client that would call the Telegram API with the messages that Pop would send.
A map with bot responses. The bot would reply based on a word or phrase in a user message.
Developing this initial version, deploying it on Heroku, and adding the bot properly to the chat, took me two days. I was amused and proud to see my little artifact interacting with my friends.
After the first excitement of creation was gone, I realized that I could use the bot for many things. It was an interface from the group chat to any third-party API, and the only limit was imagination. It was also a good developer exercise. In the next month, I created simple integrations with Imgur, News API, and OpenWeatherMap API. I also enriched the ways Pop would send messages by allowing him to reply and not only post text but images too.
In the following months, I didn't have a lot of time, so I was working less and less on it until I completely stopped.

Pop participates in a hackathon

In the upcoming months, I moved to Germany. I participated in Digital Product School, where I worked with many great people and learned a ton of stuff on how product development and startups work. While in DPS, we had a hackathon day where people from different teams would mix up and work on one of their ideas. Then there was Max, who had the idea of creating a car assistant chatbot. I told him I already had a working prototype of a Telegram chatbot, and we partnered up to adjust it for the use case he imagined. We did not make a lot of changes; after all, we had just one day to work on it; however, we used IBM Watson and made the discussion with the bot a bit more friendly and eloquent from dull text reactions.
That day I realized that something you build for fun could end up being a real product as long as it fulfills a need or solves a problem. I was thrilled that my shit-posting bot could potentially add value to an actual product.
Unfortunately, that was the last time I used my bot since, after a DPS, I went to start my internship in Blik, and I didn't have any time for a side project.

Meeting with an old friend

Fast forward to today, two years later and, I've been thinking about starting a side project. The main reason I want to start a side project is to have fun, have something to showcase on my GitHub and, investigate or delve into various technologies. Moreover, I want to document all the work I will be doing for my side project and create blog posts about it.
Since I had much fun in the past with Pop, my Telegram bot, I decided to put it back in action, refactor the old code, and add features that make it even more fun. And here we meet again, my dear old friend.

So in the following weeks, I will start a post series where I will:

  • Present the existing project.
  • Set new goals for it.
  • Refactor the current code.
  • Start implementing new features in it.

While doing this series, I will present software development concepts, methodologies, and technologies. My goal is twofold; first, I will be able to achieve the goals I outlined at the beginning of the section, and secondly, you will hopefully learn something new.
Stay tuned!

Subscribe to Backend Definite

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.