Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.

org/create-a-telegram-bot-using-python/

Write & Earn DSA Data Structures Algorithms Interview Preparation Data Science Topic-wise P

Create a Telegram Bot using Python


Difficulty Level : Easy ● Last Updated : 11 Oct, 2021

Read Discuss Practice Video Courses

In this article, we are going to see how to create a telegram bot using
Python.

In recent times Telegram has become one of the most used


messaging and content sharing platforms, it has no file sharing limit
like Whatsapp and it comes with some preinstalled bots one can use
in any channels (groups in case of whatsapp) to control the behavior
or filter the spam messages sent by users.

Requirements
• A Telegram Account: If you don’t have the Telegram app installed
just download it from the play store. After downloading create an
account using your mobile number just like WhatsApp.
• .python-telegram-bot module: Here we will need a module called
python-telegram-bot, This library provides a pure Python
interface for the Telegram Bot API. It’s compatible with Python
versions 3.6.8+. In addition to the pure API implementation, this
library features a number of high-level classes to make the
development of bots easy and straightforward. These classes are
contained in the “telegram.ext” submodule. For more information,
you can check their official GitHub repo.
We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Installation of the module


Got It !

1 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

We can install this module via pip and conda with the below
command.

# installing via pip


pip install python-telegram-bot

# installing via conda


conda install -c conda-forge python-telegram-bot

Steps to create your first bot


Step 1: After opening an account on Telegram, in the search bar at the
top search for “BotFather”

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Got It !

2 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

Step 2: Click on the ‘BotFather’ (first result) and type /newbot

Step 3: Give a unique name to your bot. After naming it, Botfather will
ask for its username. Then also give a unique name BUT remember
the username of your bot must end with the bot, like my_bot,
hellobot etc.

Step 4: After giving a unique name and if it gets accepted you will get
a message something like this –

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Got It !

3 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

Here the token value will be different for you, we will use this token in
our python code to make changes in our bot and make it just like we
want, and add some commands in it.

Stepwise implement

Step 1: Importing required libraries

Python3

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy
from telegram.ext.updater import Updater
Got It !
from telegram.update import Update

4 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

from telegram.ext.callbackcontext import CallbackContext


from telegram.ext.commandhandler import CommandHandler
from telegram.ext.messagehandler import MessageHandler
from telegram.ext.filters import Filters

Brief usage of the functions we are importing:

• Updater: This will contain the API key we got from BotFather to
specify in which bot we are adding functionalities to using our
python code.
• Update: This will invoke every time a bot receives an update i.e.
message or command and will send the user a message.
• CallbackContext: We will not use its functionality directly in our
code but when we will be adding the dispatcher it is required (and
it will work internally)
• CommandHandler: This Handler class is used to handle any
command sent by the user to the bot, a command always starts
with “/” i.e “/start”,”/help” etc.
• MessageHandler: This Handler class is used to handle any normal
message sent by the user to the bot,
• FIlters: This will filter normal text, commands, images, etc from a
sent message.

Step 2: Define functions for operation

Start function: It will display the first conversation, you may name it
something else but the message inside it will be sent to the user
whenever they press ‘start’ at the very beginning.

Python3

updater = Updater("your_own_API_Token got from BotFather",


use_context=True)

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
def start(update: Update, context: CallbackContext):
acknowledge that you have read and understood our Cookie Policy & Privacy Policy
update.message.reply_text(
Gotto
"Enter the text you want It !show to the user whenever they start the bot"

5 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

Basically, in the start message, you should add something like “Hello
Welcome to the Bot” etc.

Help function: It is basically in this function you should add any kind
of help the user might need, i.e. All the commands your bot
understands, The information related to the bot, etc)

Python3

def help(update: Update, context: CallbackContext):


update.message.reply_text("Your Message")

Adding some more functionalities to the Bot.

Python3

def gmail_url(update: Update, context: CallbackContext):


update.message.reply_text("gmail link here")

def youtube_url(update: Update, context: CallbackContext):


update.message.reply_text("youtube link")

def linkedIn_url(update: Update, context: CallbackContext):


update.message.reply_text("Your linkedin profile url")

def geeks_url(update: Update, context: CallbackContext):


update.message.reply_text("GeeksforGeeks url here")

def unknown_text(update: Update, context: CallbackContext):


update.message.reply_text(
"Sorry I can't recognize you , you said '%s'" % update.message.text)

def
We useunknown(update: Update,
cookies to ensure you have the best context: CallbackContext):
browsing experience on our website. By using our site, you
update.message.reply_text(
acknowledge that you have read and understood our Cookie Policy & Privacy Policy
"Sorry '%s' is not a valid command" % update.message.text)
Got It !

6 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

Here we have added 4 functions one to open Gmail, one for youtube,
one for LinkedIn, and the last one for GeeksforGeeks. These are not
MANDATORY functions, you can add any kind of functions and their
reply_text as you want, these are just for demonstration. Here the
unknown_text function will send the message written inside it
whenever it gets some unknown messages and the unknown
function will Filter out all the unknown commands sent by the user
and reply to the message written inside it.

Step 3: Adding the Handlers to handle our messages and commands

Python3

updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CommandHandler('youtube', youtube_url))
updater.dispatcher.add_handler(CommandHandler('help', help))
updater.dispatcher.add_handler(CommandHandler('linkedin', linkedIn_url))
updater.dispatcher.add_handler(CommandHandler('gmail', gmail_url))
updater.dispatcher.add_handler(CommandHandler('geeks', geeks_url))
updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown))
updater.dispatcher.add_handler(MessageHandler(
# Filters out unknown commands
Filters.command, unknown))

# Filters out unknown messages.


updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown_text))

Here each line suggests that whenever a user writes a command i.e.
the first parameter of the CommandHandler in reply the user gets the
message written inside the function mentioned in the next
parameter.

Step 4: Running the bot


We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Python3 Got It !

7 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

updater.start_polling()

Here whenever we start polling the bot will be active and it will look
for any new message sent by any of the users and if it matches the
command specified there it will reply accordingly.

Below is the full implementation:

Python3

from telegram.ext.updater import Updater


from telegram.update import Update
from telegram.ext.callbackcontext import CallbackContext
from telegram.ext.commandhandler import CommandHandler
from telegram.ext.messagehandler import MessageHandler
from telegram.ext.filters import Filters

updater = Updater("your_own_API_Token got from BotFather",


use_context=True)

def start(update: Update, context: CallbackContext):


update.message.reply_text(
"Hello sir, Welcome to the Bot.Please write\
/help to see the commands available.")

def help(update: Update, context: CallbackContext):


update.message.reply_text("""Available Commands :-
/youtube - To get the youtube URL
/linkedin - To get the LinkedIn profile URL
/gmail - To get gmail URL
/geeks - To get the GeeksforGeeks URL""")

def gmail_url(update: Update, context: CallbackContext):


update.message.reply_text(
"Your gmail link here (I am not\
giving mine one for security reasons)")

We useyoutube_url(update:
def cookies to ensure you have theUpdate,
best browsing experience
context: on our website. By using our site, you
CallbackContext):
acknowledge that you have read and understood our
update.message.reply_text("Youtube Cookie
Link Policy & Privacy Policy
=>\
https://www.youtube.com/")Got It !

8 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

def linkedIn_url(update: Update, context: CallbackContext):


update.message.reply_text(
"LinkedIn URL => \
https://www.linkedin.com/in/dwaipayan-bandyopadhyay-007a/")

def geeks_url(update: Update, context: CallbackContext):


update.message.reply_text(
"GeeksforGeeks URL => https://www.geeksforgeeks.org/")

def unknown(update: Update, context: CallbackContext):


update.message.reply_text(
"Sorry '%s' is not a valid command" % update.message.text)

def unknown_text(update: Update, context: CallbackContext):


update.message.reply_text(
"Sorry I can't recognize you , you said '%s'" % update.message.text)

updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CommandHandler('youtube', youtube_url))
updater.dispatcher.add_handler(CommandHandler('help', help))
updater.dispatcher.add_handler(CommandHandler('linkedin', linkedIn_url))
updater.dispatcher.add_handler(CommandHandler('gmail', gmail_url))
updater.dispatcher.add_handler(CommandHandler('geeks', geeks_url))
updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown))
updater.dispatcher.add_handler(MessageHandler(
Filters.command, unknown)) # Filters out unknown commands

# Filters out unknown messages.


updater.dispatcher.add_handler(MessageHandler(Filters.text, unknown_text))

updater.start_polling()

Output:

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Got It !
00:00 01:33

9 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

Start Your Coding Journey Now! Login Register

Like 37

Previous Next

Python Program For Finding OpenCV Panorama


Intersection Point Of Two Stitching
Linked Lists

Related Articles

1. Send message to Telegram user using Python

2. Google Chrome Dino Bot using Image Recognition |


Python

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
3.acknowledge
Instagram Bot
that you haveusing Python
read and and
understood InstaPy
our Cookie Policy & Privacy Policy

Got It !

10 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

4. How to Build a Twitter Bot to Post Latest Stock Update


using Python

5. Spam bot using PyAutoGUI

6. Python | Whatsapp birthday bot

7. How to make a Twitter Bot in Python?

8. Python - Making a Reddit bot with PRAW

9. How to Build a Simple Auto-Login Bot with Python

10. How to Build Web scraping bot in Python

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Got It !

11 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

Article Contributed By :9th Floor, Sovereign Corporate Tower,


A-143,
Sector-136, Noida, Uttar Pradesh - 201305

dwaipayan_bandyopadhyay
feedback@geeksforgeeks.org
@dwaipayan_bandyopadhyay

Vote for di�culty


Company
Current di�culty : Easy Learn
About Us DSA
Easy Normal Medium Hard Expert
Careers Algorithms

In Media Data Structures

Contact Us SDE Cheat Sheet


Article Tags : Python-projects, python-utility, Python
Privacy Policy Machine learning

PracticeCopyright
Tags : Policy
python CS Subjects

Advertise with us Video Tutorials

Courses
Improve Article Report Issue

News Languages
Top News
Python
Technology
Java
Work & Career
CPP
Business
Golang
Finance
C#
Lifestyle
SQL
Knowledge
Kotlin

Web Development Contribute


Web Tutorials Write an Article

Django Tutorial Improve an Article

HTML Pick Topics to Write

JavaScript Write Interview Experience


We use cookies to ensure you have the best browsing experience on our website. By using our site, you
Bootstrap
acknowledge that you have read and understood our Cookie Policy &Internships
Privacy Policy

ReactJS Got It ! Video Internship

NodeJS

12 of 13 12/7/2022, 4:43 PM
Create a Telegram Bot using Python - GeeksforGeeks https://www.geeksforgeeks.org/create-a-telegram-bot-using-python/

NodeJS

@geeksforgeeks , Some rights reserved

We use cookies to ensure you have the best browsing experience on our website. By using our site, you
acknowledge that you have read and understood our Cookie Policy & Privacy Policy

Got It !

13 of 13 12/7/2022, 4:43 PM

You might also like