Changelog

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