diff --git a/CHANGES.rst b/CHANGES.rst index 79a6f124496..f56a61b9b0c 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,58 @@ Changelog ========= +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 +------------- + +- Full Support for Bot API 7.5 (:pr:`4328`, :pr:`4316`, :pr:`4315`, :pr:`4312` closes :issue:`4310`, :pr:`4311`) +- Full Support for Bot API 7.6 (:pr:`4333` closes :issue:`4331`, :pr:`4344`, :pr:`4341`, :pr:`4334`, :pr:`4335`, :pr:`4351`, :pr:`4342`, :pr:`4348`) +- Full Support for Bot API 7.7 (:pr:`4356` closes :issue:`4355`) +- Drop ``python-telegram-bot-raw`` And Switch to ``pyproject.toml`` Based Packaging (:pr:`4288` closes :issue:`4129` and :issue:`4296`) +- Deprecate Inclusion of ``successful_payment`` in ``Message.effective_attachment`` (:pr:`4365` closes :issue:`4350`) + +New Features +------------ + +- Add Support for Python 3.13 Beta (:pr:`4253`) +- Add ``filters.PAID_MEDIA`` (:pr:`4357`) +- Log Received Data on Deserialization Errors (:pr:`4304`) +- Add ``MessageEntity.adjust_message_entities_to_utf_16`` Utility Function (:pr:`4323` by `Antares0982 `_ closes :issue:`4319`) +- Make Argument ``bot`` of ``TelegramObject.de_json`` Optional (:pr:`4320`) + +Documentation Improvements +-------------------------- + +- Documentation Improvements (:pr:`4303` closes :issue:`4301`) +- Restructure Readme (:pr:`4362`) +- Fix Link-Check Workflow (:pr:`4332`) + +Internal Changes +---------------- + +- Automate PyPI Releases (:pr:`4364` closes :issue:`4318`) +- Add ``mise-en-place`` to ``.gitignore`` (:pr:`4300`) +- Use a Composite Action for Testing Type Completeness (:pr:`4367`) +- Stabilize Some Concurrency Usages in Test Suite (:pr:`4360`) +- Add a Test Case for ``MenuButton`` (:pr:`4363`) +- Extend ``SuccessfulPayment`` Test (:pr:`4349`) +- Small Fixes for ``test_stars.py`` (:pr:`4347`) +- Use Python 3.13 Beta 3 in Test Suite (:pr:`4336`) + +Dependency Updates +------------------ + +- Bump ``ruff`` and Add New Rules (:pr:`4329`) +- Bump ``pre-commit`` Hooks to Latest Versions (:pr:`4337`) +- Add Lower Bound for ``flaky`` Dependency (:pr:`4322` by `Palaptin `_) +- Bump ``pytest`` from 8.2.1 to 8.2.2 (:pr:`4294`) + Version 21.3 ============ *Released 2024-06-07* diff --git a/README.rst b/README.rst index 2dabd378083..09b01d923a8 100644 --- a/README.rst +++ b/README.rst @@ -119,7 +119,7 @@ Verifying Releases To enable you to verify that a release file that you downloaded was indeed provided by the ``python-telegram-bot`` team, we have taken the following measures. -Starting with NEXT.VERSION, all releases are signed via `sigstore `_. +Starting with v21.4, all releases are signed via `sigstore `_. The corresponding signature files are uploaded to the `GitHub releases page`_. To verify the signature, please install the `sigstore Python client `_ and follow the instructions for `verifying signatures from GitHub Actions `_. As input for the ``--repository`` parameter, please use the value ``python-telegram-bot/python-telegram-bot``. diff --git a/telegram/_bot.py b/telegram/_bot.py index ff1ccbb3766..4d8a778cc63 100644 --- a/telegram/_bot.py +++ b/telegram/_bot.py @@ -2856,7 +2856,7 @@ async def edit_message_live_location( .. versionadded:: 21.2. business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Keyword Args: location (:class:`telegram.Location`, optional): The location to send. @@ -2932,7 +2932,7 @@ async def stop_message_live_location( inline keyboard. business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Returns: :class:`telegram.Message`: On success, if edited message is not an inline message, the @@ -4006,7 +4006,7 @@ async def edit_message_text( inline keyboard. business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Keyword Args: disable_web_page_preview (:obj:`bool`, optional): Disables link previews for links in @@ -4104,7 +4104,7 @@ async def edit_message_caption( .. versionadded:: 21.3 business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Returns: :class:`telegram.Message`: On success, if edited message is not an inline message, the @@ -4177,7 +4177,7 @@ async def edit_message_media( inline keyboard. business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Returns: :class:`telegram.Message`: On success, if edited message is not an inline message, the @@ -4238,7 +4238,7 @@ async def edit_message_reply_markup( inline keyboard. business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Returns: :class:`telegram.Message`: On success, if edited message is not an inline message, the @@ -7185,7 +7185,7 @@ async def stop_poll( message inline keyboard. business_connection_id (:obj:`str`, optional): |business_id_str_edit| - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Returns: :class:`telegram.Poll`: On success, the stopped Poll is returned. @@ -9138,7 +9138,7 @@ async def get_star_transactions( ) -> StarTransactions: """Returns the bot's Telegram Star transactions in chronological order. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: offset (:obj:`int`, optional): Number of transactions to skip in the response. @@ -9193,7 +9193,7 @@ async def send_paid_media( ) -> Message: """Use this method to send paid media to channel chats. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: chat_id (:obj:`int` | :obj:`str`): |chat_id_channel| diff --git a/telegram/_botcommandscope.py b/telegram/_botcommandscope.py index 53e65610c0a..73cafd17599 100644 --- a/telegram/_botcommandscope.py +++ b/telegram/_botcommandscope.py @@ -95,7 +95,7 @@ def de_json( bot (:class:`telegram.Bot`, optional): The bot associated with this object. Defaults to :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` Returns: diff --git a/telegram/_chat.py b/telegram/_chat.py index 2513e0ff334..200e192c95f 100644 --- a/telegram/_chat.py +++ b/telegram/_chat.py @@ -3286,7 +3286,7 @@ async def send_paid_media( For the documentation of the arguments, please see :meth:`telegram.Bot.send_paid_media`. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Returns: :class:`telegram.Message`: On success, instance representing the message posted. diff --git a/telegram/_chatfullinfo.py b/telegram/_chatfullinfo.py index d4bda7d415a..04898659c3c 100644 --- a/telegram/_chatfullinfo.py +++ b/telegram/_chatfullinfo.py @@ -198,7 +198,7 @@ class ChatFullInfo(_ChatBase): can_send_paid_media (:obj:`bool`, optional): :obj:`True`, if paid media messages can be sent or forwarded to the channel chat. The field is available only for channel chats. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: id (:obj:`int`): Unique identifier for this chat. @@ -352,7 +352,7 @@ class ChatFullInfo(_ChatBase): can_send_paid_media (:obj:`bool`): Optional. :obj:`True`, if paid media messages can be sent or forwarded to the channel chat. The field is available only for channel chats. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 .. _accent colors: https://core.telegram.org/bots/api#accent-colors .. _topics: https://telegram.org/blog/topics-in-groups-collectible-usernames#topics-in-groups diff --git a/telegram/_files/inputmedia.py b/telegram/_files/inputmedia.py index 3715682fa3b..692369130a4 100644 --- a/telegram/_files/inputmedia.py +++ b/telegram/_files/inputmedia.py @@ -124,7 +124,7 @@ class InputPaidMedia(TelegramObject): .. seealso:: :wiki:`Working with Files and Media ` - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): Type of media that the instance represents. @@ -164,7 +164,7 @@ class InputPaidMediaPhoto(InputPaidMedia): .. seealso:: :wiki:`Working with Files and Media ` - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: media (:obj:`str` | :term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | \ @@ -196,7 +196,7 @@ class InputPaidMediaVideo(InputPaidMedia): .. seealso:: :wiki:`Working with Files and Media ` - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Note: * When using a :class:`telegram.Video` for the :attr:`media` attribute, it will take the diff --git a/telegram/_menubutton.py b/telegram/_menubutton.py index ef89d8a53eb..50b6511b08d 100644 --- a/telegram/_menubutton.py +++ b/telegram/_menubutton.py @@ -80,7 +80,7 @@ def de_json( bot (:class:`telegram.Bot`, optional): The bot associated with this object. Defaults to :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` Returns: diff --git a/telegram/_message.py b/telegram/_message.py index edf9fb40143..fceb8cb8768 100644 --- a/telegram/_message.py +++ b/telegram/_message.py @@ -582,11 +582,11 @@ class Message(MaybeInaccessibleMessage): paid_media (:obj:`telegram.PaidMediaInfo`, optional): Message contains paid media; information about the paid media. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 refunded_payment (:obj:`telegram.RefundedPayment`, optional): Message is a service message about a refunded payment, information about the payment. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: message_id (:obj:`int`): Unique message identifier inside this chat. @@ -909,11 +909,11 @@ class Message(MaybeInaccessibleMessage): paid_media (:obj:`telegram.PaidMediaInfo`): Optional. Message contains paid media; information about the paid media. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 refunded_payment (:obj:`telegram.RefundedPayment`): Optional. Message is a service message about a refunded payment, information about the payment. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 .. |custom_emoji_no_md1_support| replace:: Since custom emoji entities are not supported by :attr:`~telegram.constants.ParseMode.MARKDOWN`, this method now raises a @@ -1426,10 +1426,10 @@ def effective_attachment( :attr:`dice`, :attr:`passport_data` and :attr:`poll` are now also considered to be an attachment. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :attr:`paid_media` is now also considered to be an attachment. - .. deprecated:: NEXT.VERSION + .. deprecated:: 21.4 :attr:`successful_payment` will be removed in future major versions. """ @@ -1442,7 +1442,7 @@ def effective_attachment( if attachment_type == MessageAttachmentType.SUCCESSFUL_PAYMENT: warn( PTBDeprecationWarning( - "NEXT.VERSION", + "21.4", "successful_payment will no longer be considered an attachment in" " future major versions", ), @@ -3649,7 +3649,7 @@ async def edit_text( of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: @@ -3706,7 +3706,7 @@ async def edit_caption( of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: @@ -3759,7 +3759,7 @@ async def edit_media( of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: @@ -3808,7 +3808,7 @@ async def edit_reply_markup( of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: @@ -3862,7 +3862,7 @@ async def edit_live_location( of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: @@ -3916,7 +3916,7 @@ async def stop_live_location( of methods) or channel posts, if the bot is an admin in that channel. However, this behaviour is undocumented and might be changed by Telegram. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: @@ -4072,7 +4072,7 @@ async def stop_poll( For the documentation of the arguments, please see :meth:`telegram.Bot.stop_poll`. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: diff --git a/telegram/_messageentity.py b/telegram/_messageentity.py index bc80c2dcb3e..302f3a1c080 100644 --- a/telegram/_messageentity.py +++ b/telegram/_messageentity.py @@ -158,7 +158,7 @@ def adjust_message_entities_to_utf_16( For more information, see `Unicode `_ and `Plane (Unicode) `_. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Examples: Below is a snippet of code that demonstrates how to use this function to convert diff --git a/telegram/_paidmedia.py b/telegram/_paidmedia.py index 82594ada337..fe78cca28e0 100644 --- a/telegram/_paidmedia.py +++ b/telegram/_paidmedia.py @@ -42,7 +42,7 @@ class PaidMedia(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`type` is equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): Type of the paid media. @@ -114,7 +114,7 @@ class PaidMediaPreview(PaidMedia): considered equal, if their :attr:`width`, :attr:`height`, and :attr:`duration` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.PREVIEW`. @@ -156,7 +156,7 @@ class PaidMediaPhoto(PaidMedia): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`photo` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.PHOTO`. @@ -202,7 +202,7 @@ class PaidMediaVideo(PaidMedia): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`video` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): Type of the paid media, always :tg-const:`telegram.PaidMedia.VIDEO`. @@ -248,7 +248,7 @@ class PaidMediaInfo(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`star_count` and :attr:`paid_media` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: star_count (:obj:`int`): The number of Telegram Stars that must be paid to buy access to diff --git a/telegram/_passport/encryptedpassportelement.py b/telegram/_passport/encryptedpassportelement.py index 76eb8e51f54..b05003f2cbd 100644 --- a/telegram/_passport/encryptedpassportelement.py +++ b/telegram/_passport/encryptedpassportelement.py @@ -222,10 +222,10 @@ def de_json_decrypted( bot (:class:`telegram.Bot` | :obj:`None`): The bot associated with these object. May be :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` - .. deprecated:: NEXT.VERSION + .. deprecated:: 21.4 This argument will be converted to an optional argument in future versions. credentials (:class:`telegram.FileCredentials`): The credentials diff --git a/telegram/_passport/passportfile.py b/telegram/_passport/passportfile.py index 3ae4a42e81f..61b70486279 100644 --- a/telegram/_passport/passportfile.py +++ b/telegram/_passport/passportfile.py @@ -128,10 +128,10 @@ def de_json_decrypted( bot (:class:`telegram.Bot` | :obj:`None`): The bot associated with these object. May be :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` - .. deprecated:: NEXT.VERSION + .. deprecated:: 21.4 This argument will be converted to an optional argument in future versions. credentials (:class:`telegram.FileCredentials`): The credentials @@ -168,10 +168,10 @@ def de_list_decrypted( bot (:class:`telegram.Bot` | :obj:`None`): The bot associated with these object. May be :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` - .. deprecated:: NEXT.VERSION + .. deprecated:: 21.4 This argument will be converted to an optional argument in future versions. credentials (:class:`telegram.FileCredentials`): The credentials diff --git a/telegram/_payment/stars.py b/telegram/_payment/stars.py index 6c537532c37..b176f2315fe 100644 --- a/telegram/_payment/stars.py +++ b/telegram/_payment/stars.py @@ -45,7 +45,7 @@ class RevenueWithdrawalState(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`type` is equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): The type of the state. @@ -94,7 +94,7 @@ def de_json( class RevenueWithdrawalStatePending(RevenueWithdrawalState): """The withdrawal is in progress. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: type (:obj:`str`): The type of the state, always @@ -114,7 +114,7 @@ class RevenueWithdrawalStateSucceeded(RevenueWithdrawalState): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`date` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: date (:obj:`datetime.datetime`): Date the withdrawal was completed as a datetime object. @@ -165,7 +165,7 @@ def de_json( class RevenueWithdrawalStateFailed(RevenueWithdrawalState): """The withdrawal failed and the transaction was refunded. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: type (:obj:`str`): The type of the state, always @@ -191,7 +191,7 @@ class TransactionPartner(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`type` is equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: type (:obj:`str`): The type of the transaction partner. @@ -257,7 +257,7 @@ def de_json( class TransactionPartnerFragment(TransactionPartner): """Describes a withdrawal transaction with Fragment. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: withdrawal_state (:obj:`telegram.RevenueWithdrawalState`, optional): State of the @@ -305,7 +305,7 @@ class TransactionPartnerUser(TransactionPartner): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`user` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: user (:class:`telegram.User`): Information about the user. @@ -354,7 +354,7 @@ def de_json( class TransactionPartnerOther(TransactionPartner): """Describes a transaction with an unknown partner. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: type (:obj:`str`): The type of the transaction partner, @@ -371,7 +371,7 @@ def __init__(self, *, api_kwargs: Optional[JSONDict] = None) -> None: class TransactionPartnerTelegramAds(TransactionPartner): """Describes a withdrawal transaction to the Telegram Ads platform. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: type (:obj:`str`): The type of the transaction partner, @@ -391,7 +391,7 @@ class StarTransaction(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`id`, :attr:`source`, and :attr:`receiver` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: id (:obj:`str`): Unique identifier of the transaction. Coincides with the identifer @@ -474,7 +474,7 @@ class StarTransactions(TelegramObject): Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`transactions` are equal. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Args: transactions (Sequence[:class:`telegram.StarTransaction`]): The list of transactions. diff --git a/telegram/_reply.py b/telegram/_reply.py index 2aefa15085a..0c15844c8d5 100644 --- a/telegram/_reply.py +++ b/telegram/_reply.py @@ -108,7 +108,7 @@ class ExternalReplyInfo(TelegramObject): paid_media (:class:`telegram.PaidMedia`, optional): Message contains paid media; information about the paid media. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 Attributes: origin (:class:`telegram.MessageOrigin`): Origin of the message replied to by the given @@ -158,7 +158,7 @@ class ExternalReplyInfo(TelegramObject): paid_media (:class:`telegram.PaidMedia`): Optional. Message contains paid media; information about the paid media. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ __slots__ = ( diff --git a/telegram/_telegramobject.py b/telegram/_telegramobject.py index 04275b9a928..4f7ba92d602 100644 --- a/telegram/_telegramobject.py +++ b/telegram/_telegramobject.py @@ -442,7 +442,7 @@ def de_json( bot (:class:`telegram.Bot`, optional): The bot associated with this object. Defaults to :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` Returns: @@ -467,7 +467,7 @@ def de_list( bot (:class:`telegram.Bot`, optional): The bot associated with these object. Defaults to :obj:`None`, in which case shortcut methods will not be available. - .. versionchanged:: NEXT.VERSION + .. versionchanged:: 21.4 :paramref:`bot` is now optional and defaults to :obj:`None` Returns: diff --git a/telegram/_version.py b/telegram/_version.py index 557a1ab9022..ec3f5618c21 100644 --- a/telegram/_version.py +++ b/telegram/_version.py @@ -51,6 +51,6 @@ def __str__(self) -> str: __version_info__: Final[Version] = Version( - major=21, minor=3, micro=0, releaselevel="final", serial=0 + major=21, minor=4, micro=0, releaselevel="final", serial=0 ) __version__: Final[str] = str(__version_info__) diff --git a/telegram/constants.py b/telegram/constants.py index 9cd41b5f3a2..fb4bc9a19a9 100644 --- a/telegram/constants.py +++ b/telegram/constants.py @@ -1265,7 +1265,7 @@ class InputPaidMediaType(StringEnum): """This enum contains the available types of :class:`telegram.InputPaidMedia`. The enum members of this enumeration are instances of :class:`str` and can be treated as such. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ __slots__ = () @@ -1622,7 +1622,7 @@ class MessageAttachmentType(StringEnum): PAID_MEDIA = "paid_media" """:obj:`str`: Messages with :attr:`telegram.Message.paid_media`. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ PASSPORT_DATA = "passport_data" """:obj:`str`: Messages with :attr:`telegram.Message.passport_data`.""" @@ -1908,7 +1908,7 @@ class MessageType(StringEnum): PAID_MEDIA = "paid_media" """:obj:`str`: Messages with :attr:`telegram.Message.paid_media`. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ PASSPORT_DATA = "passport_data" """:obj:`str`: Messages with :attr:`telegram.Message.passport_data`.""" @@ -1923,7 +1923,7 @@ class MessageType(StringEnum): REFUNDED_PAYMENT = "refunded_payment" """:obj:`str`: Messages with :attr:`telegram.Message.refunded_payment`. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ REPLY_TO_STORY = "reply_to_story" """:obj:`str`: Messages with :attr:`telegram.Message.reply_to_story`. @@ -1988,7 +1988,7 @@ class PaidMediaType(StringEnum): This enum contains the available types of :class:`telegram.PaidMedia`. The enum members of this enumeration are instances of :class:`str` and can be treated as such. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ __slots__ = () @@ -2360,7 +2360,7 @@ class RevenueWithdrawalStateType(StringEnum): """This enum contains the available types of :class:`telegram.RevenueWithdrawalState`. The enum members of this enumeration are instances of :class:`str` and can be treated as such. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ __slots__ = () @@ -2377,7 +2377,7 @@ class StarTransactionsLimit(IntEnum): """This enum contains limitations for :class:`telegram.Bot.get_star_transactions`. The enum members of this enumeration are instances of :class:`int` and can be treated as such. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ __slots__ = () @@ -2529,7 +2529,7 @@ class TransactionPartnerType(StringEnum): """This enum contains the available types of :class:`telegram.TransactionPartner`. The enum members of this enumeration are instances of :class:`str` and can be treated as such. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ __slots__ = () diff --git a/telegram/ext/filters.py b/telegram/ext/filters.py index bc6b06fda28..de105e28b6a 100644 --- a/telegram/ext/filters.py +++ b/telegram/ext/filters.py @@ -1717,7 +1717,7 @@ def filter(self, message: Message) -> bool: PAID_MEDIA = _PaidMedia(name="filters.PAID_MEDIA") """Messages that contain :attr:`telegram.Message.paid_media`. -.. versionadded:: NEXT.VERSION +.. versionadded:: 21.4 """ @@ -2214,7 +2214,7 @@ def filter(self, message: Message) -> bool: REFUNDED_PAYMENT = _RefundedPayment("filters.StatusUpdate.REFUNDED_PAYMENT") """Messages that contain :attr:`telegram.Message.refunded_payment`. - .. versionadded:: NEXT.VERSION + .. versionadded:: 21.4 """ class _UserShared(MessageFilter): pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy