- Notifications
You must be signed in to change notification settings - Fork5.7k
Transition guide to Version 4.0
All changes can also be reviewed in ourofficial documentation!
For users coming from RC release predating 26th of April, 2016:
- Changes in "filters" syntax (upper/lower case)
- Handler groups are now identified by
int
only, and are processed in order, smallest first.
TheDispatcher
class has now a cleaner interface and more precise Message filtering. Instead of many methods with long names likeDispatcher.addTelegramMessageHandler(handler)
, we now only have two of those methods:
Register a handler.
TL;DR: Order and priority counts. 0 or 1 handlers per group will be used.
A handler must be an instance of a subclass of
telegram.ext.Handler
. All handlers are organized in groups with a numeric value. The default group is0
. All groups will be evaluated for handling an update, but only 0 or 1 handler per group will be used.The priority/order of handlers is determined as follows:
- Priority of the group (lower group number == higher priority)
- The first handler in a group which should handle an update will be used. Other handlers from the group will not be used. The order in which handlers were added to the group defines the priority.
handler (Handler)
- A Handler instancegroup (optional[int])
- The group identifier. Default is0
This method remains unchanged, only the name has been changed to snake_case.
So, theadd_handler
method is accepting an object of a subclass oftelegram.ext.Handler
. Let's see how that looks in real life:
fromtelegram.extimportMessageHandler,Filtersdeftext_callback(bot,update):print("New text message: "+update.message.text)dispatcher.add_handler(MessageHandler([Filters.text],text_callback))
As you can see here, theMessageHandler
class is one of the includedHandler
subclasses. All that was possible before is still possible, but now more organized and more explicit. Lets take a quick look at another handler class, theRegexHandler
:
fromtelegram.extimportRegexHandlerdefname_callback(bot,update,groupdict):print("The name of the user is: "+groupdict['name'])name_regex=r'My name is (?P<name>.*)'dispatcher.add_handler(RegexHandler(name_regex,text_callback,pass_groupdict=True))
Here you can see the optional argumentgroupdict
passed to the handler callback function. Note that it is necessary to specify this explicitly when creating theHandler
object.
- You can easily implement your own handlers. Just subclass
telegram.ext.handler
and take a look at the implementation of the provided handlers. - Instead of
addTelegramInlineHandler
there are nowInlineHandler
,ChosenInlineResultHandler
andCallbackQueryHandler
- There is no replacement for
addUnknownTelegramCommandHandler
. Instead, it is recommended to useRegexHandler(r'/.*', ...)
and add it as the last handler - The
UpdateQueue
class andcontext
parameters have been removed
Please read the documentation of theTelegram Bot API to learn about all the new things in version 2 of the bot API. This section covers only those changes that are not backwards compatible and not listed in theRecent Changes list.
new_chat_participant
andleft_chat_participant
of theMessage
class are nownew_chat_member
andleft_chat_member
- The following parameters on
InlineResult
andInlineQueryResult
objects are removed in favor ofInlineMessageContent
:
- message_text
- parse_mode
- disable_web_page_preview
- In
InlineQueryResultPhoto
the parametermime_type
has been removed. JPEG is now required. ReplyKeyboardMarkup
now takes a list of a list ofKeyboardButton
instead of strings.
- From v4.0.2 you can use
str
again
The classesUpdater
,Dispatcher
andJobQueue
that were previously available for import directlyfrom telegram
are now located intelegram.ext
.
Wiki ofpython-telegram-bot
© Copyright 2015-2025 – Licensed byCreative Commons
- Architecture Overview
- Builder Pattern for
Application
- Types of Handlers
- Working with Files and Media
- Exceptions, Warnings and Logging
- Concurrency in PTB
- Advanced Filters
- Storing data
- Making your bot persistent
- Adding Defaults
- Job Queue
- Arbitrary
callback_data
- Avoiding flood limits
- Webhooks
- Bot API Forward Compatiblity
- Frequently requested design patterns
- Code snippets
- Performance Optimizations
- Telegram Passport
- Bots built with PTB
- Automated Bot Tests