Released 2021-07-01
This is the technical changelog for version 13.7. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.
Major Changes:
- Full support for Bot API 5.3 (#2572)
Bug Fixes:
- Fix Bug in
BasePersistence.insert/replace_bot
for Objects with__dict__
in their slots (#2561) - Remove Incorrect Warning About
Defaults
andExtBot
(#2553)
Minor changes, CI improvements, Doc fixes and Type hinting:
- Type Hinting Fixes (#2552)
- Doc Fixes (#2551)
- Improve Deprecation Warning for
__slots__
(#2574) - Stabilize CI (#2575)
- Fix Coverage Configuration (#2571)
- Better Exception-Handling for
BasePersistence.replace/insert_bot
(#2564) - Remove Deprecated
pass_args
from Deeplinking Example (#2550)
Released 2021-06-06
New Features:
- Arbitrary
callback_data
(#1844) - Add
ContextTypes
&BasePersistence.refresh_user/chat/bot_data
(#2262) - Add
Filters.attachment
(#2528) - Add
pattern
Argument toChosenInlineResultHandler
(#2517)
Major Changes:
- Add
slots
(#2345)
Minor changes, CI improvements, Doc fixes and Type hinting:
- Doc Fixes (#2495, #2510)
- Add
max_connections
Parameter toUpdater.start_webhook
(#2547) - Fix for
Promise.done_callback
(#2544) - Improve Code Quality (#2536, #2454)
- Increase Test Coverage of
CallbackQueryHandler
(#2520) - Stabilize CI (#2522, #2537, #2541)
- Fix
send_phone_number_to_provider
argument forBot.send_invoice
(#2527) - Handle Classes as Input for
BasePersistence.replace/insert_bot
(#2523) - Bump Tornado Version and Remove Workaround from #2067 (#2494)
Released 2021-04-30
Major Changes:
Full support of Bot API 5.2 (#2489).
Note
The
start_parameter
argument ofBot.send_invoice
and the corresponding shortcuts is now optional, so the order of parameters had to be changed. Make sure to update your method calls accordingly.Update
ChatActions
, DeprecatingChatAction.RECORD_AUDIO
andChatAction.UPLOAD_AUDIO
(#2460)
New Features:
- Convenience Utilities & Example for Handling
ChatMemberUpdated
(#2490) Filters.forwarded_from
(#2446)
Minor changes, CI improvements, Doc fixes and Type hinting:
- Improve Timeouts in
ConversationHandler
(#2417) - Stabilize CI (#2480)
- Doc Fixes (#2437)
- Improve Type Hints of Data Filters (#2456)
- Add Two
UserWarnings
(#2464) - Improve Code Quality (#2450)
- Update Fallback Test-Bots (#2451)
- Improve Examples (#2441, #2448)
Released 2021-03-14
Hot fix release:
- Fixed a bug in
setup.py
(#2431)
Released 2021-03-14
Major Changes:
- Full support of Bot API 5.1 (#2424)
Minor changes, CI improvements, doc fixes and type hinting:
- Improve
Updater.set_webhook
(#2419) - Doc Fixes (#2404)
- Type Hinting Fixes (#2425)
- Update
pre-commit
Settings (#2415) - Fix Logging for Vendored
urllib3
(#2427) - Stabilize Tests (#2409)
Released 2021-02-19
Major Changes:
- Make
cryptography
Dependency Optional & Refactor Some Tests (#2386, #2370) - Deprecate
MessageQueue
(#2393)
Bug Fixes:
Minor changes:
- Doc Fixes (#2359)
Released 2021-02-02
Major Changes:
New Features:
- Add Missing Shortcuts to
Message
(#2330) - Rich Comparison for
Bot
(#2320) - Add
run_async
Parameter toConversationHandler
(#2292) - Add New Shortcuts to
Chat
(#2291) - Add New Constant
MAX_ANSWER_CALLBACK_QUERY_TEXT_LENGTH
(#2282) - Allow Passing Custom Filename For All Media (#2249)
- Handle Bytes as File Input (#2233)
Bug Fixes:
- Fix Escaping in Nested Entities in
Message
Properties (#2312) - Adjust Calling of
Dispatcher.update_persistence
(#2285) - Add
quote
kwarg toMessage.reply_copy
(#2232) ConversationHandler
: Docs &edited_channel_post
behavior (#2339)
Minor changes, CI improvements, doc fixes and type hinting:
- Doc Fixes (#2253, #2225)
- Reduce Usage of
typing.Any
(#2321) - Extend Deeplinking Example (#2335)
- Add pyupgrade to pre-commit Hooks (#2301)
- Add PR Template (#2299)
- Drop Nightly Tests & Update Badges (#2323)
- Update Copyright (#2289, #2287)
- Change Order of Class DocStrings (#2256)
- Add macOS to Test Matrix (#2266)
- Start Using Versioning Directives in Docs (#2252)
- Improve Annotations & Docs of Handlers (#2243)
Released 2020-11-29
Major Changes:
- Full support of Bot API 5.0 (#2181, #2186, #2190, #2189, #2183, #2184, #2188, #2185, #2192, #2196, #2193, #2223, #2199, #2187, #2147, #2205)
New Features:
- Add
Defaults.run_async
(#2210) - Improve and Expand
CallbackQuery
Shortcuts (#2172) - Add XOR Filters and make
Filters.name
a Property (#2179) - Add
Filters.document.file_extension
(#2169) - Add
Filters.caption_regex
(#2163) - Add
Filters.chat_type
(#2128) - Handle Non-Binary File Input (#2202)
Bug Fixes:
- Improve Handling of Custom Objects in
BasePersistence.insert
/replace_bot
(#2151) - Fix bugs in
replace/insert_bot
(#2218)
Minor changes, CI improvements, doc fixes and type hinting:
- Improve Type hinting (#2204, #2118, #2167, #2136)
- Doc Fixes & Extensions (#2201, #2161)
- Use F-Strings Where Possible (#2222)
- Rename kwargs to _kwargs where possible (#2182)
- Comply with PEP561 (#2168)
- Improve Code Quality (#2131)
- Switch Code Formatting to Black (#2122, #2159, #2158)
- Update Wheel Settings (#2142)
- Update
timerbot.py
tov13.0
(#2149) - Overhaul Constants (#2137)
- Add Python 3.9 to Test Matrix (#2132)
- Switch Codecov to
GitHub
Action (#2127) - Specify Required pytz Version (#2121)
Released 2020-10-07
For a detailed guide on how to migrate from v12 to v13, see this wiki page.
Major Changes:
- Deprecate old-style callbacks, i.e. set
use_context=True
by default (#2050) - Refactor Handling of Message VS Update Filters (#2032)
- Deprecate
Message.default_quote
(#1965) - Refactor persistence of Bot instances (#1994)
- Refactor
JobQueue
(#1981) - Refactor handling of kwargs in Bot methods (#1924)
- Refactor
Dispatcher.run_async
, deprecating the@run_async
decorator (#2051)
New Features:
- Type Hinting (#1920)
- Automatic Pagination for
answer_inline_query
(#2072) Defaults.tzinfo
(#2042)- Extend rich comparison of objects (#1724)
- Add
Filters.via_bot
(#2009) - Add missing shortcuts (#2043)
- Allow
DispatcherHandlerStop
inConversationHandler
(#2059) - Make Errors picklable (#2106)
Minor changes, CI improvements, doc fixes or bug fixes:
- Fix Webhook not working on Windows with Python 3.8+ (#2067)
- Fix setting thumbs with
send_media_group
(#2093) - Make
MessageHandler
filter forFilters.update
first (#2085) - Fix
PicklePersistence.flush()
with onlybot_data
(#2017) - Add test for clean argument of
Updater.start_polling/webhook
(#2002) - Doc fixes, refinements and additions (#2005, #2008, #2089, #2094, #2090)
- CI fixes (#2018, #2061)
- Refine
pollbot.py
example (#2047) - Refine Filters in examples (#2027)
- Rename
echobot
examples (#2025) - Use Lock-Bot to lock old threads (#2048, #2052, #2049, #2053)
Released 2020-06-22
Major Changes:
- Remove Python 2 support (#1715)
- Bot API 4.9 support (#1980)
- IDs/Usernames of
Filters.user
andFilters.chat
can now be updated (#1757)
Minor changes, CI improvements, doc fixes or bug fixes:
- Update contribution guide and stale bot (#1937)
- Remove
NullHandlers
(#1913) - Improve and expand examples (#1943, #1995, #1983, #1997)
- Doc fixes (#1940, #1962)
- Add
User.send_poll()
shortcut (#1968) - Ignore private attributes en
TelegramObject.to_dict()
(#1989) - Stabilize CI (#2000)
Released 2020-05-02
Major Changes:
- Bot API 4.8 support. Note: The
Dice
object now has a second positional argumentemoji
. This is relevant, if you instantiateDice
objects manually. (#1917) - Added
tzinfo
argument tohelpers.from_timestamp
. It now returns an timezone aware object. This is relevant forMessage.{date,forward_date,edit_date}
,Poll.close_date
andChatMember.until_date
(#1621)
New Features:
- New method
run_monthly
for theJobQueue
(#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 raisingNotImplementedError
forHandler
,BasePersistence
andBaseFilter
(#1905) - Doc fixes (#1914, #1902, #1910)
Released 2020-04-11
Bug fixes:
- Fix serialization of
reply_markup
in media messages (#1889)
Released 2020-04-10
Major Changes:
- Bot API 4.7 support. Note: In
Bot.create_new_sticker_set
andBot.add_sticker_to_set
, the order of the parameters had be changed, as thepng_sticker
parameter is now optional. (#1858)
Minor changes, CI improvements or bug fixes:
- Add tests for
swtich_inline_query(_current_chat)
with empty string (#1635) - Doc fixes (#1854, #1874, #1884)
- Update issue templates (#1880)
- Favor concrete types over "Iterable" (#1882)
- Pass last valid
CallbackContext
toTIMEOUT
handlers ofConversationHandler
(#1826) - Tweak handling of persistence and update persistence after job calls (#1827)
- Use checkout@v2 for GitHub actions (#1887)
Released 2020-03-30
Minor changes, doc fixes or bug fixes:
- Add missing docs for PollHandler and PollAnswerHandler (#1853)
- Fix wording in Filters docs (#1855)
- Reorder tests to make them more stable (#1835)
- Make ConversationHandler attributes immutable (#1756)
- Make PrefixHandler attributes command and prefix editable (#1636)
- Fix UTC as default tzinfo for Job (#1696)
Released 2020-03-29
New Features:
- Bot.link gives the t.me link of the bot (#1770)
Major Changes:
Minor changes, CI improvements or bug fixes:
- Remove legacy CI files (#1783, #1791)
- Update pre-commit config file (#1787)
- Remove builtin names (#1792)
- CI improvements (#1808, #1848)
- Support Python 3.8 (#1614, #1824)
- Use stale bot for auto closing stale issues (#1820, #1829, #1840)
- Doc fixes (#1778, #1818)
- Fix typo in edit_message_media (#1779)
- In examples, answer CallbackQueries and use edit_message_text shortcut (#1721)
- Revert accidental change in vendored urllib3 (#1775)
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)
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.
Released 2020-02-08
New features:
- Set default values for arguments appearing repeatedly. We also have a wiki page for the new defaults. (#1490)
- Store data in
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, becauseCommandHandler
checks forMessageEntity.BOT_COMMAND
since v12. This might lead to your MessageHandlers receiving more updates than before (#1680).Filters.command
new checks forMessageEntity.BOT_COMMAND
instead of just a leading slash. Also byFilters.command(False)
you can now filters for messages containing a command anywhere in the text (#1744).
Minor changes, CI improvements or bug fixes:
- Add
disptacher
argument toUpdater
to allow passing a customizedDispatcher
(#1484) - Add missing names for
Filters
(#1632) - Documentation fixes (#1624, #1647, #1669, #1703, #1718, #1734, #1740, #1642, #1739, #1746)
- CI improvements (#1716, #1731, #1738, #1748, #1749, #1750, #1752)
- Fix spelling issue for
encode_conversations_to_json
(#1661) - Remove double assignement of
Dispatcher.job_queue
(#1698) - Expose dispatcher as property for
CallbackContext
(#1684) - Fix
None
check inJobQueue._put()
(#1707) - Log datetimes correctly in
JobQueue
(#1714) - Fix false
Message.link
creation for private groups (#1741) - Add option
--with-upstream-urllib3
to setup.py to allow using non-vendored version (#1725) - Fix persistence for nested
ConversationHandlers
(#1679) - Improve handling of non-decodable server responses (#1623)
- Fix download for files without
file_path
(#1591) - test_webhook_invalid_posts is now considered flaky and retried on failure (#1758)
Released 2020-01-11
New features:
- Filters.caption allows only messages with caption (#1631).
- Filter for exact messages/captions with new capability of Filters.text and Filters.caption. Especially useful in combination with ReplyKeyboardMarkup. (#1631).
Major changes:
- Fix inconsistent handling of naive datetimes (#1506).
Minor changes, CI improvements or bug fixes:
- Documentation fixes (#1558, #1569, #1579, #1572, #1566, #1577, #1656).
- Add mutex protection on ConversationHandler (#1533).
- Add MAX_PHOTOSIZE_UPLOAD constant (#1560).
- Add args and kwargs to Message.forward() (#1574).
- Transfer to GitHub Actions CI (#1555, #1556, #1605, #1606, #1607, #1612, #1615, #1645).
- Fix deprecation warning with Py3.8 by vendored urllib3 (#1618).
- Simplify assignements for optional arguments (#1600)
- Allow private groups for Message.link (#1619).
- Fix wrong signature call for ConversationHandler.TIMEOUT handlers (#1653).
Released 2019-10-14
New features:
- Nested ConversationHandlers (#1512).
Minor changes, CI improvments or bug fixes:
- Fix CI failures due to non-backward compat attrs depndency (#1540).
- travis.yaml: TEST_OFFICIAL removed from allowed_failures.
- Fix typos in examples (#1537).
- Fix Bot.to_dict to use proper first_name (#1525).
- Refactor
test_commandhandler.py
(#1408). - Add Python 3.8 (RC version) to Travis testing matrix (#1543).
- test_bot.py: Add to_dict test (#1544).
- Flake config moved into setup.cfg (#1546).
Released 2019-09-18
Hot fix release
Fixed regression in the vendored urllib3 (#1517).
Released 2019-09-13
Major changes:
- Bot API 4.4 support (#1464, #1510)
- Add get_file method to Animation & ChatPhoto. Add, get_small_file & get_big_file methods to ChatPhoto (#1489)
- Tools for deep linking (#1049)
Minor changes and/or bug fixes:
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://git.io/fxJuV for a detailed guide on how to migrate from version 11 to version 12.
Context based callbacks (#1100)
- Use of
pass_
in handlers is deprecated. - Instead use
use_context=True
onUpdater
orDispatcher
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.
Persistence (#1017)
- 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
Handler overhaul (#1114)
- 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 "!").
Filter overhaul (#1221)
- 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
andtimed_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
Released 2018-09-01
Fixes and updates for Telegram Passport: (#1198)
- Fix passport decryption failing at random times
- Added support for middle names.
- Added support for translations for documents
- Add errors for translations for documents
- Added support for requesting names in the language of the user's country of residence
- Replaced the payload parameter with the new parameter nonce
- Add hash to EncryptedPassportElement
Released 2018-08-29
Fully support Bot API version 4.0! (also some bugfixes :))
Telegram Passport (#1174):
- Add full support for telegram passport.
- New types: PassportData, PassportFile, EncryptedPassportElement, EncryptedCredentials, PassportElementError, PassportElementErrorDataField, PassportElementErrorFrontSide, PassportElementErrorReverseSide, PassportElementErrorSelfie, PassportElementErrorFile and PassportElementErrorFiles.
- New bot method: set_passport_data_errors
- New filter: Filters.passport_data
- Field passport_data field on Message
- PassportData can be easily decrypted.
- PassportFiles are automatically decrypted if originating from decrypted PassportData.
- See new passportbot.py example for details on how to use, or go to our telegram passport wiki page for more info
- NOTE: Passport decryption requires new dependency cryptography.
Inputfile rework (#1184):
- Change how Inputfile is handled internally
- This allows support for specifying the thumbnails of photos and videos using the thumb= argument in the different send_ methods.
- Also allows Bot.send_media_group to actually finally send more than one media.
- Add thumb to Audio, Video and Videonote
- Add Bot.edit_message_media together with InputMediaAnimation, InputMediaAudio, and inputMediaDocument.
Other Bot API 4.0 changes:
- Add forusquare_type to Venue, InlineQueryResultVenue, InputVenueMessageContent, and Bot.send_venue. (#1170)
- Add vCard support by adding vcard field to Contact, InlineQueryResultContact, InputContactMessageContent, and Bot.send_contact. (#1166)
- Support new message entities: CASHTAG and PHONE_NUMBER. (#1179)
- Cashtag seems to be things like $USD and $GBP, but it seems telegram doesn't currently send them to bots.
- Phone number also seems to have limited support for now
- Add Bot.send_animation, add width, height, and duration to Animation, and add Filters.animation. (#1172)
Non Bot API 4.0 changes:
- Minor integer comparison fix (#1147)
- Fix Filters.regex failing on non-text message (#1158)
- Fix ProcessLookupError if process finishes before we kill it (#1126)
- Add t.me links for User, Chat and Message if available and update User.mention_* (#1092)
- Fix mention_markdown/html on py2 (#1112)
Released 2018-05-02
Fixes changing previous behaviour:
Fixes:
- Add a caption_entity filter for filtering caption entities (#1068)
- Inputfile encode filenames (#1086)
- InputFile: Fix proper naming of file when reading from subprocess.PIPE (#1079)
- Remove pytest-catchlog from requirements (#1099)
- Documentation fixes (#1061, #1078, #1081, #1096)
Released 2018-04-17
Important fix:
- Handle utf8 decoding errors (#1076)
New features:
- Added Filter.regex (#1028)
- Filters for Category and file types (#1046)
- Added video note filter (#1067)
Fixes:
- Fix in telegram.Message (#1042)
- Make chat_id a positional argument inside shortcut methods of Chat and User classes (#1050)
- Make Bot.full_name return a unicode object. (#1063)
- CommandHandler faster check (#1074)
- Correct documentation of Dispatcher.add_handler (#1071)
- Various small fixes to documentation.
Released 2018-03-05
Fixes:
Released 2018-03-02
Non backward compatabile changes and changed defaults
- JobQueue: Remove deprecated prevent_autostart & put() (PR #1012)
- Bot, Updater: Remove deprecated network_delay (PR #1012)
- Remove deprecated Message.new_chat_member (PR #1012)
- Retry bootstrap phase indefinitely (by default) on network errors (PR #1018)
New Features
- Support v3.6 API (PR #1006)
- User.full_name convinience property (PR #949)
- Add send_phone_number_to_provider and send_email_to_provider arguments to send_invoice (PR #986)
- Bot: Add shortcut methods reply_{markdown,html} (PR #827)
- Bot: Add shortcut method reply_media_group (PR #994)
- Added utils.helpers.effective_message_type (PR #826)
- Bot.get_file now allows passing a file in addition to file_id (PR #963)
- Add .get_file() to Audio, Document, PhotoSize, Sticker, Video, VideoNote and Voice (PR #963)
- Add .send_*() methods to User and Chat (PR #963)
- Get jobs by name (PR #1011)
- Add Message caption html/markdown methods (PR #1013)
- File.download_as_bytearray - new method to get a d/led file as bytearray (PR #1019)
- File.download(): Now returns a meaningful return value (PR #1019)
- Added conversation timeout in ConversationHandler (PR #895)
Changes
- Store bot in PreCheckoutQuery (PR #953)
- Updater: Issue INFO log upon received signal (PR #951)
- JobQueue: Thread safety fixes (PR #977)
- WebhookHandler: Fix exception thrown during error handling (PR #985)
- Explicitly check update.effective_chat in ConversationHandler.check_update (PR #959)
- Updater: Better handling of timeouts during get_updates (PR #1007)
- Remove unnecessary to_dict() (PR #834)
- CommandHandler - ignore strings in entities and "/" followed by whitespace (PR #1020)
- Documentation & style fixes (PR #942, PR #956, PR #962, PR #980, PR #983)
Released 2017-12-08
Breaking changes (possibly)
- Drop support for python 3.3 (PR #930)
New Features
- Support Bot API 3.5 (PR #920)
Changes
- Fix race condition in dispatcher start/stop (#887)
- Log error trace if there is no error handler registered (#694)
- Update examples with consistent string formatting (#870)
- Various changes and improvements to the docs.
Released 2017-10-15
- Fix Commandhandler crashing on single character messages (PR #873).
Released 2017-10-14
New features - Support Bot API 3.4 (PR #865).
Changes - MessageHandler & RegexHandler now consider channel_updates. - Fix command not recognized if it is directly followed by a newline (PR #869). - Removed Bot._message_wrapper (PR #822). - Unitests are now also running on AppVeyor (Windows VM). - Various unitest improvements. - Documentation fixes.
Released 2017-09-01
New features
- Fully support Bot Api 3.3 (PR #806).
- DispatcherHandlerStop (see docs).
- Regression fix for text_html & text_markdown (PR #777).
- Added effective_attachment to message (PR #766).
Non backward compatible changes
- Removed Botan support from the library (PR #776).
- Fully support Bot Api 3.3 (PR #806).
- Remove de_json() (PR #789).
Changes
- Sane defaults for tcp socket options on linux (PR #754).
- Add RESTRICTED as constant to ChatMember (PR #761).
- Add rich comparison to CallbackQuery (PR #764).
- Fix get_game_high_scores (PR #771).
- Warn on small con_pool_size during custom initalization of Updater (PR #793).
- Catch exceptions in error handlerfor errors that happen during polling (PR #810).
- For testing we switched to pytest (PR #788).
- Lots of small improvements to our tests and documentation.
Released 2017-07-28
- Fix TypeError exception in RegexHandler (PR #751).
- Small documentation fix (PR #749).
Released 2017-07-25
- Fully support Bot API 3.2.
- New filters for handling messages from specific chat/user id (PR #677).
- Add the possibility to add objects as arguments to send_* methods (PR #742).
- Fixed download of URLs with UTF-8 chars in path (PR #688).
- Fixed URL parsing for
Message
text properties (PR #689). - Fixed args dispatching in
MessageQueue
's decorator (PR #705). - Fixed regression preventing IPv6 only hosts from connnecting to Telegram servers (Issue #720).
- ConvesationHandler - check if a user exist before using it (PR #699).
- Removed deprecated
telegram.Emoji
. - Removed deprecated
Botan
import fromutils
(Botan
is still available throughcontrib
). - Removed deprecated
ReplyKeyboardHide
. - Removed deprecated
edit_message
argument ofbot.set_game_score
. - Internal restructure of files.
- Improved documentation.
- Improved unitests.
2017-06-18
Released 6.1.0
- Fully support Bot API 3.0
- Add more fine-grained filters for status updates
- Bug fixes and other improvements
2017-05-29
Released 6.0.3
- Faulty PyPI release
2017-05-29
Released 6.0.2
- Avoid confusion with user's
urllib3
by renaming vendoredurllib3
toptb_urllib3
2017-05-19
Released 6.0.1
- Add support for
User.language_code
- Fix
Message.text_html
andMessage.text_markdown
for messages with emoji
2017-05-19
Released 6.0.0
- Add support for Bot API 2.3.1
- Add support for
deleteMessage
API method - New, simpler API for
JobQueue
- python-telegram-bot#484 - Download files into file-like objects - python-telegram-bot#459
- Use vendor
urllib3
to address issues with timeouts - The default timeout for messages is now 5 seconds. For sending media, the default timeout is now 20 seconds. - String attributes that are not set are now
None
by default, instead of empty strings - Add
text_markdown
andtext_html
properties toMessage
- python-telegram-bot#507 - Add support for Socks5 proxy - python-telegram-bot#518
- Add support for filters in
CommandHandler
- python-telegram-bot#536 - Add the ability to invert (not) filters - python-telegram-bot#552
- Add
Filters.group
andFilters.private
- Compatibility with GAE via
urllib3.contrib
package - python-telegram-bot#583 - Add equality rich comparision operators to telegram objects - python-telegram-bot#604
- Several bugfixes and other improvements
- Remove some deprecated code
2017-04-17
Released 5.3.1
- Hotfix release due to bug introduced by urllib3 version 1.21
2016-12-11
Released 5.3
- Implement API changes of November 21st (Bot API 2.3)
JobQueue
now supportsdatetime.timedelta
in addition to secondsJobQueue
now supports running jobs only on certain days- New
Filters.reply
filter - Bugfix for
Message.edit_reply_markup
- Other bugfixes
2016-10-25
Released 5.2
- Implement API changes of October 3rd (games update)
- Add
Message.edit_*
methods - Filters for the
MessageHandler
can now be combined using bitwise operators (& and |
) - Add a way to save user- and chat-related data temporarily
- Other bugfixes and improvements
2016-09-24
Released 5.1
- Drop Python 2.6 support
- Deprecate
telegram.Emoji
- Use
ujson
if available - Add instance methods to
Message
,Chat
,User
,InlineQuery
andCallbackQuery
- RegEx filtering for
CallbackQueryHandler
andInlineQueryHandler
- New
MessageHandler
filters:forwarded
andentity
- Add
Message.get_entity
to correctly handle UTF-16 codepoints andMessageEntity
offsets - Fix bug in
ConversationHandler
when first handler ends the conversation - Allow multiple
Dispatcher
instances - Add
ChatMigrated
Exception - Properly split and handle arguments in
CommandHandler
2016-07-15
Released 5.0
- Rework
JobQueue
- Introduce
ConversationHandler
- Introduce
telegram.constants
- python-telegram-bot#342
2016-07-12
Released 4.3.4
- Fix proxy support with
urllib3
when proxy requires auth
2016-07-08
Released 4.3.3
- Fix proxy support with
urllib3
2016-07-04
Released 4.3.2
- Fix: Use
timeout
parameter in all API methods
2016-06-29
Released 4.3.1
- Update wrong requirement:
urllib3>=1.10
2016-06-28
Released 4.3
- Use
urllib3.PoolManager
for connection re-use - Rewrite
run_async
decorator to re-use threads - New requirements:
urllib3
andcertifi
2016-06-10
Released 4.2.1
- Fix
CallbackQuery.to_dict()
bug (thanks to @jlmadurga) - Fix
editMessageText
exception when receiving aCallbackQuery
2016-05-28
Released 4.2
- Implement Bot API 2.1
- Move
botan
module totelegram.contrib
- New exception type:
BadRequest
2016-05-22
Released 4.1.2
- Fix
MessageEntity
decoding with Bot API 2.1 changes
2016-05-16
Released 4.1.1
- Fix deprecation warning in
Dispatcher
2016-05-15
Released 4.1
- Implement API changes from May 6, 2016
- Fix bug when
start_polling
withclean=True
- Methods now have snake_case equivalent, for example
telegram.Bot.send_message
is the same astelegram.Bot.sendMessage
2016-05-01
Released 4.0.3
- Add missing attribute
location
toInlineQuery
2016-04-29
Released 4.0.2
- Bugfixes
KeyboardReplyMarkup
now acceptsstr
again
2016-04-27
Released 4.0.1
- Implement Bot API 2.0
- Almost complete recode of
Dispatcher
- Please read the Transition Guide to 4.0
- Changes from 4.0rc1
- The syntax of filters for
MessageHandler
(upper/lower cases) - Handler groups are now identified by
int
only, and ordered
- The syntax of filters for
- Note: v4.0 has been skipped due to a PyPI accident
2016-04-22
Released 4.0rc1
- Implement Bot API 2.0
- Almost complete recode of
Dispatcher
- Please read the Transistion Guide to 4.0
2016-03-22
Released 3.4
- Move
Updater
,Dispatcher
andJobQueue
to newtelegram.ext
submodule (thanks to @rahiel) - Add
disable_notification
parameter (thanks to @aidarbiktimirov) - Fix bug where commands sent by Telegram Web would not be recognized (thanks to @shelomentsevd)
- Add option to skip old updates on bot startup
- Send files from
BufferedReader
2016-02-28
Released 3.3
- Inline bots
- Send any file by URL
- Specialized exceptions:
Unauthorized
,InvalidToken
,NetworkError
andTimedOut
- Integration for botan.io (thanks to @ollmer)
- HTML Parsemode (thanks to @jlmadurga)
- Bugfixes and under-the-hood improvements
Very special thanks to Noam Meltzer (@tsnoam) for all of his work!
2016-01-09
Released 3.3b1
- Implement inline bots (beta)
2016-01-05
Released 3.2.0
- Introducing
JobQueue
(original author: @franciscod) - Streamlining all exceptions to
TelegramError
(Special thanks to @tsnoam) - Proper locking of
Updater
andDispatcher
start
andstop
methods - Small bugfixes
2015-12-29
Released 3.1.2
- Fix custom path for file downloads
- Don't stop the dispatcher thread on uncaught errors in handlers
2015-12-21
Released 3.1.1
- Fix a bug where asynchronous handlers could not have additional arguments
- Add
groups
andgroupdict
as additional arguments for regex-based handlers
2015-12-16
Released 3.1.0
- The
chat
-field inMessage
is now of typeChat
. (API update Oct 8 2015) Message
now contains the optional fieldssupergroup_chat_created
,migrate_to_chat_id
,migrate_from_chat_id
andchannel_chat_created
. (API update Nov 2015)
2015-12-08
Released 3.0.0
- Introducing the
Updater
andDispatcher
classes
2015-11-11
Released 2.9.2
- Error handling on request timeouts has been improved
2015-11-10
Released 2.9.1
- Add parameter
network_delay
to Bot.getUpdates for slow connections
2015-11-10
Released 2.9
- Emoji class now uses
bytes_to_native_str
fromfuture
3rd party lib - Make
user_from
optional to work with channels - Raise exception if Telegram times out on long-polling
Special thanks to @jh0ker for all hard work
2015-10-08
Released 2.8.7
- Type as optional for
GroupChat
class
2015-10-08
Released 2.8.6
- Adds type to
User
andGroupChat
classes (pre-release Telegram feature)
2015-09-24
Released 2.8.5
- Handles HTTP Bad Gateway (503) errors on request
- Fixes regression on
Audio
andDocument
for unicode fields
2015-09-20
Released 2.8.4
getFile
andFile.download
is now fully supported
2015-09-10
Released 2.8.3
- Moved
Bot._requestURL
to its own class (telegram.utils.request
) - Much better, such wow, Telegram Objects tests
- Add consistency for
str
properties on Telegram Objects - Better design to test if
chat_id
is invalid - Add ability to set custom filename on
Bot.sendDocument(..,filename='')
- Fix Sticker as
InputFile
- Send JSON requests over urlencoded post data
- Markdown support for
Bot.sendMessage(..., parse_mode=ParseMode.MARKDOWN)
- Refactor of
TelegramError
class (no more handlingIOError
orURLError
)
2015-09-05
Released 2.8.2
- Fix regression on Telegram ReplyMarkup
- Add certificate to
is_inputfile
method
2015-09-05
Released 2.8.1
- Fix regression on Telegram objects with thumb properties
2015-09-04
Released 2.8
- TelegramError when
chat_id
is empty for send* methods setWebhook
now supports sending self-signed certificate- Huge redesign of existing Telegram classes
- Added support for PyPy
- Added docstring for existing classes
2015-08-19
Released 2.7.1
- Fixed JSON serialization for
message
2015-08-17
Released 2.7
- Added support for
Voice
object andsendVoice
method - Due backward compatibility performer or/and title will be required for
sendAudio
- Fixed JSON serialization when forwarded message
2015-08-15
Released 2.6.1
- Fixed parsing image header issue on < Python 2.7.3
2015-08-14
Released 2.6.0
- Depreciation of
require_authentication
andclearCredentials
methods - Giving
AUTHORS
the proper credits for their contribution for this project Message.date
andMessage.forward_date
are nowdatetime
objects
2015-08-12
Released 2.5.3
telegram.Bot
now supports to be unpickled
2015-08-11
Released 2.5.2
- New changes from Telegram Bot API have been applied
telegram.Bot
now supports to be pickled- Return empty
str
insteadNone
whenmessage.text
is empty
2015-08-10
Released 2.5.1
- Moved from GPLv2 to LGPLv3
2015-08-09
Released 2.5
- Fixes logging calls in API
2015-08-08
Released 2.4
- Fixes
Emoji
class for Python 3 PEP8
improvements
2015-08-08
Released 2.3
- Fixes
ForceReply
class - Remove
logging.basicConfig
from library
2015-07-25
Released 2.2
- Allows
debug=True
when initializingtelegram.Bot
2015-07-20
Released 2.1
- Fix
to_dict
forDocument
andVideo
2015-07-19
Released 2.0
- Fixes bugs
- Improves
__str__
overto_json()
- Creates abstract class
TelegramObject
2015-07-15
Released 1.9
- Python 3 officially supported
PEP8
improvements
2015-07-12
Released 1.8
- Fixes crash when replying an unicode text message (special thanks to JRoot3D)
2015-07-11
Released 1.7
- Fixes crash when
username
is not defined onchat
(special thanks to JRoot3D)
2015-07-10
Released 1.6
- Improvements for GAE support
2015-07-10
Released 1.5
- Fixes randomly unicode issues when using
InputFile
2015-07-10
Released 1.4
requests
lib is no longer required- Google App Engine (GAE) is supported
2015-07-10
Released 1.3
- Added support to
setWebhook
(special thanks to macrojames)
2015-07-09
Released 1.2
CustomKeyboard
classes now available- Emojis available
PEP8
improvements
2015-07-08
Released 1.1
- PyPi package now available
2015-07-08
Released 1.0
- Initial checkin of python-telegram-bot