NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #721 most downloaded on PyPI
We have made you a wrapper you can't refuse
Last release 3 months ago
12 Jun 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
157 releases · first in 2015
Bot API 4.8 support. Note: The Dice object now has a second positional argument emoji. This is relevant, if you instantiate Dice objects manually.
Released 2020-05-02
Major Changes:
Dice object now has a second positional argument emoji. This is relevant, if you instantiate Dice objects manually. (#1917)New Features:
run_mothly for the JobQueue (#1705)Job.next_t now gives the datetime of the jobs next execution (#1685)Minor changes, CI improvements, doc fixes or bug fixes:
tzinfo argument to helpers.from_timestamp (#1621)@abstractmethod instead of raising NotImplementedError for Handler, BasePersistence and BaseFilter (#1905)Released 2020-05-02
Major Changes:
Bot API 4.8 support. Note: The Dice object now has a second positional argument emoji . This is relevant, if you instantiate Dice objects manually. ( #1917 )
Added tzinfo argument to helpers.from_timestamp . It now returns an timezone aware object. This is relevant for Message.{date,forward_date,edit_date} , Poll.close_date and ChatMember.until_date ( #1621 )
New Features:
New method run_monthly for the JobQueue ( #1705 )
Job.next_t now gives the datetime of the jobs next execution ( #1685 )
Minor changes, CI improvements, doc fixes or bug fixes:
Stabalize CI ( #1919 , #1931 )
Use ABCs @abstractmethod instead of raising NotImplementedError for Handler , BasePersistence and BaseFilter ( #1905 )
Doc fixes ( #1914 , #1902 , #1910 )
One column per quarter.
Fix serialization of reply_markup in media messages
Released 2020-04-11
Bug fixes:
reply_markup in media messages (#1889)Bot API 4.7 support. Note: In Bot.create_new_sticker_set and Bot.add_sticker_to_set, the order of the parameters had be changed, as the png_sticker pa
Released 2020-04-10
Major Changes:
Bot.create_new_sticker_set and Bot.add_sticker_to_set, the order of the parameters had be changed, as the png_sticker parameter is now optional. (#1858)Minor changes, CI improvements or bug fixes:
swtich_inline_query(_current_chat) with empty string (#1635)CallbackContext to TIMEOUT handlers of ConversationHandler (#1826)Minor changes, doc fixes or bug fixes:
Released 2020-03-30
Minor changes, doc fixes or bug fixes:
PollHandler and PollAnswerHandler (#1853)Filters docs (#1855)ConversationHandler attributes immutable (#1756)PrefixHandler attributes command and prefix editable (#1636)tzinfo for Job (#1696)Bot.link gives the t.me link of the bot
New Features:
Bot.link gives the t.me link of the bot (#1770)Major Changes:
Minor changes, CI improvements or bug fixes:
edit_message_media (#1779)edit_message_text shortcut (#1721)Pass correct parse_mode to InlineResults if bot.defaults is None
Bug Fixes
Released 2020-02-10
Bug Fixes
Pass correct parse_mode to InlineResults if bot.defaults is None ( #1763 )
Make sure PP can read files that dont have bot_data ( #1760 )
This is a quick release for #1744 which was accidently left out of v12.4.0 though mentioned in the release notes.
This is a quick release for #1744 which was accidently left out of v12.4.0 though mentioned in the release notes.
Released 2020-02-08
This is a quick release for #1744 which was accidently left out of v12.4.0 though mentioned in the release notes.
Set default values for arguments appearing repeatedly. We also have a wiki page for the new defaults.
Released 2020-02-08
New features:
CallbackContext.bot_data to access it in every callback. Also persists. (#1325)Filters.poll allows only messages containing a poll (#1673)Major changes:
Filters.text now accepts messages that start with a slash, because CommandHandler checks for MessageEntity.BOT_COMMAND since v12. This might lead to your MessageHandlers receiving more updates than before (#1680).Filters.command new checks for MessageEntity.BOT_COMMAND instead of just a leading slash. Also by Filters.command(False) you can now filters for messages containing a command anywhere in the text (#1744).Minor changes, CI improvements or bug fixes:
disptacher argument to Updater to allow passing a customized Dispatcher (#1484)Filters (#1632)encode_conversations_to_json (#1661)Dispatcher.job_queue (#1698)CallbackContext (#1684)None check in JobQueue._put() (#1707)JobQueue (#1714)Message.link creation for private groups (#1741)--with-upstream-urllib3 to setup.py to allow using non-vendored version (#1725)ConversationHandlers (#1679)file_path (#1591)Fix deprecation warning with Py3.8 by vendored urllib3 (#1618).
New features:
Filters.caption allows only messages with caption (#1631).Filters.text and Filters.caption. Especially useful in combination with ReplyKeyboardMarkup. (#1631).Major changes:
Minor changes, CI improvments or bug fixes:
ConversationHandler (#1533).MAX_PHOTOSIZE_UPLOAD constant (#1560).Message.forward() (#1574).Message.link (#1619).ConversationHandler.TIMEOUT handlers (#1653).Nested ConversationHandlers (#1512).
New features:
Minor changes, CI improvments or bug fixes:
test_commandhandler.py (#1408).Fixed regression in the vendored urllib3
Released 2019-09-18
Hot fix release
Fixed regression in the vendored urllib3 (#1517)
Bot API 4.4 support (#1464, #1510)
Major changes:
Minor changes and/or bug fixes:
Deprecation of RegexHandler and edited_messages, channel_post, etc. arguments (Filter overhaul)
Major and/or breaking changes:
#1485_)#1485_)See the wiki page at https://git.io/fxJuV for a detailed guide on how to migrate from version 11 to version 12.
** Check the CHANGES.rst file for more info **
Released 2019-08-29
Well… This felt like decades. But here we are with a new release.
Expect minor releases soon (mainly complete Bot API 4.4 support)
Major and/or breaking changes:
Context based callbacks
Persistence
PrefixHandler added (Handler overhaul)
Deprecation of RegexHandler and edited_messages, channel_post, etc. arguments (Filter overhaul)
Various ConversationHandler changes and fixes
Bot API 4.1, 4.2, 4.3 support
Python 3.4 is no longer supported
Error Handler now handles all types of exceptions ( #1485 )
Return UTC from from_timestamp() ( #1485 )
See the wiki page at https://github.com/python-telegram-bot/python-telegram-bot/wiki/Transition-guide-to-Version-12.0 for a detailed guide on how to migrate from version 11 to version 12.
Use of pass_ in handlers is deprecated.
Instead use use_context=True on Updater or Dispatcher and change callback from (bot, update, others…) to (update, context).
This also applies to error handlers Dispatcher.add_error_handler and JobQueue jobs (change (bot, job) to (context) here).
For users with custom handlers subclassing Handler, this is mostly backwards compatible, but to use the new context based callbacks you need to implement the new collect_additional_context method.
Passing bot to JobQueue.init is deprecated. Use JobQueue.set_dispatcher with a dispatcher instead.
Dispatcher makes sure to use a single CallbackContext for a entire update. This means that if an update is handled by multiple handlers (by using the group argument), you can add custom arguments to the CallbackContext in a lower group handler and use it in higher group handler. NOTE: Never use with @run_async, see docs for more info. ( #1283 )
If you have custom handlers they will need to be updated to support the changes in this release.
Update all examples to use context based callbacks.
Added PicklePersistence and DictPersistence for adding persistence to your bots.
BasePersistence can be subclassed for all your persistence needs.
Add a new example that shows a persistent ConversationHandler bot
CommandHandler now only triggers on actual commands as defined by telegram servers (everything that the clients mark as a tabable link).
PrefixHandler can be used if you need to trigger on prefixes (like all messages starting with a “/” (old CommandHandler behaviour) or even custom prefixes like “#” or “!”).
RegexHandler is deprecated and should be replaced with a MessageHandler with a regex filter.
Use update filters to filter update types instead of arguments (message_updates, channel_post_updates and edited_updates) on the handlers.
Completely remove allow_edited argument - it has been deprecated for a while.
data_filters now exist which allows filters that return data into the callback function. This is how the regex filter is implemented.
All this means that it no longer possible to use a list of filters in a handler. Use bitwise operators instead!
Remove run_async_timeout and timed_out_behavior arguments ( #1344 )
Replace with WAITING constant and behavior from states ( #1344 )
Only emit one warning for multiple CallbackQueryHandlers in a ConversationHandler ( #1319 )
Use warnings.warn for ConversationHandler warnings ( #1343 )
Fix unresolvable promises ( #1270 )
Handlers should be faster due to deduped logic.
Avoid compiling compiled regex in regex filter. ( #1314 )
Add missing left_chat_member to Message.MESSAGE_TYPES ( #1336 )
Make custom timeouts actually work properly ( #1330 )
Add convenience classmethods (from_button, from_row and from_column) to InlineKeyboardMarkup
Small typo fix in setup.py ( #1306 )
Add Conflict error (HTTP error code 409) ( #1154 )
Change MAX_CAPTION_LENGTH to 1024 ( #1262 )
Remove some unnecessary clauses ( #1247 , #1239 )
Allow filenames without dots in them when sending files ( #1228 )
Fix uploading files with unicode filenames ( #1214 )
Replace http.server with Tornado ( #1191 )
Allow SOCKSConnection to parse username and password from URL ( #1211 )
Fix for arguments in passport/data.py ( #1213 )
Improve message entity parsing by adding text_mention ( #1206 )
Documentation fixes ( #1348 , #1397 , #1436 )
Merged filters short-circuit ( #1350 )
Fix webhook listen with tornado ( #1383 )
Call task_done() on update queue after update processing finished ( #1428 )
Fix send_location() - latitude may be 0 ( #1437 )
Make MessageEntity objects comparable ( #1465 )
Add prefix to thread names ( #1358 )
Fix setting bot on ShippingQuery ( #1355 )
Fix _trigger_timeout() missing 1 required positional argument: ‘job’ ( #1367 )
Add missing message.text check in PrefixHandler check_update ( #1375 )
Make updates persist even on DispatcherHandlerStop ( #1463 )
Dispatcher force updating persistence object’s chat data attribute( #1462 )
Finally fix our CI builds mostly (too many commits and PRs to list)
Use multiple bots for CI to improve testing times significantly.
Allow pypy to fail in CI.
Remove the last CamelCase CheckUpdate methods from the handlers we missed earlier.
test_official is now executed in a different job
Deprecation of RegexHandler and edited_messages, channel_post, etc. arguments (Filter overhaul)
First beta release ever. It has been so long since last release that we would like to test the impact before a final release.
We do NOT recommend using this beta release in production.
Major changes:
See the wiki page at https://git.io/fxJuV for a detailed guide on how to migrate from version 11 to version 12.
pass_ in handlers is deprecated.use_context=True on Updater or Dispatcher and change callback from (bot, update, others...) to (update, context).Dispatcher.add_error_handler and JobQueue jobs (change (bot, job) to (context) here).JobQueue.__init__ is deprecated. Use JobQueue.set_dispatcher with a dispatcher instead.CallbackContext for a entire update. This means that if an update is handled by multiple handlers (by using the group argument), you can add custom arguments to the CallbackContext in a lower group handler and use it in higher group handler. NOTE: Never use with @run_async, see docs for more info. (#1283)run_async_timeout and timed_out_behavior arguments (#1344)WAITING constant and behavior from states (#1344)left_chat_member to Message.MESSAGE_TYPES (#1336)Fixes and updates for Telegram Passport:
Fixes and updates for Telegram Passport: (#1198)
Fully support Bot API version 4.0! (also some bugfixes :))
Fully support Bot API version 4.0! (also some bugfixes :))
Telegram Passport (#1174):
our telegram passport wiki page_ for more infocryptography.Inputfile rework (#1184):
Other Bot API 4.0 changes:
Non Bot API 4.0 changes:
Fixes changing previous behaviour:
Fixes changing previous behaviour:
Fixes:
Filters for Category and file types
2018-04-17 Released 10.0.2
Important fix:
New features:
Fixes:
Fix conversationhandler timeout (PR #1032)
2018-03-05 Released 10.0.1
Fixes:
Released 2018-03-05
Fixes:
Fix conversationhandler timeout (PR #1032 )
Add missing docs utils (PR #912 )
JobQueue: Remove deprecated prevent_autostart & put() (PR #1012)
2018-03-02 Released 10.0.0
Non backward compatabile changes and changed defaults
New Features
send_phone_number_to_provider and send_email_to_provider arguments to send_invoice (PR #986)Changes
Drop support for python 3.3 (PR #930)
2017-12-08 Released 9.0.0
Breaking changes (possibly)
New Features
Changes
Fix Commandhandler crashing on single character messages (PR #873)
Fix Commandhandler crashing on single character messages (PR #873)
Released 2017-10-15
Fix Commandhandler crashing on single character messages (PR #873 ).
MessgaeHandler & RegexHandler now consider channel_updates.
Released 2017-10-14
New features
Changes
Nothing published for this version
Fix TypeError exception in RegexHandler (PR #751).
Released 2017-07-28
Fix TypeError exception in RegexHandler (PR #751).
Small documentation fix (PR #749).
Removed deprecated telegram.Emoji.
Message text properties (PR #689).MessageQueue's decorator (PR #705).telegram.Emoji.Botan import from utils (Botan is still available through contrib).ReplyKeyboardHide.edit_message argument of bot.set_game_score.Add more fine-grained filters for status updates
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add support for User.language_code
User.language_codeMessage.text_html and Message.text_markdown for messages with emojiAdd support for deleteMessage API method
deleteMessage API methodJobQueue - https://github.com/python-telegram-bot/python-telegram-bot/pull/484urllib3 to address issues with timeouts
None by default, instead of empty stringstext_markdown and text_html properties to Message - https://github.com/python-telegram-bot/python-telegram-bot/pull/507CommandHandler - https://github.com/python-telegram-bot/python-telegram-bot/pull/536Filters.group and Filters.privateurllib3.contrib package - https://github.com/python-telegram-bot/python-telegram-bot/pull/583Hotfix release due to bug introduced by urllib3 version 1.21
Hotfix release due to bug introduced by urllib3 version 1.21
Implement API changes of November 21st (Bot API 2.3)
JobQueue now supports datetime.timedelta in addition to secondsJobQueue now supports running jobs only on certain daysFilters.reply filterMessage.edit_reply_markupImplement API changes of October 3rd (games update)
Message.edit_* methodsMessageHandler can now be combined using bitwise operators (& and |)Fix documentation builds on readthedocs
Nothing published for this version
Nothing published for this version
Fix proxy support with urllib3 when proxy requires auth
urllib3 when proxy requires auth- Fix proxy support for urllib3
urllib3Fix: Use timeout parameter in all API methods
timeout parameter in all API methodsUpdate wrong requirement: urllib3>=1.10
urllib3>=1.10Use urllib3.PoolManager for connection re-use
urllib3.PoolManager for connection re-userun_async decorator to re-use threadsurllib3 and certifiFix CallbackQuery.to_dict() bug (thanks to @jlmadurga)
CallbackQuery.to_dict() bug (thanks to @jlmadurga)editMessageText exception when receiving a CallbackQueryNothing published for this version
Fix MessageEntity decoding with Bot API 2.1 changes
MessageEntity decoding with Bot API 2.1 changesFix deprecation warning in Dispatcher
DispatcherImplement API changes from May 6, 2016
telegram.Bot.send_message is the same as telegram.Bot.sendMessage (#265)Add missing attribute location to InlineQuery
location to InlineQueryNothing published for this version
Almost complete recode of Dispatcher
DispatcherNothing published for this version
Nothing published for this version
Move Updater, Dispatcher and JobQueue to new telegram.ext submodule (thanks to @rahiel)
Updater, Dispatcher and JobQueue to new telegram.ext submodule (thanks to @rahiel)disable_notification parameter (thanks to @aidarbiktimirov)BufferedReaderSpecialized exceptions: Unauthorized, InvalidToken, NetworkError and TimedOut
Unauthorized, InvalidToken, NetworkError and TimedOutVery special thanks to Noam Meltzer (@tsnoam) for all of his work!
Nothing published for this version
Nothing published for this version
Fix custom path for file downloads
Updater from 1 to 0Your coding agent can read these notes before it upgrades. Set up the MCP server →