My first Python Telegram bot — and some tips if you want to follow the same tutorial
Tags: python, chatbot, telegram
Published: 2020-02-24 08:52:49

Woot-woopety-woot! I just finished writing my first Python Telegram bot!

Thanks a bunch to [Dzaky Widya Putra](https://www.freecodecamp.org/news/learn-to-build-your-first-bot-in-telegram-with-python-4c99526765e4/) for the tutorial that actually gave me the confidence (and detailed instructions) to give the thing a shot - and to my phone's AI for recommending it to me.

The bot is a simple one: it takes one command, "/boop", and returns a random cute doggo pic. The source of the images is the [Random Dog API](https://random.dog/), and the bot works through the [python-telegram-bot library](https://github.com/python-telegram-bot/python-telegram-bot).

I've been studying Python for two and a half weeks now, and all this time I was following the Hyperskill.org curriculum. So far I've completed all their beginner-level projects. So I have a bit of a basic understanding of Python, but no fancy skills.

I was worried that the chatbot project would be out of my scope since I hadn't used external libraries or APIs before. But after the [official library tutorial](https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-Your-first-Bot) and a bit of anxiety and trepidation, I found out that it's more fun than terrifying (with a pinch of debugging frustration).

You can check out my bot [here](https://t.me/radodog_bot) - however, it currently works only when I launch the program on my computer. Deploying it so it can run continuously is my next plan (maybe Heroku?), I'm really curious about to do that.

### If you want to try it yourself:

I think Dzaky's [tutorial](https://www.freecodecamp.org/news/learn-to-build-your-first-bot-in-telegram-with-python-4c99526765e4/) does a great job of getting you through the process. There were a few small things that inadvertently made me stumble, so I decided to share them here and explain.

#### Don't forget to install the requests library

[Requests](https://pypi.org/project/requests/2.7.0/) is not a built-in module in Python. This means you can't just import it, you have to install in first. Dzaky's tutorial mentions installing the python-telegram-bot library separately, but not requests, so it took me a while to figure out why things were not working, and I did spend some time half blankly staring at my code doing nothing. As you might imagine, reading the error message helped.

#### Pay attention to the Updater arguments

In the tutorial when you create your instance of the Updater class, it goes like this:

```
updater = Updater('YOUR_TOKEN')
```

For me, this threw a Deprecated error. As far as I understand, in the latest version of the library you also need to set use_context to True, like this:

```
updater = Updater('TOKEN', use_context=True)
```

#### If the tutorial's bop function is not working for you check the version from Github

When I was through with the first stage of the tutorial I fired up my bot, sent the command in Telegram and... nothing happened. Not even a hint of a dog pic.

I thought maybe I missed something, copied and pasted the sample code from the tutorial, tried again, and still - nothing.

I copied the code from the project's Github, and immediately booped a cute doggo into existence.

If the same happens to you, here's what I figured out after comparing the two version's line by line. Take a look at the bop function from the tutorial and the same block from the Github version:

```
def bop(bot, update):
    url = get_image_url()
    chat_id = update.message.chat_id
    bot.send_photo(chat_id=chat_id, photo=url)
```

```
def bop(update, context):
    url = get_image_url()
    chat_id = update.message.chat_id
    context.bot.send_photo(chat_id=chat_id, photo=url)
```

The Github version uses the new context-based syntax, that's why this block works, and the other one doesn't.

#### I think this is a great project to take your first look at Telegram bots

I hope you find those tips helpful and they save you a bit of frustration and doubt, although those two are really part of the learning process. =) For me, the project was fun, manageable, and an inspiration to dig deeper. And I'm not even going to deny that I went down a rabbit hole of booping and dog adoration (and being pleased with myself) when my code worked. It's a good thing my own dogster was sleeping, or he would have been really jealous.

If there's something you don't understand, all the errors are google-able, and if you want an extra challenge, try doing the same, but with [cat gifs](https://rapidapi.com/lilbbytrimble/api/random-cat-gif), once you've figured out the basics.

![A picture of my dog sleeping beside me while I work.](https://artfox.dev/wp-content/uploads/2020/02/sleeping_doggo-min.png)

This could have been generated by the bot, but nope, it's my very own sleeping doggo.

Good luck in exploring Telegram bots, they're super fun! And a big thanks to Dzaky for the original tutorial.

Thank you for reading, this post was originally published on [ArtFox.Dev](https://artfox.dev/my-first-python-telegram-bot) on 24.02.2020.

P.S.: this is my first dev.to post, and I'm super anxious =)