==============
*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 <https://t.me/pythontelegrambotchannel>`_.
Major Changes
-------------
- API 6.3 (:pr:`3346`, :pr:`3343`, :pr:`3342`, :pr:`3360`)
- Explicit ``local_mode`` Setting (:pr:`3154`)
- Make Almost All 3rd Party Dependencies Optional (:pr:`3267`)
- Split ``File.download`` Into ``File.download_to_drive`` And ``File.download_to_memory`` (:pr:`3223`)
New Features
------------
- Add Properties for API Settings of ``Bot`` (:pr:`3247`)
- Add ``chat_id`` and ``username`` Parameters to ``ChatJoinRequestHandler`` (:pr:`3261`)
- Introduce ``TelegramObject.api_kwargs`` (:pr:`3233`)
- Add Two Constants Related to Local Bot API Servers (:pr:`3296`)
- Add ``recursive`` Parameter to ``TelegramObject.to_dict()`` (:pr:`3276`)
- Overhaul String Representation of ``TelegramObject`` (:pr:`3234`)
- Add Methods ``Chat.mention_{html, markdown, markdown_v2}`` (:pr:`3308`)
- Add ``constants.MessageLimit.DEEP_LINK_LENGTH`` (:pr:`3315`)
- Add Shortcut Parameters ``caption``, ``parse_mode`` and ``caption_entities`` to ``Bot.send_media_group`` (:pr:`3295`)
- Add Several New Enums To Constants (:pr:`3351`)
Bug Fixes
---------
- Fix ``CallbackQueryHandler`` Not Handling Non-String Data Correctly With Regex Patterns (:pr:`3252`)
- Fix Defaults Handling in ``Bot.answer_web_app_query`` (:pr:`3362`)
Documentation Improvements
--------------------------
- Update PR Template (:pr:`3361`)
- Document Dunder Methods of ``TelegramObject`` (:pr:`3319`)
- Add Several References to Wiki pages (:pr:`3306`)
- Overhaul Search bar (:pr:`3218`)
- Unify Documentation of Arguments and Attributes of Telegram Classes (:pr:`3217`, :pr:`3292`, :pr:`3303`, :pr:`3312`, :pr:`3314`)
- Several Smaller Improvements (:pr:`3214`, :pr:`3271`, :pr:`3289`, :pr:`3326`, :pr:`3370`, :pr:`3376`, :pr:`3366`)
Minor Changes, Documentation Improvements and CI
------------------------------------------------
- Improve Warning About Unknown ``ConversationHandler`` States (:pr:`3242`)
- Switch from Stale Bot to ``GitHub`` Actions (:pr:`3243`)
- Bump Python 3.11 to RC2 in Test Matrix (:pr:`3246`)
- Make ``Job.job`` a Property and Make ``Jobs`` Hashable (:pr:`3250`)
- Skip ``JobQueue`` Tests on Windows Again (:pr:`3280`)
- Read-Only ``CallbackDataCache`` (:pr:`3266`)
- Type Hinting Fix for ``Message.effective_attachment`` (:pr:`3294`)
- Run Unit Tests in Parallel (:pr:`3283`)
- Update Test Matrix to Use Stable Python 3.11 (:pr:`3313`)
- Don't Edit Objects In-Place When Inserting ``ext.Defaults`` (:pr:`3311`)
- Add a Test for ``MessageAttachmentType`` (:pr:`3335`)
- Add Three New Test Bots (:pr:`3347`)
- Improve Unit Tests Regarding ``ChatMemberUpdated.difference`` (:pr:`3352`)
- Flaky Unit Tests: Use ``pytest`` Marker (:pr:`3354`)
- Fix ``DeepSource`` Issues (:pr:`3357`)
- Handle Lists and Tuples and Datetimes Directly in ``TelegramObject.to_dict`` (:pr:`3353`)
- Update Meta Config (:pr:`3365`)
- Merge ``ChatDescriptionLimit`` Enum Into ``ChatLimit`` (:pr:`3377`)
Dependencies
------------
- Bump ``pytest`` from 7.1.2 to 7.1.3 (:pr:`3228`)
- ``pre-commit`` Updates (:pr:`3221`)
- Bump ``sphinx`` from 5.1.1 to 5.2.3 (:pr:`3269`)
- Bump ``furo`` from 2022.6.21 to 2022.9.29 (:pr:`3268`)
- Bump ``actions/stale`` from 5 to 6 (:pr:`3277`)
- ``pre-commit`` autoupdate (:pr:`3282`)
- Bump ``sphinx`` from 5.2.3 to 5.3.0 (:pr:`3300`)
- Bump ``pytest-asyncio`` from 0.19.0 to 0.20.1 (:pr:`3299`)
- Bump ``pytest`` from 7.1.3 to 7.2.0 (:pr:`3318`)
- Bump ``pytest-xdist`` from 2.5.0 to 3.0.2 (:pr:`3317`)
- ``pre-commit`` autoupdate (:pr:`3325`)
- Bump ``pytest-asyncio`` from 0.20.1 to 0.20.2 (:pr:`3359`)
- Update ``httpx`` requirement from ~=0.23.0 to ~=0.23.1 (:pr:`3373`)