Changelog

22.5

2025-09-27

Breaking Changes

  • Move param ReplyParameters.checklist_task_id to last position.

    Hint

    This change addresses a breaking change accidentally introduced in version 22.4 where the introduction of the new parameter was not done in a backward compatible way.

    Existing code using keyword arguments is unaffected. Only code using positional arguments (and based on version 22.4) may need updates.

    (#4972 by @aelkheir)

New Features

  • Add convenience methods for BusinessOpeningHours:

    • get_opening_hours_for_day: returns the opening hours applicable for a specific date

    • is_open: indicates whether the business is open at the specified date and time.

    (#4861 by @Aweryc closes #4194)

Bug Fixes

  • Fix Handling of Infinite Bootstrap Retries in Application.run_* and Updater.start_* (#4973 by @Bibo-Joshi closes #4966)

Other Changes

Documentation

Internal Changes

22.4

2025-09-13

New Features

Bug Fixes

  • Adapt logic on getting the event loop in Application.run_polling/webhook to Python 3.14 (#4875 by @harshil21 closes #4874)

  • Fix ResourceWarning when passing pathlib.Path objects to methods which accept file input (#4908 by @harshil21 closes #4907)

Dependencies

Other Changes

  • Set the default connection pool size for HTTPXRequest to 256 to allow more concurrent requests by default. Drop the httpx parameter max_keepalive_connections. This way, the httpx default of 20 is used, leading to a smaller number of idle connections in large connection pools.

    Hint

    If you manually build the HTTPXRequest objects, please be aware that these changes also applies to you. Kindly double check your settings. To specify custom limits, you can set them via the parameter httpx_kwargs of HTTPXRequest. See also the httpx documentation for more details on these settings.”

    (#4882 by @Poolitzer)

  • Bump Version to v22.4 (#4939 by @Bibo-Joshi)

Documentation

Internal Changes

22.3

2025-07-20

Highlights

Breaking Changes

New Features

  • New filters based on Bot API 9.1:

    • filters.StatusUpdate.DIRECT_MESSAGE_PRICE_CHANGED for Message.direct_message_price_changed

    • filters.StatusUpdate.CHECKLIST_TASKS_ADDED for Message.checklist_tasks_added

    • filters.StatusUpdate.CHECKLIST_TASKS_DONE for Message.checklist_tasks_done

    • filters.CHECKLIST for Message.checklist

    (#4847 by @Bibo-Joshi closes #4845; #4848 by @Bibo-Joshi; #4849 by @harshil21; #4851 by @harshil21; #4857 by @aelkheir)

Other Changes

Documentation

  • Documentation Improvements. Among others, fix links to source code. (#4839 by @aelkheir closes #4838)

Internal Changes

22.2

2025-06-29

Deprecations

New Features

  • Use timedelta to represent time periods in class arguments and attributes (#4750 by @aelkheir closes #4575)

Bug Fixes

  • Fixed a bug where calling Application.remove/add_handler during update handling can cause a RuntimeError in Application.process_update.

    Hint

    Calling Application.add/remove_handler now has no influence on calls to process_update() that are

    already in progress. The same holds for Application.add/remove_error_handler and Application.process_error, respectively.

    Warning

    This behavior should currently be considered an implementation detail and not as guaranteed behavior.

    (#4802 by @Bibo-Joshi closes #4803)

  • Allow for pattern matching empty inline queries (#4817 by @locobott)

  • Correctly parse parameter allow_sending_without_reply in Message.reply_* when used in combination with do_quote=True.

    Hint

    Using dict valued input for do_quote along with passing allow_sending_without_reply is not supported and will raise an error.

    (#4818 by @Bibo-Joshi closes #4807)

Dependencies

Other Changes

  • Improve Informativeness of Network Errors Raised by BaseRequest.post/retrieve (#4822 by @Bibo-Joshi)

  • Add Python 3.14 Beta To Test Matrix. Python 3.14 is not officially supported by PTB yet! (#4825 by @harshil21)

  • Bump Version to v22.2 (#4834 by @Bibo-Joshi)

Documentation

Internal Changes

22.1

2025-05-15

Breaking Changes

  • Drop backward compatibility for user_id in send_gift by updating the order of parameters. Please adapt your code accordingly or use keyword arguments. (#4692 by @Bibo-Joshi)

Deprecations

  • This release comes with several deprecations, in line with our stability policy.

    This includes the following:

    • Deprecated telegram.constants.StarTransactionsLimit.NANOSTAR_MIN_AMOUNT and telegram.constants.StarTransactionsLimit.NANOSTAR_MAX_AMOUNT. These members will be replaced by telegram.constants.NanostarLimit.MIN_AMOUNT and telegram.constants.NanostarLimit.MAX_AMOUNT.

    • Deprecated the class telegram.constants.StarTransactions. Its only member telegram.constants.StarTransactions.NANOSTAR_VALUE will be replaced by telegram.constants.Nanostar.VALUE.

    • Bot API 9.0 deprecated BusinessConnection.can_reply in favor of BusinessConnection.rights

    • Bot API 9.0 deprecated ChatFullInfo.can_send_gift in favor of ChatFullInfo.accepted_gift_types.

    • Bot API 9.0 introduced these new required fields to existing classes:

      • TransactionPartnerUser.transaction_type

      • ChatFullInfo.accepted_gift_types

      Passing these values as positional arguments is deprecated. We encourage you to use keyword arguments instead, as the the signature will be updated in a future release.

    These deprecations are backward compatible, but we strongly recommend to update your code to use the new members.

    (#4756 by @Bibo-Joshi closes #4754; #4757 by @Bibo-Joshi; #4759 by @Bibo-Joshi; #4763 by @aelkheir; #4766 by @Bibo-Joshi; #4769 by @aelkheir; #4773 by @aelkheir; #4781 by @aelkheir; #4782 by @Bibo-Joshi)

New Features

Bug Fixes

  • Ensure execution of Bot.shutdown() even if Bot.get_me() fails in Bot.initialize() (#4733 by @Poolitzer)

  • Fix Handling of Defaults for InputPaidMedia (#4761 by @ngrogolev closes #4753)

Other Changes

Documentation

  • Documentation Improvements. Among others, add missing Returns field in User.get_profile_photos (#4730 by @Bibo-Joshi; #4740 by @aelkheir)

  • Update AUTHORS.rst, Adding @aelkheir to Active Development Team (#4747 by @Bibo-Joshi)

  • Clarify Documentation and Type Hints of InputMedia and InputPaidMedia. Note that the media parameter accepts only objects of type str and InputFile. The respective subclasses of Input(Paid)Media each accept a broader range of input type for the media parameter. (#4762 by @Bibo-Joshi)

Internal Changes

22.0

2025-03-15

Breaking Changes

  • This release removes all functionality that was deprecated in v20.x. This is in line with our stability policy.

    This includes the following changes:

    • Removed filters.CHAT (all messages have an associated chat) and filters.StatusUpdate.USER_SHARED (use filters.StatusUpdate.USERS_SHARED instead).

    • Removed Defaults.disable_web_page_preview and Defaults.quote. Use Defaults.link_preview_options and Defaults.do_quote instead.

    • Removed ApplicationBuilder.(get_updates_)proxy_url and HTTPXRequest.proxy_url. Use ApplicationBuilder.(get_updates_)proxy and HTTPXRequest.proxy instead.

    • Removed the *_timeout arguments of Application.run_polling and Updater.start_webhook. Instead, specify the values via ApplicationBuilder.get_updates_*_timeout.

    • Removed constants.InlineQueryLimit.MIN_SWITCH_PM_TEXT_LENGTH. Use constants.InlineQueryResultsButtonLimit.MAX_START_PARAMETER_LENGTH instead.

    • Removed the argument quote of Message.reply_*. Use do_quote instead.

    • Removed the superfluous EncryptedPassportElement.credentials without replacement.

    • Changed attribute value of PassportFile.file_date from int to datetime.datetime. Make sure to adjust your code accordingly.

    • Changed the attribute value of PassportElementErrors.file_hashes from list to tuple. Make sure to adjust your code accordingly.

    • Make BaseRequest.read_timeout an abstract property. If you subclass BaseRequest, you need to implement this property.

    • The default value for write_timeout now defaults to DEFAULT_NONE also for bot methods that send media. Previously, it was 20. If you subclass BaseRequest, make sure to use your desired write timeout if RequestData.multipart_data is set.

    (#4671 by @Bibo-Joshi closes #4659)

Documentation

Internal Changes

Version 21.11.1

Released 2025-03-01

This is the technical changelog for version 21.11. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Documentation Improvements

  • Fix ReadTheDocs Build (#4695)

Version 21.11

Released 2025-03-01

This is the technical changelog for version 21.11. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes and New Features

  • Full Support for Bot API 8.3 (#4676 closes #4677, #4682 by aelkheir, #4690 by aelkheir, #4691 by aelkheir)

  • Make provider_token Argument Optional (#4689)

  • Remove Deprecated InlineQueryResultArticle.hide_url (#4640 closes #4638)

  • Accept datetime.timedelta Input in Bot Method Parameters (#4651)

  • Extend Customization Support for Bot.base_(file_)url (#4632 closes #3355)

  • Support allow_paid_broadcast in AIORateLimiter (#4627 closes #4578)

  • Add BaseUpdateProcessor.current_concurrent_updates (#4626 closes #3984)

Minor Changes and Bug Fixes

  • Add Bootstrapping Logic to Application.run_* (#4673 closes #4657)

  • Fix a Bug in edit_user_star_subscription (#4681 by vavasik800)

  • Simplify Handling of Empty Data in TelegramObject.de_json and Friends (#4617 closes #4614)

Documentation Improvements

  • Documentation Improvements (#4641)

  • Overhaul Admonition Insertion in Documentation (#4462 closes #4414)

Internal Changes

  • Stabilize Linkcheck Test (#4693)

  • Bump pre-commit Hooks to Latest Versions (#4643)

  • Refactor Tests for TelegramObject Classes with Subclasses (#4654 closes #4652)

  • Use Fine Grained Permissions for GitHub Actions Workflows (#4668)

Dependency Updates

  • Bump actions/setup-python from 5.3.0 to 5.4.0 (#4665)

  • Bump dependabot/fetch-metadata from 2.2.0 to 2.3.0 (#4666)

  • Bump actions/stale from 9.0.0 to 9.1.0 (#4667)

  • Bump astral-sh/setup-uv from 5.1.0 to 5.2.2 (#4664)

  • Bump codecov/test-results-action from 1.0.1 to 1.0.2 (#4663)

Version 21.10

Released 2025-01-03

This is the technical changelog for version 21.10. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for Bot API 8.2 (#4633)

  • Bump apscheduler & Deprecate pytz Support (#4582)

New Features

  • Add Parameter pattern to JobQueue.jobs() (#4613 closes #4544)

  • Allow Input of Type Sticker for Several Methods (#4616 closes #4580)

Bug Fixes

  • Ensure Forward Compatibility of Gift and Gifts (#4634 closes #4637)

Documentation Improvements & Internal Changes

  • Use Custom Labels for dependabot PRs (#4621)

  • Remove Redundant pylint Suppressions (#4628)

  • Update Copyright to 2025 (#4631)

  • Refactor Module Structure and Tests for Star Payments Classes (#4615 closes #4593)

  • Unify datetime Imports (#4605 by cuevasrja closes #4577)

  • Add Static Security Analysis of GitHub Actions Workflows (#4606)

Dependency Updates

  • Bump astral-sh/setup-uv from 4.2.0 to 5.1.0 (#4625)

  • Bump codecov/codecov-action from 5.1.1 to 5.1.2 (#4622)

  • Bump actions/upload-artifact from 4.4.3 to 4.5.0 (#4623)

  • Bump github/codeql-action from 3.27.9 to 3.28.0 (#4624)

Version 21.9

Released 2024-12-07

This is the technical changelog for version 21.9. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for Bot API 8.1 (#4594 closes #4592)

Minor Changes

  • Use MessageLimit.DEEP_LINK_LENGTH in helpers.create_deep_linked_url (#4597 by nemacysts)

  • Allow Sequence Input for allowed_updates in Application and Updater Methods (#4589 by nemacysts)

Dependency Updates

  • Update aiolimiter requirement from ~=1.1.0 to >=1.1,<1.3 (#4595)

  • Bump pytest from 8.3.3 to 8.3.4 (#4596)

  • Bump codecov/codecov-action from 4 to 5 (#4585)

  • Bump pylint to v3.3.2 to Improve Python 3.13 Support (#4590 by nemacysts)

  • Bump srvaroa/labeler from 1.11.1 to 1.12.0 (#4586)

Version 21.8

Released 2024-12-01

This is the technical changelog for version 21.8. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

Documentation Improvements

  • Documentation Improvements (#4565 by Snehashish06, #4573)

Version 21.7

Released 2024-11-04

This is the technical changelog for version 21.7. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

Minor Changes

  • Allow Sequence in Application.add_handlers (#4531 by roast-lord closes #4530)

  • Improve Exception Handling in File.download_* (#4542)

  • Use Stable Python 3.13 Release in Test Suite (#4535)

Documentation Improvements

  • Documentation Improvements (#4536 by Ecode2, #4556)

  • Fix Linkcheck Workflow (#4545)

  • Use sphinx-build-compatibility to Keep Sphinx Compatibility (#4492)

Internal Changes

  • Improve Test Instability Caused by Message Fixtures (#4507)

  • Stabilize Some Flaky Tests (#4500)

  • Reduce Creation of HTTP Clients in Tests (#4493)

  • Update pytest-xdist Usage (#4491)

  • Fix Failing Tests by Making Them Independent (#4494)

  • Introduce Codecov’s Test Analysis (#4487)

  • Maintenance Work on Bot Tests (#4489)

  • Introduce conftest.py for File Related Tests (#4488)

  • Update Issue Templates to Use Issue Types (#4553)

  • Update Automation to Label Changes (#4552)

Dependency Updates

  • Bump srvaroa/labeler from 1.11.0 to 1.11.1 (#4549)

  • Bump sphinx from 8.0.2 to 8.1.3 (#4532)

  • Bump sphinxcontrib-mermaid from 0.9.2 to 1.0.0 (#4529)

  • Bump srvaroa/labeler from 1.10.1 to 1.11.0 (#4509)

  • Bump Bibo-Joshi/pyright-type-completeness from 1.0.0 to 1.0.1 (#4510)

Version 21.6

Released 2024-09-19

This is the technical changelog for version 21.6. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

New Features

Minor Changes

  • Improve Type Completeness (#4466)

Internal Changes

  • Update Python 3.13 Test Suite to RC2 (#4471)

  • Enforce the offline_bot Fixture in Test*WithoutRequest (#4465)

  • Make Tests for telegram.ext Independent of Networking (#4454)

  • Rename Testing Base Classes (#4453)

Dependency Updates

  • Bump pytest from 8.3.2 to 8.3.3 (#4475)

Version 21.5

Released 2024-09-01

This is the technical changelog for version 21.5. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for Bot API 7.9 (#4429)

  • Full Support for Bot API 7.8 (#4408)

New Features

  • Add MessageEntity.shift_entities and MessageEntity.concatenate (#4376 closes #4372)

  • Add Parameter game_pattern to CallbackQueryHandler (#4353 by jainamoswal closes #4269)

  • Add Parameter read_file_handle to InputFile (#4388 closes #4339)

Documentation Improvements

Minor and Internal Changes

  • Remove Surplus Logging from Updater Network Loop (#4432 by MartinHjelmare)

  • Add Internal Constants for Encodings (#4378 by elpekenin)

  • Improve PyPI Automation (#4375 closes #4373)

  • Update Test Suite to New Test Channel Setup (#4435)

  • Improve Fixture Usage in test_message.py (#4431 by Palaptin)

  • Update Python 3.13 Test Suite to RC1 (#4415)

  • Bump ruff and Add New Rules (#4416)

Dependency Updates

  • Update cachetools requirement from <5.5.0,>=5.3.3 to >=5.3.3,<5.6.0 (#4437)

  • Bump sphinx from 7.4.7 to 8.0.2 and furo from 2024.7.18 to 2024.8.6 (#4412)

  • Bump test-summary/action from 2.3 to 2.4 (#4410)

  • Bump pytest from 8.2.2 to 8.3.2 (#4403)

  • Bump dependabot/fetch-metadata from 2.1.0 to 2.2.0 (#4411)

  • Update cachetools requirement from ~=5.3.3 to >=5.3.3,<5.5.0 (#4390)

  • Bump sphinx from 7.3.7 to 7.4.7 (#4395)

  • Bump furo from 2024.5.6 to 2024.7.18 (#4392)

Version 21.4

Released 2024-07-12

This is the technical changelog for version 21.4. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

New Features

  • Add Support for Python 3.13 Beta (#4253)

  • Add filters.PAID_MEDIA (#4357)

  • Log Received Data on Deserialization Errors (#4304)

  • Add MessageEntity.adjust_message_entities_to_utf_16 Utility Function (#4323 by Antares0982 closes #4319)

  • Make Argument bot of TelegramObject.de_json Optional (#4320)

Documentation Improvements

  • Documentation Improvements (#4303 closes #4301)

  • Restructure Readme (#4362)

  • Fix Link-Check Workflow (#4332)

Internal Changes

  • Automate PyPI Releases (#4364 closes #4318)

  • Add mise-en-place to .gitignore (#4300)

  • Use a Composite Action for Testing Type Completeness (#4367)

  • Stabilize Some Concurrency Usages in Test Suite (#4360)

  • Add a Test Case for MenuButton (#4363)

  • Extend SuccessfulPayment Test (#4349)

  • Small Fixes for test_stars.py (#4347)

  • Use Python 3.13 Beta 3 in Test Suite (#4336)

Dependency Updates

  • Bump ruff and Add New Rules (#4329)

  • Bump pre-commit Hooks to Latest Versions (#4337)

  • Add Lower Bound for flaky Dependency (#4322 by Palaptin)

  • Bump pytest from 8.2.1 to 8.2.2 (#4294)

Version 21.3

Released 2024-06-07

This is the technical changelog for version 21.3. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

New Features

Documentation Improvements

Internal Changes

  • Add setuptools to requirements-dev.txt (#4282)

  • Update Settings for pre-commit.ci (#4265)

Dependency Updates

  • Bump pytest from 8.2.0 to 8.2.1 (#4272)

Version 21.2

Released 2024-05-20

This is the technical changelog for version 21.2. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

New Features

  • Add Version to PTBDeprecationWarning (#4262 closes #4261)

  • Handle Exceptions in building CallbackContext (#4222)

Bug Fixes

  • Call Application.post_stop Only if Application.stop was called (#4211 closes #4210)

  • Handle SystemExit raised in Handlers (#4157 closes #4155 and #4156)

  • Make Birthdate.to_date Return a datetime.date Object (#4251)

Documentation Improvements

  • Documentation Improvements (#4217)

Internal Changes

  • Add New Rules to ruff Config (#4250)

  • Adapt Test Suite to Changes in Error Messages (#4238)

Dependency Updates

  • Bump furo from 2024.4.27 to 2024.5.6 (#4252)

  • pre-commit autoupdate (#4239)

  • Bump pytest from 8.1.1 to 8.2.0 (#4231)

  • Bump dependabot/fetch-metadata from 2.0.0 to 2.1.0 (#4228)

  • Bump pytest-asyncio from 0.21.1 to 0.21.2 (#4232)

  • Bump pytest-xdist from 3.6.0 to 3.6.1 (#4233)

  • Bump furo from 2024.1.29 to 2024.4.27 (#4230)

  • Bump srvaroa/labeler from 1.10.0 to 1.10.1 (#4227)

  • Bump pytest from 7.4.4 to 8.1.1 (#4218)

  • Bump sphinx from 7.2.6 to 7.3.7 (#4215)

  • Bump pytest-xdist from 3.5.0 to 3.6.0 (#4215)

Version 21.1.1

Released 2024-04-15

This is the technical changelog for version 21.1.1. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Bug Fixes

  • Fix Bug With Parameter message_thread_id of Message.reply_* (#4207 closes #4205)

Minor Changes

  • Remove Deprecation Warning in JobQueue.run_daily (#4206 by @Konano)

  • Fix Annotation of EncryptedCredentials.decrypted_secret (#4199 by @marinelay closes #4198)

Version 21.1

Released 2024-04-12

This is the technical changelog for version 21.1. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • API 7.2 (#4180 closes #4179 and #4181, #4181)

  • Make ChatAdministratorRights/ChatMemberAdministrator.can_*_stories Required (API 7.1) (#4192)

Minor Changes

  • Refactor Debug logging in Bot to Improve Type Hinting (#4151 closes #4010)

New Features

Documentation Improvements

Internal Changes

  • Temporarily Mark Tests with get_sticker_set as XFAIL due to API 7.2 Update (#4190)

Dependency Updates

  • pre-commit autoupdate (#4184)

  • Bump dependabot/fetch-metadata from 1.6.0 to 2.0.0 (#4185)

Version 21.0.1

Released 2024-03-06

This is the technical changelog for version 21.0.1. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Bug Fixes

  • Remove docs from Package (#4150)

Version 21.0

Released 2024-03-06

This is the technical changelog for version 21.0. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Remove Functionality Deprecated in API 7.0 (#4114 closes #4099)

  • API 7.1 (#4118)

New Features

  • Add Parameter media_write_timeout to HTTPXRequest and Method ApplicationBuilder.media_write_timeout (#4120 closes #3864)

  • Handle Properties in TelegramObject.__setstate__ (#4134 closes #4111)

Bug Fixes

  • Add Missing Slot to Updater (#4130 closes #4127)

Documentation Improvements

Internal Changes

  • Apply pre-commit Checks More Widely (#4135)

  • Refactor and Overhaul test_official (#4087 closes #3874)

  • Run Unit Tests in PRs on Requirements Changes (#4144)

  • Make Updater.stop Independent of CancelledError (#4126)

Dependency Updates

  • Relax Upper Bound for httpx Dependency (#4148)

  • Bump test-summary/action from 2.2 to 2.3 (#4142)

  • Update cachetools requirement from ~=5.3.2 to ~=5.3.3 (#4141)

  • Update httpx requirement from ~=0.26.0 to ~=0.27.0 (#4131)

Version 20.8

Released 2024-02-08

This is the technical changelog for version 20.8. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

Minor Changes

  • Fix Type Hint for filters Parameter of MessageHandler (#4039 by @Palaptin)

  • Deprecate filters.CHAT (#4083 closes #4062)

  • Improve Error Handling in Built-In Webhook Handler (#3987 closes #3979)

New Features

  • Add Parameter pattern to PreCheckoutQueryHandler and filters.SuccessfulPayment (#4005 by @aelkheir closes #3752)

  • Add Missing Conversions of type to Corresponding Enum from telegram.constants (#4067)

  • Add Support for Unix Sockets to Updater.start_webhook (#3986 closes #3978)

  • Add Bot.do_api_request (#4084 closes #4053)

  • Add AsyncContextManager as Parent Class to BaseUpdateProcessor (#4001)

Documentation Improvements

Internal Changes

  • Drop Usage of DeepSource (#4100)

  • Improve Type Completeness & Corresponding Workflow (#4035)

  • Bump ruff and Remove sort-all (#4075)

  • Move Handler Files to _handlers Subdirectory (#4064 by @lucasmolinari closes #4060)

  • Introduce sort-all Hook for pre-commit (#4052)

  • Use Recommended pre-commit Mirror for black (#4051)

  • Remove Unused DEFAULT_20 (#3997)

  • Migrate From setup.cfg to pyproject.toml Where Possible (#4088)

Dependency Updates

  • Bump black and ruff (#4089)

  • Bump srvaroa/labeler from 1.8.0 to 1.10.0 (#4048)

  • Update tornado requirement from ~=6.3.3 to ~=6.4 (#3992)

  • Bump actions/stale from 8 to 9 (#4046)

  • Bump actions/setup-python from 4 to 5 (#4047)

  • pre-commit autoupdate (#4101)

  • Bump actions/upload-artifact from 3 to 4 (#4045)

  • pre-commit autoupdate (#3996)

  • Bump furo from 2023.9.10 to 2024.1.29 (#4094)

  • pre-commit autoupdate (#4043)

  • Bump codecov/codecov-action from 3 to 4 (#4091)

  • Bump EndBug/add-and-commit from 9.1.3 to 9.1.4 (#4090)

  • Update httpx requirement from ~=0.25.2 to ~=0.26.0 (#4024)

  • Bump pytest from 7.4.3 to 7.4.4 (#4056)

  • Bump srvaroa/labeler from 1.7.0 to 1.8.0 (#3993)

  • Bump test-summary/action from 2.1 to 2.2 (#4044)

  • Bump dessant/lock-threads from 4.0.1 to 5.0.1 (#3994)

Version 20.7

Released 2023-11-27

This is the technical changelog for version 20.7. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

New Features

  • Add JobQueue.scheduler_configuration and Corresponding Warnings (#3913 closes #3837)

  • Add Parameter socket_options to HTTPXRequest (#3935 closes #2965)

  • Add ApplicationBuilder.(get_updates_)socket_options (#3943)

  • Improve write_timeout Handling for Media Methods (#3952)

  • Add filters.Mention (#3941 closes #3799)

  • Rename proxy_url to proxy and Allow httpx.{Proxy, URL} as Input (#3939 closes #3844)

Bug Fixes & Changes

  • Adjust read_timeout Behavior for Bot.get_updates (#3963 closes #3893)

  • Improve BaseHandler.__repr__ for Callbacks without __qualname__ (#3934)

  • Fix Persistency Issue with Ended Non-Blocking Conversations (#3962)

  • Improve Type Hinting for Arguments with Default Values in Bot (#3942)

Documentation Improvements

  • Add Documentation for __aenter__ and __aexit__ Methods (#3907 closes #3886)

  • Improve Insertion of Kwargs into Bot Methods (#3965)

Internal Changes

  • Adjust Tests to New Error Messages (#3970)

Dependency Updates

  • Bump pytest-xdist from 3.3.1 to 3.4.0 (#3975)

  • pre-commit autoupdate (#3967)

  • Update httpx requirement from ~=0.25.1 to ~=0.25.2 (#3983)

  • Bump pytest-xdist from 3.4.0 to 3.5.0 (#3982)

  • Update httpx requirement from ~=0.25.0 to ~=0.25.1 (#3961)

  • Bump srvaroa/labeler from 1.6.1 to 1.7.0 (#3958)

  • Update cachetools requirement from ~=5.3.1 to ~=5.3.2 (#3954)

  • Bump pytest from 7.4.2 to 7.4.3 (#3953)

Version 20.6

Released 2023-10-03

This is the technical changelog for version 20.6. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Drop Backward Compatibility Layer Introduced in #3853 (API 6.8) (#3873)

  • Full Support for Bot API 6.9 (#3898)

New Features

  • Add Rich Equality Comparison to WriteAccessAllowed (#3911 closes #3909)

  • Add __repr__ Methods Added in #3826 closes #3770 to Sphinx Documentation (#3901 closes #3889)

  • Add String Representation for Selected Classes (#3826 closes #3770)

Minor Changes

  • Add Support Python 3.12 (#3915)

  • Documentation Improvements (#3910)

Internal Changes

  • Verify Type Hints for Bot Method & Telegram Class Parameters (#3868)

  • Move Bot API Tests to Separate Workflow File (#3912)

  • Fix Failing file_size Tests (#3906)

  • Set Threshold for DeepSource’s PY-R1000 to High (#3888)

  • One-Time Code Formatting Improvement via --preview Flag of black (#3882)

  • Move Dunder Methods to the Top of Class Bodies (#3883)

  • Remove Superfluous Defaults.__ne__ (#3884)

Dependency Updates

  • pre-commit autoupdate (#3876)

  • Update pre-commit Dependencies (#3916)

  • Bump actions/checkout from 3 to 4 (#3914)

  • Update httpx requirement from ~=0.24.1 to ~=0.25.0 (#3891)

  • Bump furo from 2023.8.19 to 2023.9.10 (#3890)

  • Bump sphinx from 7.2.5 to 7.2.6 (#3892)

  • Update tornado requirement from ~=6.2 to ~=6.3.3 (#3675)

  • Bump pytest from 7.4.0 to 7.4.2 (#3881)

Version 20.5

Released 2023-09-03

This is the technical changelog for version 20.5. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • API 6.8 (#3853)

  • Remove Functionality Deprecated Since Bot API 6.5, 6.6 or 6.7 (#3858)

New Features

  • Extend Allowed Values for HTTP Version (#3823 closes #3821)

  • Add has_args Parameter to CommandHandler (#3854 by @thatguylah closes #3798)

  • Add Application.stop_running() and Improve Marking Updates as Read on Updater.stop() (#3804)

Minor Changes

  • Type Hinting Fixes for WebhookInfo (#3871)

  • Test and Document Exception.__cause__ on NetworkError (#3792 closes #3778)

  • Add Support for Python 3.12 RC (#3847)

Documentation Improvements

Dependency Updates

  • pre-commit autoupdate (#3824)

  • Bump srvaroa/labeler from 1.6.0 to 1.6.1 (#3870)

  • Bump sphinx from 7.0.1 to 7.1.1 (#3818)

  • Bump sphinx from 7.2.3 to 7.2.5 (#3869)

  • Bump furo from 2023.5.20 to 2023.7.26 (#3817)

  • Update apscheduler requirement from ~=3.10.3 to ~=3.10.4 (#3862)

  • Bump sphinx from 7.2.2 to 7.2.3 (#3861)

  • Bump pytest-asyncio from 0.21.0 to 0.21.1 (#3801)

  • Bump sphinx-paramlinks from 0.5.4 to 0.6.0 (#3840)

  • Update apscheduler requirement from ~=3.10.1 to ~=3.10.3 (#3851)

  • Bump furo from 2023.7.26 to 2023.8.19 (#3850)

  • Bump sphinx from 7.1.2 to 7.2.2 (#3852)

  • Bump sphinx from 7.1.1 to 7.1.2 (#3827)

Version 20.4

Released 2023-07-09

This is the technical changelog for version 20.4. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

New Features

  • Make Integration of APScheduler into JobQueue More Explicit (#3695)

  • Introduce BaseUpdateProcessor for Customized Concurrent Handling of Updates (#3654 closes #3509)

Minor Changes

Bug Fixes

  • Fix Wrong Warning Text in KeyboardButton.__eq__ (#3768)

Documentation Improvements

  • Explicitly set allowed_updates in Examples (#3741 by @Trifase closes #3726)

  • Bump furo and sphinx (#3719)

  • Documentation Improvements (#3698, #3708 by @revolter, #3767)

  • Add Quotes for Installation Instructions With Optional Dependencies (#3780)

  • Exclude Type Hints from Stability Policy (#3712)

  • Set httpx Logging Level to Warning in Examples (#3746 closes #3743)

Internal Changes

  • Drop a Legacy pre-commit.ci Configuration (#3697)

  • Add Python 3.12 Beta to the Test Matrix (#3751)

  • Use Temporary Files for Testing File Downloads (#3777)

  • Auto-Update Changed Version in Other Files After Dependabot PRs (#3716)

  • Add More ruff Rules (#3763)

  • Rename _handler.py to _basehandler.py (#3761)

  • Automatically Label pre-commit-ci PRs (#3713)

  • Rework pytest Integration into GitHub Actions (#3776)

  • Fix Two Bugs in GitHub Actions Workflows (#3739)

Dependency Updates

  • Update cachetools requirement from ~=5.3.0 to ~=5.3.1 (#3738)

  • Update aiolimiter requirement from ~=1.0.0 to ~=1.1.0 (#3707)

  • pre-commit autoupdate (#3791)

  • Bump sphinxcontrib-mermaid from 0.8.1 to 0.9.2 (#3737)

  • Bump pytest-xdist from 3.2.1 to 3.3.0 (#3705)

  • Bump srvaroa/labeler from 1.5.0 to 1.6.0 (#3786)

  • Bump dependabot/fetch-metadata from 1.5.1 to 1.6.0 (#3787)

  • Bump dessant/lock-threads from 4.0.0 to 4.0.1 (#3785)

  • Bump pytest from 7.3.2 to 7.4.0 (#3774)

  • Update httpx requirement from ~=0.24.0 to ~=0.24.1 (#3715)

  • Bump pytest-xdist from 3.3.0 to 3.3.1 (#3714)

  • Bump pytest from 7.3.1 to 7.3.2 (#3758)

  • pre-commit autoupdate (#3747)

Version 20.3

Released 2023-05-07

This is the technical changelog for version 20.3. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full support for API 6.7 (#3673)

  • Add a Stability Policy (#3622)

New Features

  • Add Application.mark_data_for_update_persistence (#3607)

  • Make Message.link Point to Thread View Where Possible (#3640)

  • Localize Received datetime Objects According to Defaults.tzinfo (#3632)

Minor Changes, Documentation Improvements and CI

  • Empower ruff (#3594)

  • Drop Usage of sys.maxunicode (#3630)

  • Add String Representation for RequestParameter (#3634)

  • Stabilize CI by Rerunning Failed Tests (#3631)

  • Give Loggers Better Names (#3623)

  • Add Logging for Invalid JSON Data in BasePersistence.parse_json_payload (#3668)

  • Improve Warning Categories & Stacklevels (#3674)

  • Stabilize test_delete_sticker_set (#3685)

  • Shield Update Fetcher Task in Application.start (#3657)

  • Recover 100% Type Completeness (#3676)

  • Documentation Improvements (#3628, #3636, #3694)

Dependencies

  • Bump actions/stale from 7 to 8 (#3644)

  • Bump furo from 2023.3.23 to 2023.3.27 (#3643)

  • pre-commit autoupdate (#3646, #3688)

  • Remove Deprecated codecov Package from CI (#3664)

  • Bump sphinx-copybutton from 0.5.1 to 0.5.2 (#3662)

  • Update httpx requirement from ~=0.23.3 to ~=0.24.0 (#3660)

  • Bump pytest from 7.2.2 to 7.3.1 (#3661)

Version 20.2

Released 2023-03-25

This is the technical changelog for version 20.2. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for API 6.6 (#3584)

  • Revert to HTTP/1.1 as Default and make HTTP/2 an Optional Dependency (#3576)

Minor Changes, Documentation Improvements and CI

  • Documentation Improvements (#3565, #3600)

  • Handle Symbolic Links in was_called_by (#3552)

  • Tidy Up Tests Directory (#3553)

  • Enhance Application.create_task (#3543)

  • Make Type Completeness Workflow Usable for PRs from Forks (#3551)

  • Refactor and Overhaul the Test Suite (#3426)

Dependencies

  • Bump pytest-asyncio from 0.20.3 to 0.21.0 (#3624)

  • Bump furo from 2022.12.7 to 2023.3.23 (#3625)

  • Bump pytest-xdist from 3.2.0 to 3.2.1 (#3606)

  • pre-commit autoupdate (#3577)

  • Update apscheduler requirement from ~=3.10.0 to ~=3.10.1 (#3572)

  • Bump pytest from 7.2.1 to 7.2.2 (#3573)

  • Bump pytest-xdist from 3.1.0 to 3.2.0 (#3550)

  • Bump sphinxcontrib-mermaid from 0.7.1 to 0.8 (#3549)

Version 20.1

Released 2023-02-09

This is the technical changelog for version 20.1. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for Bot API 6.5 (#3530)

New Features

  • Add Application(Builder).post_stop (#3466)

  • Add Chat.effective_name Convenience Property (#3485)

  • Allow to Adjust HTTP Version and Use HTTP/2 by Default (#3506)

Documentation Improvements

Minor Changes, Documentation Improvements and CI

  • Update Copyright to 2023 (#3459)

  • Stabilize Tests on Closing and Hiding the General Forum Topic (#3460)

  • Fix Dependency Warning Typo (#3474)

  • Cache Dependencies on GitHub Actions (#3469)

  • Store Documentation Builts as GitHub Actions Artifacts (#3468)

  • Add ruff to pre-commit Hooks (#3488)

  • Improve Warning for days Parameter of JobQueue.run_daily (#3503)

  • Improve Error Message for NetworkError (#3505)

  • Lock Inactive Threads Only Once Each Day (#3510)

  • Bump pytest from 7.2.0 to 7.2.1 (#3513)

  • Check for 3D Arrays in check_keyboard_type (#3514)

  • Explicit Type Annotations (#3508)

  • Increase Verbosity of Type Completeness CI Job (#3531)

  • Fix CI on Python 3.11 + Windows (#3547)

Dependencies

  • Bump actions/stale from 6 to 7 (#3461)

  • Bump dessant/lock-threads from 3.0.0 to 4.0.0 (#3462)

  • pre-commit autoupdate (#3470)

  • Update httpx requirement from ~=0.23.1 to ~=0.23.3 (#3489)

  • Update cachetools requirement from ~=5.2.0 to ~=5.2.1 (#3502)

  • Improve Config for ruff and Bump to v0.0.222 (#3507)

  • Update cachetools requirement from ~=5.2.1 to ~=5.3.0 (#3520)

  • Bump isort to 5.12.0 (#3525)

  • Update apscheduler requirement from ~=3.9.1 to ~=3.10.0 (#3532)

  • pre-commit autoupdate (#3537)

  • Update cryptography requirement to >=39.0.1 to address Vulnerability (#3539)

Version 20.0

Released 2023-01-01

This is the technical changelog for version 20.0. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support For Bot API 6.4 (#3449)

Minor Changes, Documentation Improvements and CI

  • Documentation Improvements (#3428, #3423, #3429, #3441, #3404, #3443)

  • Allow Sequence Input for Bot Methods (#3412)

  • Update Link-Check CI and Replace a Dead Link (#3456)

  • Freeze Classes Without Arguments (#3453)

  • Add New Constants (#3444)

  • Override Bot.__deepcopy__ to Raise TypeError (#3446)

  • Add Log Decorator to Bot.get_webhook_info (#3442)

  • Add Documentation On Verifying Releases (#3436)

  • Drop Undocumented Job.__lt__ (#3432)

Dependencies

  • Downgrade sphinx to 5.3.0 to Fix Search (#3457)

  • Bump sphinx from 5.3.0 to 6.0.0 (#3450)

Version 20.0b0

Released 2022-12-15

This is the technical changelog for version 20.0b0. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Make TelegramObject Immutable (#3249)

Minor Changes, Documentation Improvements and CI

  • Reduce Code Duplication in Testing Defaults (#3419)

  • Add Notes and Warnings About Optional Dependencies (#3393)

  • Simplify Internals of Bot Methods (#3396)

  • Reduce Code Duplication in Several Bot Methods (#3385)

  • Documentation Improvements (#3386, #3395, #3398, #3403)

Dependencies

  • Bump pytest-xdist from 3.0.2 to 3.1.0 (#3415)

  • Bump pytest-asyncio from 0.20.2 to 0.20.3 (#3417)

  • pre-commit autoupdate (#3409)

Version 20.0a6

Released 2022-11-24

This is the technical changelog for version 20.0a6. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Bug Fixes

  • Only Persist Arbitrary callback_data if ExtBot.callback_data_cache is Present (#3384)

  • Improve Backwards Compatibility of TelegramObjects Pickle Behavior (#3382)

  • Fix Naming and Keyword Arguments of File.download_* Methods (#3380)

  • Fix Return Value Annotation of Chat.create_forum_topic (#3381)

Version 20.0a5

Released 2022-11-22

This is the technical changelog for version 20.0a5. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • API 6.3 (#3346, #3343, #3342, #3360)

  • Explicit local_mode Setting (#3154)

  • Make Almost All 3rd Party Dependencies Optional (#3267)

  • Split File.download Into File.download_to_drive And File.download_to_memory (#3223)

New Features

  • Add Properties for API Settings of Bot (#3247)

  • Add chat_id and username Parameters to ChatJoinRequestHandler (#3261)

  • Introduce TelegramObject.api_kwargs (#3233)

  • Add Two Constants Related to Local Bot API Servers (#3296)

  • Add recursive Parameter to TelegramObject.to_dict() (#3276)

  • Overhaul String Representation of TelegramObject (#3234)

  • Add Methods Chat.mention_{html, markdown, markdown_v2} (#3308)

  • Add constants.MessageLimit.DEEP_LINK_LENGTH (#3315)

  • Add Shortcut Parameters caption, parse_mode and caption_entities to Bot.send_media_group (#3295)

  • Add Several New Enums To Constants (#3351)

Bug Fixes

  • Fix CallbackQueryHandler Not Handling Non-String Data Correctly With Regex Patterns (#3252)

  • Fix Defaults Handling in Bot.answer_web_app_query (#3362)

Documentation Improvements

Minor Changes, Documentation Improvements and CI

  • Improve Warning About Unknown ConversationHandler States (#3242)

  • Switch from Stale Bot to GitHub Actions (#3243)

  • Bump Python 3.11 to RC2 in Test Matrix (#3246)

  • Make Job.job a Property and Make Jobs Hashable (#3250)

  • Skip JobQueue Tests on Windows Again (#3280)

  • Read-Only CallbackDataCache (#3266)

  • Type Hinting Fix for Message.effective_attachment (#3294)

  • Run Unit Tests in Parallel (#3283)

  • Update Test Matrix to Use Stable Python 3.11 (#3313)

  • Don’t Edit Objects In-Place When Inserting ext.Defaults (#3311)

  • Add a Test for MessageAttachmentType (#3335)

  • Add Three New Test Bots (#3347)

  • Improve Unit Tests Regarding ChatMemberUpdated.difference (#3352)

  • Flaky Unit Tests: Use pytest Marker (#3354)

  • Fix DeepSource Issues (#3357)

  • Handle Lists and Tuples and Datetimes Directly in TelegramObject.to_dict (#3353)

  • Update Meta Config (#3365)

  • Merge ChatDescriptionLimit Enum Into ChatLimit (#3377)

Dependencies

  • Bump pytest from 7.1.2 to 7.1.3 (#3228)

  • pre-commit Updates (#3221)

  • Bump sphinx from 5.1.1 to 5.2.3 (#3269)

  • Bump furo from 2022.6.21 to 2022.9.29 (#3268)

  • Bump actions/stale from 5 to 6 (#3277)

  • pre-commit autoupdate (#3282)

  • Bump sphinx from 5.2.3 to 5.3.0 (#3300)

  • Bump pytest-asyncio from 0.19.0 to 0.20.1 (#3299)

  • Bump pytest from 7.1.3 to 7.2.0 (#3318)

  • Bump pytest-xdist from 2.5.0 to 3.0.2 (#3317)

  • pre-commit autoupdate (#3325)

  • Bump pytest-asyncio from 0.20.1 to 0.20.2 (#3359)

  • Update httpx requirement from ~=0.23.0 to ~=0.23.1 (#3373)

Version 20.0a4

Released 2022-08-27

This is the technical changelog for version 20.0a4. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Hot Fixes

  • Fix a Bug in setup.py Regarding Optional Dependencies (#3209)

Version 20.0a3

Released 2022-08-27

This is the technical changelog for version 20.0a3. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for API 6.2 (#3195)

New Features

  • New Rate Limiting Mechanism (#3148)

  • Make chat/user_data Available in Error Handler for Errors in Jobs (#3152)

  • Add Application.post_shutdown (#3126)

Bug Fixes

  • Fix helpers.mention_markdown for Markdown V1 and Improve Related Unit Tests (#3155)

  • Add api_kwargs Parameter to Bot.log_out and Improve Related Unit Tests (#3147)

  • Make Bot.delete_my_commands a Coroutine Function (#3136)

  • Fix ConversationHandler.check_update not respecting per_user (#3128)

Minor Changes, Documentation Improvements and CI

  • Add Python 3.11 to Test Suite & Adapt Enum Behaviour (#3168)

  • Drop Manual Token Validation (#3167)

  • Simplify Unit Tests for Bot.send_chat_action (#3151)

  • Drop pre-commit Dependencies from requirements-dev.txt (#3120)

  • Change Default Values for concurrent_updates and connection_pool_size (#3127)

  • Documentation Improvements (#3139, #3153, #3135)

  • Type Hinting Fixes (#3202)

Dependencies

  • Bump sphinx from 5.0.2 to 5.1.1 (#3177)

  • Update pre-commit Dependencies (#3085)

  • Bump pytest-asyncio from 0.18.3 to 0.19.0 (#3158)

  • Update tornado requirement from ~=6.1 to ~=6.2 (#3149)

  • Bump black from 22.3.0 to 22.6.0 (#3132)

  • Bump actions/setup-python from 3 to 4 (#3131)

Version 20.0a2

Released 2022-06-27

This is the technical changelog for version 20.0a2. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes

  • Full Support for API 6.1 (#3112)

New Features

  • Add Additional Shortcut Methods to Chat (#3115)

  • Mermaid-based Example State Diagrams (#3090)

Minor Changes, Documentation Improvements and CI

  • Documentation Improvements (#3103, #3121, #3098)

  • Stabilize CI (#3119)

  • Bump pyupgrade from 2.32.1 to 2.34.0 (#3096)

  • Bump furo from 2022.6.4 to 2022.6.4.1 (#3095)

  • Bump mypy from 0.960 to 0.961 (#3093)

Version 20.0a1

Released 2022-06-09

This is the technical changelog for version 20.0a1. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes:

  • Drop Support for ujson and instead BaseRequest.parse_json_payload (#3037, #3072)

  • Drop InputFile.is_image (#3053)

  • Drop Explicit Type conversions in __init__ s (#3056)

  • Handle List-Valued Attributes More Consistently (#3057)

  • Split {Command, Prefix}Handler And Make Attributes Immutable (#3045)

  • Align Behavior Of JobQueue.run_daily With cron (#3046)

  • Make PTB Specific Keyword-Only Arguments for PTB Specific in Bot methods (#3035)

  • Adjust Equality Comparisons to Fit Bot API 6.0 (#3033)

  • Add Tuple Based Version Info (#3030)

  • Improve Type Annotations for CallbackContext and Move Default Type Alias to ContextTypes.DEFAULT_TYPE (#3017, #3023)

  • Rename Job.context to Job.data (#3028)

  • Rename Handler to BaseHandler (#3019)

New Features:

  • Add Application.post_init (#3078)

  • Add Arguments chat/user_id to CallbackContext And Example On Custom Webhook Setups (#3059)

  • Add Convenience Property Message.id (#3077)

  • Add Example for WebApp (#3052)

  • Rename telegram.bot_api_version to telegram.__bot_api_version__ (#3030)

Bug Fixes:

  • Fix Non-Blocking Entry Point in ConversationHandler (#3068)

  • Escape Backslashes in escape_markdown (#3055)

Dependencies:

  • Update httpx requirement from ~=0.22.0 to ~=0.23.0 (#3069)

  • Update cachetools requirement from ~=5.0.0 to ~=5.2.0 (#3058, #3080)

Minor Changes, Documentation Improvements and CI:

  • Move Examples To Documentation (#3089)

  • Documentation Improvements and Update Dependencies (#3010, #3007, #3012, #3067, #3081, #3082)

  • Improve Some Unit Tests (#3026)

  • Update Code Quality dependencies (#3070, #3032,:pr:2998, #2999)

  • Don’t Set Signal Handlers On Windows By Default (#3065)

  • Split {Command, Prefix}Handler And Make Attributes Immutable (#3045)

  • Apply isort and Update pre-commit.ci Configuration (#3049)

  • Adjust pre-commit Settings for isort (#3043)

  • Add Version Check to Examples (#3036)

  • Use Collection Instead of List and Tuple (#3025)

  • Remove Client-Side Parameter Validation (#3024)

  • Don’t Pass Default Values of Optional Parameters to Telegram (#2978)

  • Stabilize Application.run_* on Python 3.7 (#3009)

  • Ignore Code Style Commits in git blame (#3003)

  • Adjust Tests to Changed API Behavior (#3002)

Version 20.0a0

Released 2022-05-06

This is the technical changelog for version 20.0a0. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes:

  • Refactor Initialization of Persistence Classes (#2604)

  • Drop Non-CallbackContext API (#2617)

  • Remove __dict__ from __slots__ and drop Python 3.6 (#2619, #2636)

  • Move and Rename TelegramDecryptionError to telegram.error.PassportDecryptionError (#2621)

  • Make BasePersistence Methods Abstract (#2624)

  • Remove day_is_strict argument of JobQueue.run_monthly (#2634 by iota-008)

  • Move Defaults to telegram.ext (#2648)

  • Remove Deprecated Functionality (#2644, #2740, #2745)

  • Overhaul of Filters (#2759, #2922)

  • Switch to asyncio and Refactor PTBs Architecture (#2731)

  • Improve Job.__getattr__ (#2832)

  • Remove telegram.ReplyMarkup (#2870)

  • Persistence of Bots: Refactor Automatic Replacement and Integration with TelegramObject (#2893)

New Features:

  • Introduce Builder Pattern (#2646)

  • Add Filters.update.edited (#2705 by PhilippFr)

  • Introduce Enums for telegram.constants (#2708)

  • Accept File Paths for private_key (#2724)

  • Associate Jobs with chat/user_id (#2731)

  • Convenience Functionality for ChatInviteLinks (#2782)

  • Add Dispatcher.add_handlers (#2823)

  • Improve Error Messages in CommandHandler.__init__ (#2837)

  • Defaults.protect_content (#2840)

  • Add Dispatcher.migrate_chat_data (#2848 by DonalDuck004)

  • Add Method drop_chat/user_data to Dispatcher and Persistence (#2852)

  • Add methods ChatPermissions.{all, no}_permissions (#2948)

  • Full Support for API 6.0 (#2956)

  • Add Python 3.10 to Test Suite (#2968)

Bug Fixes & Minor Changes:

  • Improve Type Hinting for CallbackContext (#2587 by revolter)

  • Fix Signatures and Improve test_official (#2643)

  • Refine Dispatcher.dispatch_error (#2660)

  • Make InlineQuery.answer Raise ValueError (#2675)

  • Improve Signature Inspection for Bot Methods (#2686)

  • Introduce TelegramObject.set/get_bot (#2712 by zpavloudis)

  • Improve Subscription of TelegramObject (#2719 by SimonDamberg)

  • Use Enums for Dynamic Types & Rename Two Attributes in ChatMember (#2817)

  • Return Plain Dicts from BasePersistence.get_*_data (#2873)

  • Fix a Bug in ChatMemberUpdated.difference (#2947)

  • Update Dependency Policy (#2958)

Internal Restructurings & Improvements:

  • Add User Friendly Type Check For Init Of {Inline, Reply}KeyboardMarkup (#2657)

  • Warnings Overhaul (#2662)

  • Clear Up Import Policy (#2671)

  • Mark Internal Modules As Private (#2687 by kencx)

  • Handle Filepaths via the pathlib Module (#2688 by eldbud)

  • Refactor MRO of InputMedia* and Some File-Like Classes (#2717 by eldbud)

  • Update Exceptions for Immutable Attributes (#2749)

  • Refactor Warnings in ConversationHandler (#2755, #2784)

  • Use __all__ Consistently (#2805)

CI, Code Quality & Test Suite Improvements:

  • Add Custom pytest Marker to Ease Development (#2628)

  • Pass Failing Jobs to Error Handlers (#2692)

  • Update Notification Workflows (#2695)

  • Use Error Messages for pylint Instead of Codes (#2700 by Piraty)

  • Make Tests Agnostic of the CWD (#2727 by eldbud)

  • Update Code Quality Dependencies (#2748)

  • Improve Code Quality (#2783)

  • Update pre-commit Settings & Improve a Test (#2796)

  • Improve Code Quality & Test Suite (#2843)

  • Fix failing animation tests (#2865)

  • Update and Expand Tests & pre-commit Settings and Improve Code Quality (#2925)

  • Extend Code Formatting With Black (#2972)

  • Update Workflow Permissions (#2984)

  • Adapt Tests to Changed Bot.get_file Behavior (#2995)

Documentation Improvements:

  • Doc Fixes (#2597)

  • Add Code Comment Guidelines to Contribution Guide (#2612)

  • Add Cross-References to External Libraries & Other Documentation Improvements (#2693, #2691 by joesinghh, #2739 by eldbud)

  • Use Furo Theme, Make Parameters Referenceable, Add Documentation Building to CI, Improve Links to Source Code & Other Improvements (#2856, #2798, #2854, #2841)

  • Documentation Fixes & Improvements (#2822)

  • Replace git.io Links (#2872 by murugu-21)

  • Overhaul Readmes, Update RTD Startpage & Other Improvements (#2969)

Version 13.11

Released 2022-02-02

This is the technical changelog for version 13.11. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes:

  • Full Support for Bot API 5.7 (#2881)

Version 13.10

Released 2022-01-03

This is the technical changelog for version 13.10. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes:

  • Full Support for API 5.6 (#2835)

Minor Changes & Doc fixes:

  • Update Copyright to 2022 (#2836)

  • Update Documentation of BotCommand (#2820)

Version 13.9

Released 2021-12-11

This is the technical changelog for version 13.9. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes:

  • Full Support for Api 5.5 (#2809)

Minor Changes

  • Adjust Automated Locking of Inactive Issues (#2775)

Version 13.8.1

Released 2021-11-08

This is the technical changelog for version 13.8.1. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Doc fixes:

  • Add ChatJoinRequest(Handler) to Docs (#2771)

Version 13.8

Released 2021-11-08

This is the technical changelog for version 13.8. More elaborate release notes can be found in the news channel @pythontelegrambotchannel.

Major Changes:

  • Full support for API 5.4 (#2767)

Minor changes, CI improvements, Doc fixes and Type hinting:

  • Create Issue Template Forms (#2689)

  • Fix camelCase Functions in ExtBot (#2659)

  • Fix Empty Captions not Being Passed by Bot.copy_message (#2651)

  • Fix Setting Thumbs When Uploading A Single File (#2583)

  • Fix Bug in BasePersistence.insert/replace_bot for Objects with __dict__ not in __slots__ (#2603)

Version 13.7

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 and ExtBot (#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)

Version 13.6

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 to ChosenInlineResultHandler (#2517)

Major Changes:

Minor changes, CI improvements, Doc fixes and Type hinting:

  • Doc Fixes (#2495, #2510)

  • Add max_connections Parameter to Updater.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 for Bot.send_invoice (#2527)

  • Handle Classes as Input for BasePersistence.replace/insert_bot (#2523)

  • Bump Tornado Version and Remove Workaround from #2067 (#2494)

Version 13.5

Released 2021-04-30

Major Changes:

  • Full support of Bot API 5.2 (#2489).

    Note

    The start_parameter argument of Bot.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, Deprecating ChatAction.RECORD_AUDIO and ChatAction.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)

Version 13.4.1

Released 2021-03-14

Hot fix release:

  • Fixed a bug in setup.py (#2431)

Version 13.4

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)

Version 13.3

Released 2021-02-19

Major Changes:

  • Make cryptography Dependency Optional & Refactor Some Tests (#2386, #2370)

  • Deprecate MessageQueue (#2393)

Bug Fixes:

  • Refactor Defaults Integration (#2363)

  • Add Missing telegram.SecureValue to init and Docs (#2398)

Minor changes:

Version 13.2

Released 2021-02-02

Major Changes:

  • Introduce python-telegram-bot-raw (#2324)

  • Explicit Signatures for Shortcuts (#2240)

New Features:

  • Add Missing Shortcuts to Message (#2330)

  • Rich Comparison for Bot (#2320)

  • Add run_async Parameter to ConversationHandler (#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 to Message.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)

Version 13.1

Released 2020-11-29

Major Changes:

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 to v13.0 (#2149)

  • Overhaul Constants (#2137)

  • Add Python 3.9 to Test Matrix (#2132)

  • Switch Codecov to GitHub Action (#2127)

  • Specify Required pytz Version (#2121)

Version 13.0

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 in ConversationHandler (#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 for Filters.update first (#2085)

  • Fix PicklePersistence.flush() with only bot_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)

Version 12.8

Released 2020-06-22

Major Changes:

  • Remove Python 2 support (#1715)

  • Bot API 4.9 support (#1980)

  • IDs/Usernames of Filters.user and Filters.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)

Version 12.7

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)

Version 12.6.1

Released 2020-04-11

Bug fixes:

  • Fix serialization of reply_markup in media messages (#1889)

Version 12.6

Released 2020-04-10

Major Changes:

  • 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 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 to TIMEOUT handlers of ConversationHandler (#1826)

  • Tweak handling of persistence and update persistence after job calls (#1827)

  • Use checkout@v2 for GitHub actions (#1887)

Version 12.5.1

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)

Version 12.5

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)

Version 12.4.2

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)

Version 12.4.1

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.

Version 12.4.0

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, 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:

  • Add disptacher argument to Updater to allow passing a customized Dispatcher (#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 in JobQueue._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)

Version 12.3.0

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:

Version 12.2.0

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).

Version 12.1.1

Released 2019-09-18

Hot fix release

Fixed regression in the vendored urllib3 (#1517).

Version 12.1.0

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:

Version 12.0.0

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.

Context based callbacks (#1100)

  • 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.

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!

ConversationHandler

  • 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)

Bug fixes & improvements

  • 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)

Buf fixes since v12.0.0b1

  • 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)

Internal improvements

  • 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

Version 11.1.0

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

Version 11.0.0

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)

Version 10.1.0

Released 2018-05-02

Fixes changing previous behaviour:

  • Add urllib3 fix for socks5h support (#1085)

  • Fix send_sticker() timeout=20 (#1088)

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)

Version 10.0.2

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.

Version 10.0.1

Released 2018-03-05

Fixes:

  • Fix conversationhandler timeout (PR #1032)

  • Add missing docs utils (PR #912)

Version 10.0.0

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)

Version 9.0.0

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.

Version 8.1.1

Released 2017-10-15

  • Fix Commandhandler crashing on single character messages (PR #873).

Version 8.1.0

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.

Version 8.0.0

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.

Version 7.0.1

Released 2017-07-28

  • Fix TypeError exception in RegexHandler (PR #751).

  • Small documentation fix (PR #749).

Version 7.0.0

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 from utils (Botan is still available through contrib).

  • Removed deprecated ReplyKeyboardHide.

  • Removed deprecated edit_message argument of bot.set_game_score.

  • Internal restructure of files.

  • Improved documentation.

  • Improved unitests.

Pre-version 7.0

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 vendored urllib3 to ptb_urllib3

2017-05-19

Released 6.0.1

  • Add support for User.language_code

  • Fix Message.text_html and Message.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 - #484

  • Download files into file-like objects - #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 and text_html properties to Message - #507

  • Add support for Socks5 proxy - #518

  • Add support for filters in CommandHandler - #536

  • Add the ability to invert (not) filters - #552

  • Add Filters.group and Filters.private

  • Compatibility with GAE via urllib3.contrib package - #583

  • Add equality rich comparision operators to telegram objects - #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 supports datetime.timedelta in addition to seconds

  • JobQueue 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 and CallbackQuery

  • RegEx filtering for CallbackQueryHandler and InlineQueryHandler

  • New MessageHandler filters: forwarded and entity

  • Add Message.get_entity to correctly handle UTF-16 codepoints and MessageEntity 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 - #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 and certifi

2016-06-10

Released 4.2.1

  • Fix CallbackQuery.to_dict() bug (thanks to @jlmadurga)

  • Fix editMessageText exception when receiving a CallbackQuery

2016-05-28

Released 4.2

  • Implement Bot API 2.1

  • Move botan module to telegram.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 with clean=True

  • Methods now have snake_case equivalent, for example telegram.Bot.send_message is the same as telegram.Bot.sendMessage

2016-05-01

Released 4.0.3

  • Add missing attribute location to InlineQuery

2016-04-29

Released 4.0.2

  • Bugfixes

  • KeyboardReplyMarkup now accepts str 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

  • Note: v4.0 has been skipped due to a PyPI accident

2016-04-22

Released 4.0rc1

2016-03-22

Released 3.4

  • Move Updater, Dispatcher and JobQueue to new telegram.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 and TimedOut

  • 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 and Dispatcher start and stop 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 and groupdict as additional arguments for regex-based handlers

2015-12-16

Released 3.1.0

  • The chat-field in Message is now of type Chat. (API update Oct 8 2015)

  • Message now contains the optional fields supergroup_chat_created, migrate_to_chat_id, migrate_from_chat_id and channel_chat_created. (API update Nov 2015)

2015-12-08

Released 3.0.0

  • Introducing the Updater and Dispatcher 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 from future 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 and GroupChat classes (pre-release Telegram feature)

2015-09-24

Released 2.8.5

  • Handles HTTP Bad Gateway (503) errors on request

  • Fixes regression on Audio and Document for unicode fields

2015-09-20

Released 2.8.4

  • getFile and File.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 handling IOError or URLError)

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 and sendVoice 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 and clearCredentials methods

  • Giving AUTHORS the proper credits for their contribution for this project

  • Message.date and Message.forward_date are now datetime 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 instead None when message.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 initializing telegram.Bot

2015-07-20

Released 2.1

  • Fix to_dict for Document and Video

2015-07-19

Released 2.0

  • Fixes bugs

  • Improves __str__ over to_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 on chat (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