L idZddlZddlZddlmZddlmZddlm Z m Z m Z m Z ddl mZddlmZddlmZdd lmZmZmZdd lmZdd lmZdd lmZdd lmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9ddl:m;Z;ddlm?Z?ddl@mAZAddlBmCZCddlDmEZEddlFmGZGdd lHmIZIdd!lJmKZKdd"lLmMZMdd#lNmOZOdd$lPmQZQdd%lRmSZSdd&lTmUZUdd'lVmWZWdd(lXmYZYdd)lZm[Z[m\Z\dd*l]m^Z^dd+l_m`Z`dd,lambZbdd-lcmdZddd.lemfZfmgZgmhZhdd/limjZjmkZkdd0llmmZmmnZndd1lompZpmqZqdd2lrmsZsdd3ltmuZumvZvmwZwmxZxmyZymzZzm{Z{dd4l|m}Z}dd5l~mZmZmZmZdd6lmZdd7lmZdd8lmZmZmZdd9lmZdd:lmZe r8dd;lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZGd<d=e ZGd>d?e`ZGd@dAeZGdBdCeZy)DzBThis module contains an object that represents a Telegram Message.N)Sequence)escape) TYPE_CHECKINGOptional TypedDictUnion)Chat)ChatBackground)ChatBoostAdded) ChecklistChecklistTasksAddedChecklistTasksDone)Dice)DirectMessagePriceChanged)DirectMessagesTopic) Animation)Audio)Contact)Document)Location) PhotoSize)Sticker)Venue)Video) VideoNote)Voice)ForumTopicClosedForumTopicCreatedForumTopicEditedForumTopicReopenedGeneralForumTopicHiddenGeneralForumTopicUnhidden)Game)GiftInfo)InlineKeyboardMarkup)InputChecklist)LinkPreviewOptions)MessageAutoDeleteTimerChanged) MessageEntity) PaidMediaInfo)PaidMessagePriceChanged) PassportData)Invoice)RefundedPayment)SuccessfulPayment)Poll)ProximityAlertTriggered)ReplyParameters) ChatShared UsersShared)Story)TelegramObject)UniqueGiftInfo)User)de_json_optionalde_list_optionalparse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp) DEFAULT_NONE DefaultValue)parse_message_entitiesparse_message_entity) TextEncoding)CorrectOptionID FileInputJSONDictMarkdownVersionODVInput ReplyMarkup TimePeriod)warn)VideoChatEndedVideoChatParticipantsInvitedVideoChatScheduledVideoChatStarted) WebAppData)WriteAccessAllowed) ZERO_DATEMessageAttachmentType ParseMode)escape_markdown)PTBDeprecationWarning)BotExternalReplyInfo GameHighScoreGiveawayGiveawayCompletedGiveawayCreatedGiveawayWinners InputMediaInputMediaAudioInputMediaDocumentInputMediaPhotoInputMediaVideoInputPaidMediaInputPollOption LabeledPrice MessageId MessageOrigin ReactionTypeSuggestedPostApprovalFailedSuggestedPostApprovedSuggestedPostDeclinedSuggestedPostInfoSuggestedPostPaidSuggestedPostParametersSuggestedPostRefunded TextQuotec0eZdZUdZeeefed<eed<y) _ReplyKwargs)chat_idreply_parametersrrrsN) __name__ __module__ __qualname__ __slots__rstrint__annotations__r2W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/telegram/_message.pyrqrqs/I 38_%%r|rqc eZdZdZdZdddededejde e ffd Z e d e fd Ze dd e e d e dde e d e dffd ZxZS)MaybeInaccessibleMessageayBase class for Telegram Message Objects. Currently, that includes :class:`telegram.Message` and :class:`telegram.InaccessibleMessage`. Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`message_id` and :attr:`chat` are equal .. versionchanged:: 21.0 ``__bool__`` is no longer overriden and defaults to Pythons standard implementation. .. versionadded:: 20.8 Args: message_id (:obj:`int`): Unique message identifier. date (:class:`datetime.datetime`): Date the message was sent in Unix time or 0 in Unix time. Converted to :class:`datetime.datetime` |datetime_localization| chat (:class:`telegram.Chat`): Conversation the message belongs to. Attributes: message_id (:obj:`int`): Unique message identifier. date (:class:`datetime.datetime`): Date the message was sent in Unix time or 0 in Unix time. Converted to :class:`datetime.datetime` |datetime_localization| chat (:class:`telegram.Chat`): Conversation the message belongs to. )chatdate message_idN api_kwargsrrrrct||||_||_||_|j|jf|_|j y)Nr)super__init__rrr _id_attrs_freeze)selfrrrr __class__s r}rz!MaybeInaccessibleMessage.__init__sG J/ )"& //4995 r|returnc(|jtk7S)zoConvenience attribute. :obj:`True`, if the date is not 0 in Unix time. .. versionadded:: 20.8 )rrQrs r} is_accessiblez&MaybeInaccessibleMessage.is_accessiblesyyI%%r|databotrVc|j|}|tur6|ddk(rtj||Stj||St |}|ddk(r t |d<nt|jd||d<t|jdt||d<t|1|||S),See :meth:`telegram.TelegramObject.de_json`.rr)rrtzinforrrr) _parse_datarInaccessibleMessagede_jsonMessager<rQr=getr9r r_de_json)clsrrr loc_tzinfors r}rz!MaybeInaccessibleMessage._de_jsonst$ * *F|q *22#2FF??#?6 62#6  <1 $DL)$((6*::NDL'(8$DV wTszJJr|NN)rtrurv__doc__rwr rydtmdatetimerrErpropertyboolr classmethodr __classcell__rs@r}rrs:/I*. ll  X& "&t&& $)- Kx Ke_KX& K , - KKr|rc@eZdZdZdZdddededeeffdZ xZ S) raThis object represents an inaccessible message. These are messages that are e.g. deleted. Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`message_id` and :attr:`chat` are equal .. versionadded:: 20.8 Args: message_id (:obj:`int`): Unique message identifier. chat (:class:`telegram.Chat`): Chat the message belongs to. Attributes: message_id (:obj:`int`): Unique message identifier. date (:class:`constants.ZERO_DATE`): Always :tg-const:`telegram.constants.ZERO_DATE`. The field can be used to differentiate regular and inaccessible messages. chat (:class:`telegram.Chat`): Chat the message belongs to. r{NrrrrcTt|||t||jyN)rrrr)rrrQr)rrrrrs r}rzInaccessibleMessage.__init__s% dz V`a r|) rtrurvrrwr ryrrErrrs@r}rrs?(I*.  X& r|rc/eZdZdZdZ dUdddedejdede e d e dd e ejd e e d e e d de e d de e de ede ede e ede ede ede ede ede e e de e de ede ede ede e de e de e ede ed e ed!e ed"e ed#e ed$e ed%e ed&e ed'e ed(e e d)e e d*e e d+e ed,e ed-e ed.e ed/e e d0e e d1e e!d2e ed3e e"d4e e#d5e e$d6e e%d7e e&d8e ed9e ed:e e'd;e ede e)d?e e*d@e e+dAe e,dBe e-dCe e.dDe edEe e/dFe e0dGe dHdIe dJdKe dLdMe dNdOe e1dPe e2dQe dRdSe dTdUe dVdWe e0dXe e3dYe edZe e d[e e d\e ed]e e4d^e e d_e ed`e e5dae e6dbe e7dce e8dde e9dee edfe e:dge e;dhe e<die e=dje edke e>dle edme dndoe dpdqe drdse dtdue dvdwe dxdye e?fΈfdzZ@eAd{efd|ZBeAd{efd}ZCeAd{e e fd~ZDeEdVde?de dd{dffd ZFeAd{eGee ee eeeeee ee5eee0eeeeedffdZHeIfde edeJed{e eKfdZL dVdSe de ed{eMee eMeNdfffdZOdddeIeIfdSe e de ede eGee fdeJeddńZcddeIdeIeIdddddf deIddeIeIeIeIdd deGe\dfde e^de edeJed.e eUdeJedZd=eNd{e fd?ZdVd@e ee d{eeNe ffdAZ dVd@e ee d{eeNe ffdBZeE dYdCe e d eeNe fdDedEed{e e f dFZeAd{e fdGZeAd{e fdHZeAd{e fdIZeAd{e fdJZeE dZdCe e d eeNe fdDedKedEed{e e f dLZeAd{e fdMZeAd{e fdNZeAd{e fdOZeAd{e fdPZeAd{e fdQZeAd{e fdRZeAd{e fdSZeAd{e fdTZxZS([raҫThis object represents a message. Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their :attr:`message_id` and :attr:`chat` are equal. Note: In Python :keyword:`from` is a reserved word. Use :paramref:`from_user` instead. .. versionchanged:: 21.0 Removed deprecated arguments and attributes ``user_shared``, ``forward_from``, ``forward_from_chat``, ``forward_from_message_id``, ``forward_signature``, ``forward_sender_name`` and ``forward_date``. .. versionchanged:: 20.8 * This class is now a subclass of :class:`telegram.MaybeInaccessibleMessage`. * The :paramref:`pinned_message` now can be either :class:`telegram.Message` or :class:`telegram.InaccessibleMessage`. .. versionchanged:: 20.0 * The arguments and attributes ``voice_chat_scheduled``, ``voice_chat_started`` and ``voice_chat_ended``, ``voice_chat_participants_invited`` were renamed to :paramref:`video_chat_scheduled`/:attr:`video_chat_scheduled`, :paramref:`video_chat_started`/:attr:`video_chat_started`, :paramref:`video_chat_ended`/:attr:`video_chat_ended` and :paramref:`video_chat_participants_invited`/:attr:`video_chat_participants_invited`, respectively, in accordance to Bot API 6.0. * The following are now keyword-only arguments in Bot methods: ``{read, write, connect, pool}_timeout``, ``api_kwargs``, ``contact``, ``quote``, ``filename``, ``loaction``, ``venue``. Use a named argument for those, and notice that some positional arguments changed position as a result. Args: message_id (:obj:`int`): Unique message identifier inside this chat. In specific instances (e.g., message containing a video sent to a big chat), the server might automatically schedule a message instead of sending it immediately. In such cases, this field will be ``0`` and the relevant message will be unusable until it is actually sent. from_user (:class:`telegram.User`, optional): Sender of the message; may be empty for messages sent to channels. For backward compatibility, if the message was sent on behalf of a chat, the field contains a fake sender user in non-channel chats. sender_chat (:class:`telegram.Chat`, optional): Sender of the message when sent on behalf of a chat. For example, the supergroup itself for messages sent by its anonymous administrators or a linked channel for messages automatically forwarded to the channel's discussion group. For backward compatibility, if the message was sent on behalf of a chat, the field from contains a fake sender user in non-channel chats. date (:class:`datetime.datetime`): Date the message was sent in Unix time. Converted to :class:`datetime.datetime`. .. versionchanged:: 20.3 |datetime_localization| chat (:class:`telegram.Chat`): Conversation the message belongs to. is_automatic_forward (:obj:`bool`, optional): :obj:`True`, if the message is a channel post that was automatically forwarded to the connected discussion group. .. versionadded:: 13.9 reply_to_message (:class:`telegram.Message`, optional): For replies, the original message. Note that the Message object in this field will not contain further ``reply_to_message`` fields even if it itself is a reply. edit_date (:class:`datetime.datetime`, optional): Date the message was last edited in Unix time. Converted to :class:`datetime.datetime`. .. versionchanged:: 20.3 |datetime_localization| has_protected_content (:obj:`bool`, optional): :obj:`True`, if the message can't be forwarded. .. versionadded:: 13.9 is_from_offline (:obj:`bool`, optional): :obj:`True`, if the message was sent by an implicit action, for example, as an away or a greeting business message, or as a scheduled message. .. versionadded:: 21.1 media_group_id (:obj:`str`, optional): The unique identifier of a media message group this message belongs to. text (:obj:`str`, optional): For text messages, the actual UTF-8 text of the message, 0-:tg-const:`telegram.constants.MessageLimit.MAX_TEXT_LENGTH` characters. entities (Sequence[:class:`telegram.MessageEntity`], optional): For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text. See :attr:`parse_entity` and :attr:`parse_entities` methods for how to use properly. This list is empty if the message does not contain entities. .. versionchanged:: 20.0 |sequenceclassargs| link_preview_options (:class:`telegram.LinkPreviewOptions`, optional): Options used for link preview generation for the message, if it is a text message and link preview options were changed. .. versionadded:: 20.8 suggested_post_info (:class:`telegram.SuggestedPostInfo`, optional): Information about suggested post parameters if the message is a suggested post in a channel direct messages chat. If the message is an approved or declined suggested post, then it can't be edited. .. versionadded:: 22.4 effect_id (:obj:`str`, optional): Unique identifier of the message effect added to the message. .. versionadded:: 21.3 caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): For messages with a Caption. Special entities like usernames, URLs, bot commands, etc. that appear in the caption. See :attr:`Message.parse_caption_entity` and :attr:`parse_caption_entities` methods for how to use properly. This list is empty if the message does not contain caption entities. .. versionchanged:: 20.0 |sequenceclassargs| show_caption_above_media (:obj:`bool`, optional): |show_cap_above_med| .. versionadded:: 21.3 audio (:class:`telegram.Audio`, optional): Message is an audio file, information about the file. document (:class:`telegram.Document`, optional): Message is a general file, information about the file. animation (:class:`telegram.Animation`, optional): Message is an animation, information about the animation. For backward compatibility, when this field is set, the document field will also be set. game (:class:`telegram.Game`, optional): Message is a game, information about the game. :ref:`More about games >> `. photo (Sequence[:class:`telegram.PhotoSize`], optional): Message is a photo, available sizes of the photo. This list is empty if the message does not contain a photo. .. versionchanged:: 20.0 |sequenceclassargs| sticker (:class:`telegram.Sticker`, optional): Message is a sticker, information about the sticker. story (:class:`telegram.Story`, optional): Message is a forwarded story. .. versionadded:: 20.5 video (:class:`telegram.Video`, optional): Message is a video, information about the video. voice (:class:`telegram.Voice`, optional): Message is a voice message, information about the file. video_note (:class:`telegram.VideoNote`, optional): Message is a `video note `_, information about the video message. new_chat_members (Sequence[:class:`telegram.User`], optional): New members that were added to the group or supergroup and information about them (the bot itself may be one of these members). This list is empty if the message does not contain new chat members. .. versionchanged:: 20.0 |sequenceclassargs| caption (:obj:`str`, optional): Caption for the animation, audio, document, paid media, photo, video or voice, 0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters. contact (:class:`telegram.Contact`, optional): Message is a shared contact, information about the contact. location (:class:`telegram.Location`, optional): Message is a shared location, information about the location. venue (:class:`telegram.Venue`, optional): Message is a venue, information about the venue. For backward compatibility, when this field is set, the location field will also be set. left_chat_member (:class:`telegram.User`, optional): A member was removed from the group, information about them (this member may be the bot itself). new_chat_title (:obj:`str`, optional): A chat title was changed to this value. new_chat_photo (Sequence[:class:`telegram.PhotoSize`], optional): A chat photo was changed to this value. This list is empty if the message does not contain a new chat photo. .. versionchanged:: 20.0 |sequenceclassargs| delete_chat_photo (:obj:`bool`, optional): Service message: The chat photo was deleted. group_chat_created (:obj:`bool`, optional): Service message: The group has been created. supergroup_chat_created (:obj:`bool`, optional): Service message: The supergroup has been created. This field can't be received in a message coming through updates, because bot can't be a member of a supergroup when it is created. It can only be found in :attr:`reply_to_message` if someone replies to a very first message in a directly created supergroup. channel_chat_created (:obj:`bool`, optional): Service message: The channel has been created. This field can't be received in a message coming through updates, because bot can't be a member of a channel when it is created. It can only be found in :attr:`reply_to_message` if someone replies to a very first message in a channel. message_auto_delete_timer_changed (:class:`telegram.MessageAutoDeleteTimerChanged`, optional): Service message: auto-delete timer settings changed in the chat. .. versionadded:: 13.4 migrate_to_chat_id (:obj:`int`, optional): The group has been migrated to a supergroup with the specified identifier. migrate_from_chat_id (:obj:`int`, optional): The supergroup has been migrated from a group with the specified identifier. pinned_message (:class:`telegram.MaybeInaccessibleMessage`, optional): Specified message was pinned. Note that the Message object in this field will not contain further :attr:`reply_to_message` fields even if it is itself a reply. .. versionchanged:: 20.8 This attribute now is either :class:`telegram.Message` or :class:`telegram.InaccessibleMessage`. invoice (:class:`telegram.Invoice`, optional): Message is an invoice for a payment, information about the invoice. :ref:`More about payments >> `. successful_payment (:class:`telegram.SuccessfulPayment`, optional): Message is a service message about a successful payment, information about the payment. :ref:`More about payments >> `. connected_website (:obj:`str`, optional): The domain name of the website on which the user has logged in. `More about Telegram Login >> `_. author_signature (:obj:`str`, optional): Signature of the post author for messages in channels, or the custom title of an anonymous group administrator. paid_star_count (:obj:`int`, optional): The number of Telegram Stars that were paid by the sender of the message to send it .. versionadded:: 22.1 passport_data (:class:`telegram.PassportData`, optional): Telegram Passport data. poll (:class:`telegram.Poll`, optional): Message is a native poll, information about the poll. dice (:class:`telegram.Dice`, optional): Message is a dice with random value. via_bot (:class:`telegram.User`, optional): Bot through which message was sent. proximity_alert_triggered (:class:`telegram.ProximityAlertTriggered`, optional): Service message. A user in the chat triggered another user's proximity alert while sharing Live Location. video_chat_scheduled (:class:`telegram.VideoChatScheduled`, optional): Service message: video chat scheduled. .. versionadded:: 20.0 video_chat_started (:class:`telegram.VideoChatStarted`, optional): Service message: video chat started. .. versionadded:: 20.0 video_chat_ended (:class:`telegram.VideoChatEnded`, optional): Service message: video chat ended. .. versionadded:: 20.0 video_chat_participants_invited (:class:`telegram.VideoChatParticipantsInvited` optional): Service message: new participants invited to a video chat. .. versionadded:: 20.0 web_app_data (:class:`telegram.WebAppData`, optional): Service message: data sent by a Web App. .. versionadded:: 20.0 reply_markup (:class:`telegram.InlineKeyboardMarkup`, optional): Inline keyboard attached to the message. :paramref:`~telegram.InlineKeyboardButton.login_url` buttons are represented as ordinary url buttons. is_topic_message (:obj:`bool`, optional): :obj:`True`, if the message is sent to a forum topic. .. versionadded:: 20.0 message_thread_id (:obj:`int`, optional): Unique identifier of a message thread to which the message belongs; for supergroups only. .. versionadded:: 20.0 forum_topic_created (:class:`telegram.ForumTopicCreated`, optional): Service message: forum topic created. .. versionadded:: 20.0 forum_topic_closed (:class:`telegram.ForumTopicClosed`, optional): Service message: forum topic closed. .. versionadded:: 20.0 forum_topic_reopened (:class:`telegram.ForumTopicReopened`, optional): Service message: forum topic reopened. .. versionadded:: 20.0 forum_topic_edited (:class:`telegram.ForumTopicEdited`, optional): Service message: forum topic edited. .. versionadded:: 20.0 general_forum_topic_hidden (:class:`telegram.GeneralForumTopicHidden`, optional): Service message: General forum topic hidden. .. versionadded:: 20.0 general_forum_topic_unhidden (:class:`telegram.GeneralForumTopicUnhidden`, optional): Service message: General forum topic unhidden. .. versionadded:: 20.0 write_access_allowed (:class:`telegram.WriteAccessAllowed`, optional): Service message: the user allowed the bot to write messages after adding it to the attachment or side menu, launching a Web App from a link, or accepting an explicit request from a Web App sent by the method `requestWriteAccess `_. .. versionadded:: 20.0 has_media_spoiler (:obj:`bool`, optional): :obj:`True`, if the message media is covered by a spoiler animation. .. versionadded:: 20.0 checklist (:class:`telegram.Checklist`, optional): Message is a checklist .. versionadded:: 22.3 users_shared (:class:`telegram.UsersShared`, optional): Service message: users were shared with the bot .. versionadded:: 20.8 chat_shared (:class:`telegram.ChatShared`, optional):Service message: a chat was shared with the bot. .. versionadded:: 20.1 gift (:class:`telegram.GiftInfo`, optional): Service message: a regular gift was sent or received. .. versionadded:: 22.1 unique_gift (:class:`telegram.UniqueGiftInfo`, optional): Service message: a unique gift was sent or received .. versionadded:: 22.1 giveaway_created (:class:`telegram.GiveawayCreated`, optional): Service message: a scheduled giveaway was created .. versionadded:: 20.8 giveaway (:class:`telegram.Giveaway`, optional): The message is a scheduled giveaway message .. versionadded:: 20.8 giveaway_winners (:class:`telegram.GiveawayWinners`, optional): A giveaway with public winners was completed .. versionadded:: 20.8 giveaway_completed (:class:`telegram.GiveawayCompleted`, optional): Service message: a giveaway without public winners was completed .. versionadded:: 20.8 paid_message_price_changed (:class:`telegram.PaidMessagePriceChanged`, optional): Service message: the price for paid messages has changed in the chat .. versionadded:: 22.1 suggested_post_approved (:class:`telegram.SuggestedPostApproved`, optional): Service message: a suggested post was approved. .. versionadded:: 22.4 suggested_post_approval_failed (:class:`telegram.SuggestedPostApproved`, optional): Service message: approval of a suggested post has failed. .. versionadded:: 22.4 suggested_post_declined (:class:`telegram.SuggestedPostDeclined`, optional): Service message: a suggested post was declined. .. versionadded:: 22.4 suggested_post_paid (:class:`telegram.SuggestedPostPaid`, optional): Service message: payment for a suggested post was received. .. versionadded:: 22.4 suggested_post_refunded (:class:`telegram.SuggestedPostRefunded`, optional): Service message: payment for a suggested post was refunded. .. versionadded:: 22.4 external_reply (:class:`telegram.ExternalReplyInfo`, optional): Information about the message that is being replied to, which may come from another chat or forum topic. .. versionadded:: 20.8 quote (:class:`telegram.TextQuote`, optional): For replies that quote part of the original message, the quoted part of the message. .. versionadded:: 20.8 forward_origin (:class:`telegram.MessageOrigin`, optional): Information about the original message for forwarded messages .. versionadded:: 20.8 reply_to_story (:class:`telegram.Story`, optional): For replies to a story, the original story. .. versionadded:: 21.0 boost_added (:class:`telegram.ChatBoostAdded`, optional): Service message: user boosted the chat. .. versionadded:: 21.0 sender_boost_count (:obj:`int`, optional): If the sender of the message boosted the chat, the number of boosts added by the user. .. versionadded:: 21.0 business_connection_id (:obj:`str`, optional): Unique identifier of the business connection from which the message was received. If non-empty, the message belongs to a chat of the corresponding business account that is independent from any potential bot chat which might share the same identifier. .. versionadded:: 21.1 sender_business_bot (:class:`telegram.User`, optional): The bot that actually sent the message on behalf of the business account. Available only for outgoing messages sent on behalf of the connected business account. .. versionadded:: 21.1 chat_background_set (:class:`telegram.ChatBackground`, optional): Service message: chat background set. .. versionadded:: 21.2 checklist_tasks_done (:class:`telegram.ChecklistTasksDone`, optional): Service message: some tasks in a checklist were marked as done or not done .. versionadded:: 22.3 checklist_tasks_added (:class:`telegram.ChecklistTasksAdded`, optional): Service message: tasks were added to a checklist .. versionadded:: 22.3 paid_media (:class:`telegram.PaidMediaInfo`, optional): Message contains paid media; information about the paid media. .. versionadded:: 21.4 refunded_payment (:class:`telegram.RefundedPayment`, optional): Message is a service message about a refunded payment, information about the payment. .. versionadded:: 21.4 direct_message_price_changed (:class:`telegram.DirectMessagePriceChanged`, optional): Service message: the price for paid messages in the corresponding direct messages chat of a channel has changed. .. versionadded:: 22.3 is_paid_post (:obj:`bool`, optional): :obj:`True`, if the message is a paid post. Note that such posts must not be deleted for 24 hours to receive the payment and can't be edited. .. versionadded:: 22.4 direct_messages_topic (:class:`telegram.DirectMessagesTopic`, optional): Information about the direct messages chat topic that contains the message. .. versionadded:: 22.4 reply_to_checklist_task_id (:obj:`int`, optional): Identifier of the specific checklist task that is being replied to. .. versionadded:: 22.4 Attributes: message_id (:obj:`int`): Unique message identifier inside this chat. In specific instances (e.g., message containing a video sent to a big chat), the server might automatically schedule a message instead of sending it immediately. In such cases, this field will be ``0`` and the relevant message will be unusable until it is actually sent. from_user (:class:`telegram.User`): Optional. Sender of the message; may be empty for messages sent to channels. For backward compatibility, if the message was sent on behalf of a chat, the field contains a fake sender user in non-channel chats. sender_chat (:class:`telegram.Chat`): Optional. Sender of the message when sent on behalf of a chat. For example, the supergroup itself for messages sent by its anonymous administrators or a linked channel for messages automatically forwarded to the channel's discussion group. For backward compatibility, if the message was sent on behalf of a chat, the field from contains a fake sender user in non-channel chats. date (:class:`datetime.datetime`): Date the message was sent in Unix time. Converted to :class:`datetime.datetime`. .. versionchanged:: 20.3 |datetime_localization| chat (:class:`telegram.Chat`): Conversation the message belongs to. is_automatic_forward (:obj:`bool`): Optional. :obj:`True`, if the message is a channel post that was automatically forwarded to the connected discussion group. .. versionadded:: 13.9 reply_to_message (:class:`telegram.Message`): Optional. For replies, the original message. Note that the Message object in this field will not contain further ``reply_to_message`` fields even if it itself is a reply. edit_date (:class:`datetime.datetime`): Optional. Date the message was last edited in Unix time. Converted to :class:`datetime.datetime`. .. versionchanged:: 20.3 |datetime_localization| has_protected_content (:obj:`bool`): Optional. :obj:`True`, if the message can't be forwarded. .. versionadded:: 13.9 is_from_offline (:obj:`bool`): Optional. :obj:`True`, if the message was sent by an implicit action, for example, as an away or a greeting business message, or as a scheduled message. .. versionadded:: 21.1 media_group_id (:obj:`str`): Optional. The unique identifier of a media message group this message belongs to. text (:obj:`str`): Optional. For text messages, the actual UTF-8 text of the message, 0-:tg-const:`telegram.constants.MessageLimit.MAX_TEXT_LENGTH` characters. entities (tuple[:class:`telegram.MessageEntity`]): Optional. For text messages, special entities like usernames, URLs, bot commands, etc. that appear in the text. See :attr:`parse_entity` and :attr:`parse_entities` methods for how to use properly. This list is empty if the message does not contain entities. .. versionchanged:: 20.0 |tupleclassattrs| link_preview_options (:class:`telegram.LinkPreviewOptions`): Optional. Options used for link preview generation for the message, if it is a text message and link preview options were changed. .. versionadded:: 20.8 suggested_post_info (:class:`telegram.SuggestedPostInfo`): Optional. Information about suggested post parameters if the message is a suggested post in a channel direct messages chat. If the message is an approved or declined suggested post, then it can't be edited. .. versionadded:: 22.4 effect_id (:obj:`str`): Optional. Unique identifier of the message effect added to the message. .. versionadded:: 21.3 caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. For messages with a Caption. Special entities like usernames, URLs, bot commands, etc. that appear in the caption. See :attr:`Message.parse_caption_entity` and :attr:`parse_caption_entities` methods for how to use properly. This list is empty if the message does not contain caption entities. .. versionchanged:: 20.0 |tupleclassattrs| show_caption_above_media (:obj:`bool`): Optional. |show_cap_above_med| .. versionadded:: 21.3 audio (:class:`telegram.Audio`): Optional. Message is an audio file, information about the file. .. seealso:: :wiki:`Working with Files and Media ` document (:class:`telegram.Document`): Optional. Message is a general file, information about the file. .. seealso:: :wiki:`Working with Files and Media ` animation (:class:`telegram.Animation`): Optional. Message is an animation, information about the animation. For backward compatibility, when this field is set, the document field will also be set. .. seealso:: :wiki:`Working with Files and Media ` game (:class:`telegram.Game`): Optional. Message is a game, information about the game. :ref:`More about games >> `. photo (tuple[:class:`telegram.PhotoSize`]): Optional. Message is a photo, available sizes of the photo. This list is empty if the message does not contain a photo. .. seealso:: :wiki:`Working with Files and Media ` .. versionchanged:: 20.0 |tupleclassattrs| sticker (:class:`telegram.Sticker`): Optional. Message is a sticker, information about the sticker. .. seealso:: :wiki:`Working with Files and Media ` story (:class:`telegram.Story`): Optional. Message is a forwarded story. .. versionadded:: 20.5 video (:class:`telegram.Video`): Optional. Message is a video, information about the video. .. seealso:: :wiki:`Working with Files and Media ` voice (:class:`telegram.Voice`): Optional. Message is a voice message, information about the file. .. seealso:: :wiki:`Working with Files and Media ` video_note (:class:`telegram.VideoNote`): Optional. Message is a `video note `_, information about the video message. .. seealso:: :wiki:`Working with Files and Media ` new_chat_members (tuple[:class:`telegram.User`]): Optional. New members that were added to the group or supergroup and information about them (the bot itself may be one of these members). This list is empty if the message does not contain new chat members. .. versionchanged:: 20.0 |tupleclassattrs| caption (:obj:`str`): Optional. Caption for the animation, audio, document, paid media, photo, video or voice, 0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters. contact (:class:`telegram.Contact`): Optional. Message is a shared contact, information about the contact. location (:class:`telegram.Location`): Optional. Message is a shared location, information about the location. venue (:class:`telegram.Venue`): Optional. Message is a venue, information about the venue. For backward compatibility, when this field is set, the location field will also be set. left_chat_member (:class:`telegram.User`): Optional. A member was removed from the group, information about them (this member may be the bot itself). new_chat_title (:obj:`str`): Optional. A chat title was changed to this value. new_chat_photo (tuple[:class:`telegram.PhotoSize`]): A chat photo was changed to this value. This list is empty if the message does not contain a new chat photo. .. versionchanged:: 20.0 |tupleclassattrs| delete_chat_photo (:obj:`bool`): Optional. Service message: The chat photo was deleted. group_chat_created (:obj:`bool`): Optional. Service message: The group has been created. supergroup_chat_created (:obj:`bool`): Optional. Service message: The supergroup has been created. This field can't be received in a message coming through updates, because bot can't be a member of a supergroup when it is created. It can only be found in :attr:`reply_to_message` if someone replies to a very first message in a directly created supergroup. channel_chat_created (:obj:`bool`): Optional. Service message: The channel has been created. This field can't be received in a message coming through updates, because bot can't be a member of a channel when it is created. It can only be found in :attr:`reply_to_message` if someone replies to a very first message in a channel. message_auto_delete_timer_changed (:class:`telegram.MessageAutoDeleteTimerChanged`): Optional. Service message: auto-delete timer settings changed in the chat. .. versionadded:: 13.4 migrate_to_chat_id (:obj:`int`): Optional. The group has been migrated to a supergroup with the specified identifier. migrate_from_chat_id (:obj:`int`): Optional. The supergroup has been migrated from a group with the specified identifier. pinned_message (:class:`telegram.MaybeInaccessibleMessage`): Optional. Specified message was pinned. Note that the Message object in this field will not contain further :attr:`reply_to_message` fields even if it is itself a reply. .. versionchanged:: 20.8 This attribute now is either :class:`telegram.Message` or :class:`telegram.InaccessibleMessage`. invoice (:class:`telegram.Invoice`): Optional. Message is an invoice for a payment, information about the invoice. :ref:`More about payments >> `. successful_payment (:class:`telegram.SuccessfulPayment`): Optional. Message is a service message about a successful payment, information about the payment. :ref:`More about payments >> `. connected_website (:obj:`str`): Optional. The domain name of the website on which the user has logged in. `More about Telegram Login >> `_. author_signature (:obj:`str`): Optional. Signature of the post author for messages in channels, or the custom title of an anonymous group administrator. paid_star_count (:obj:`int`): Optional. The number of Telegram Stars that were paid by the sender of the message to send it .. versionadded:: 22.1 passport_data (:class:`telegram.PassportData`): Optional. Telegram Passport data. Examples: :any:`Passport Bot ` poll (:class:`telegram.Poll`): Optional. Message is a native poll, information about the poll. dice (:class:`telegram.Dice`): Optional. Message is a dice with random value. via_bot (:class:`telegram.User`): Optional. Bot through which message was sent. proximity_alert_triggered (:class:`telegram.ProximityAlertTriggered`): Optional. Service message. A user in the chat triggered another user's proximity alert while sharing Live Location. video_chat_scheduled (:class:`telegram.VideoChatScheduled`): Optional. Service message: video chat scheduled. .. versionadded:: 20.0 video_chat_started (:class:`telegram.VideoChatStarted`): Optional. Service message: video chat started. .. versionadded:: 20.0 video_chat_ended (:class:`telegram.VideoChatEnded`): Optional. Service message: video chat ended. .. versionadded:: 20.0 video_chat_participants_invited (:class:`telegram.VideoChatParticipantsInvited`): Optional. Service message: new participants invited to a video chat. .. versionadded:: 20.0 web_app_data (:class:`telegram.WebAppData`): Optional. Service message: data sent by a Web App. .. versionadded:: 20.0 reply_markup (:class:`telegram.InlineKeyboardMarkup`): Optional. Inline keyboard attached to the message. :paramref:`~telegram.InlineKeyboardButton.login_url` buttons are represented as ordinary url buttons. is_topic_message (:obj:`bool`): Optional. :obj:`True`, if the message is sent to a forum topic. .. versionadded:: 20.0 message_thread_id (:obj:`int`): Optional. Unique identifier of a message thread to which the message belongs; for supergroups only. .. versionadded:: 20.0 forum_topic_created (:class:`telegram.ForumTopicCreated`): Optional. Service message: forum topic created. .. versionadded:: 20.0 forum_topic_closed (:class:`telegram.ForumTopicClosed`): Optional. Service message: forum topic closed. .. versionadded:: 20.0 forum_topic_reopened (:class:`telegram.ForumTopicReopened`): Optional. Service message: forum topic reopened. .. versionadded:: 20.0 forum_topic_edited (:class:`telegram.ForumTopicEdited`): Optional. Service message: forum topic edited. .. versionadded:: 20.0 general_forum_topic_hidden (:class:`telegram.GeneralForumTopicHidden`): Optional. Service message: General forum topic hidden. .. versionadded:: 20.0 general_forum_topic_unhidden (:class:`telegram.GeneralForumTopicUnhidden`): Optional. Service message: General forum topic unhidden. .. versionadded:: 20.0 write_access_allowed (:class:`telegram.WriteAccessAllowed`): Optional. Service message: the user allowed the bot added to the attachment menu to write messages. .. versionadded:: 20.0 has_media_spoiler (:obj:`bool`): Optional. :obj:`True`, if the message media is covered by a spoiler animation. .. versionadded:: 20.0 checklist (:class:`telegram.Checklist`): Optional. Message is a checklist .. versionadded:: 22.3 users_shared (:class:`telegram.UsersShared`): Optional. Service message: users were shared with the bot .. versionadded:: 20.8 chat_shared (:class:`telegram.ChatShared`): Optional. Service message: a chat was shared with the bot. .. versionadded:: 20.1 gift (:class:`telegram.GiftInfo`): Optional. Service message: a regular gift was sent or received. .. versionadded:: 22.1 unique_gift (:class:`telegram.UniqueGiftInfo`): Optional. Service message: a unique gift was sent or received .. versionadded:: 22.1 giveaway_created (:class:`telegram.GiveawayCreated`): Optional. Service message: a scheduled giveaway was created .. versionadded:: 20.8 giveaway (:class:`telegram.Giveaway`): Optional. The message is a scheduled giveaway message .. versionadded:: 20.8 giveaway_winners (:class:`telegram.GiveawayWinners`): Optional. A giveaway with public winners was completed .. versionadded:: 20.8 giveaway_completed (:class:`telegram.GiveawayCompleted`): Optional. Service message: a giveaway without public winners was completed .. versionadded:: 20.8 paid_message_price_changed (:class:`telegram.PaidMessagePriceChanged`): Optional. Service message: the price for paid messages has changed in the chat .. versionadded:: 22.1 suggested_post_approved (:class:`telegram.SuggestedPostApproved`): Optional. Service message: a suggested post was approved. .. versionadded:: 22.4 suggested_post_approval_failed (:class:`telegram.SuggestedPostApproved`): Optional. Service message: approval of a suggested post has failed. .. versionadded:: 22.4 suggested_post_declined (:class:`telegram.SuggestedPostDeclined`): Optional. Service message: a suggested post was declined. .. versionadded:: 22.4 suggested_post_paid (:class:`telegram.SuggestedPostPaid`): Optional. Service message: payment for a suggested post was received. .. versionadded:: 22.4 suggested_post_refunded (:class:`telegram.SuggestedPostRefunded`): Optional. Service message: payment for a suggested post was refunded. .. versionadded:: 22.4 external_reply (:class:`telegram.ExternalReplyInfo`): Optional. Information about the message that is being replied to, which may come from another chat or forum topic. .. versionadded:: 20.8 quote (:class:`telegram.TextQuote`): Optional. For replies that quote part of the original message, the quoted part of the message. .. versionadded:: 20.8 forward_origin (:class:`telegram.MessageOrigin`): Optional. Information about the original message for forwarded messages .. versionadded:: 20.8 reply_to_story (:class:`telegram.Story`): Optional. For replies to a story, the original story. .. versionadded:: 21.0 boost_added (:class:`telegram.ChatBoostAdded`): Optional. Service message: user boosted the chat. .. versionadded:: 21.0 sender_boost_count (:obj:`int`): Optional. If the sender of the message boosted the chat, the number of boosts added by the user. .. versionadded:: 21.0 business_connection_id (:obj:`str`): Optional. Unique identifier of the business connection from which the message was received. If non-empty, the message belongs to a chat of the corresponding business account that is independent from any potential bot chat which might share the same identifier. .. versionadded:: 21.1 sender_business_bot (:class:`telegram.User`): Optional. The bot that actually sent the message on behalf of the business account. Available only for outgoing messages sent on behalf of the connected business account. .. versionadded:: 21.1 chat_background_set (:class:`telegram.ChatBackground`): Optional. Service message: chat background set .. versionadded:: 21.2 checklist_tasks_done (:class:`telegram.ChecklistTasksDone`): Optional. Service message: some tasks in a checklist were marked as done or not done .. versionadded:: 22.3 checklist_tasks_added (:class:`telegram.ChecklistTasksAdded`): Optional. Service message: tasks were added to a checklist .. versionadded:: 22.3 paid_media (:class:`telegram.PaidMediaInfo`): Optional. Message contains paid media; information about the paid media. .. versionadded:: 21.4 refunded_payment (:class:`telegram.RefundedPayment`): Optional. Message is a service message about a refunded payment, information about the payment. .. versionadded:: 21.4 direct_message_price_changed (:class:`telegram.DirectMessagePriceChanged`): Optional. Service message: the price for paid messages in the corresponding direct messages chat of a channel has changed. .. versionadded:: 22.3 is_paid_post (:obj:`bool`): Optional. :obj:`True`, if the message is a paid post. Note that such posts must not be deleted for 24 hours to receive the payment and can't be edited. .. versionadded:: 22.4 direct_messages_topic (:class:`telegram.DirectMessagesTopic`): Optional. Information about the direct messages chat topic that contains the message. .. versionadded:: 22.4 reply_to_checklist_task_id (:obj:`int`): Optional. Identifier of the specific checklist task that is being replied to. .. versionadded:: 22.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 :exc:`ValueError` when encountering a custom emoji. .. |blockquote_no_md1_support| replace:: Since block quotation entities are not supported by :attr:`~telegram.constants.ParseMode.MARKDOWN`, this method now raises a :exc:`ValueError` when encountering a block quotation. .. |reply_same_thread| replace:: If :paramref:`message_thread_id` is not provided, this will reply to the same thread (topic) of the original message. .. |quote_removed| replace:: Removed deprecated parameter ``quote``. Use :paramref:`do_quote` instead. )d_effective_attachment animationaudioauthor_signature boost_addedbusiness_connection_idcaptioncaption_entitieschannel_chat_createdchat_background_set chat_shared checklistchecklist_tasks_addedchecklist_tasks_doneconnected_websitecontactdelete_chat_photodicedirect_message_price_changeddirect_messages_topicdocument edit_date effect_identitiesexternal_replyforum_topic_closedforum_topic_createdforum_topic_editedforum_topic_reopenedforward_origin from_usergamegeneral_forum_topic_hiddengeneral_forum_topic_unhiddengiftgiveawaygiveaway_completedgiveaway_createdgiveaway_winnersgroup_chat_createdhas_media_spoilerhas_protected_contentinvoiceis_automatic_forwardis_from_offline is_paid_postis_topic_messageleft_chat_memberlink_preview_optionslocationmedia_group_id!message_auto_delete_timer_changedmessage_thread_idmigrate_from_chat_idmigrate_to_chat_idnew_chat_membersnew_chat_photonew_chat_title paid_mediapaid_message_price_changedpaid_star_count passport_dataphotopinned_messagepollproximity_alert_triggeredquoterefunded_payment reply_markupreply_to_checklist_task_idreply_to_messagereply_to_storysender_boost_countsender_business_bot sender_chatshow_caption_above_mediastickerstorysuccessful_paymentsuggested_post_approval_failedsuggested_post_approvedsuggested_post_declinedsuggested_post_infosuggested_post_paidsuggested_post_refundedsupergroup_chat_createdtext unique_gift users_sharedvenuevia_botvideovideo_chat_endedvideo_chat_participants_invitedvideo_chat_scheduledvideo_chat_started video_notevoice web_app_datawrite_access_allowedNrrrrrrrrrr)rrrrrrrr r rrrrrrrrrrrrrrrrrrrrrrrrrrrrr rr rr rrrrrrrrrrrrrrrrrYrrZrr[rr\rrrrWrrorrfrrrrrrrrrrrrrrrrrrrrrrrrjrrlrrnrrkrrirrhrcgth||||g|j5||_||_|-|_||_||_|3|_||_ ||_ |4|_ ||_ t||_t| |_| |_| |_| |_t| |_||_||_||_||_||_||_||_||_t||_||_||_t||_tA||_!tA||_"tA||_#||_$||_%tA||_&|1|_'| |_(|!|_)|"|_*|%|_+|#|_,|$|_-|&|_.|'|_/|(|_0|*|_1|+|_2|,|_3|2|_4|.|_5|/|_6|0|_7|)|_8|5|_9|6|_:|7|_;|8|_<|9|_=|:|_>|;|_?|<|_@|=|_A|>|_B|?|_C[|_DF|_E@|_FA|_GB|_HC|_ID|_JE|_KG|_LH|_MI|_NJ|_OK|_PL|_QM|_RN|_SO|_TP|_UQ|_V\|_W]|_XR|_YS|_ZT|_[U|_\V|_]W|_^X|__Y|_`Z|_a^|_b_|_c`|_da|_eb|_fc|_gd|_he|_if|_jt|_l|j|jf|_mdddy#1swYyxYwr)nrr _unfrozenrrrrrrrrrrr;rrrrrrrrr r rrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rr rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr>rr)irrrrrrrrrrrrrrrrr r rrrrrrrrrrrrrrrrrrrrrrrrrrrrr rr rr rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrsi r}rzMessage.__init__sV dzQ[\ ^^ | :#-DO-6DN/:D &*DI"DI8LD %7GD !5>DN9ND &'+DI7I(7SDM?QRb?cD !*/DJ(,DI08DM0B50IDJ.5DL*/DJ*/DJ3=DO*1DL.5DL08DM*/DJ6HIY6ZD !4DD !1?D 9KN9[D 59:K5LD "6:;M6ND #;?@W;XD (5GD #7KD %8<=Q8RD %1  2GUD .5DLCUD #4ED "3CD !1?D 2;DN9FD (,DI(,DI+2DL)  *G[D %BTD #>ND !/  0AMD 6BD 4DD !4ED "DWD $BTD #FZD %BTD #*  +-  -G[D %5FD "2;DN7CD 5@D */DJ08DMCUD #?OD !?OD !FZD %?MD .3DJ;ID 3AD 9DD 5GD #9OD '7JD $3BD ATD $FZD %H]D &,5DN>$,, !; ;,0II,>,>dii((bTYY\\IZ[\[]I^H_D`G&wiq0ABH%%$*@*@TEZEZ&Zx0F0F/GHOr|rrrVc|j|}t|}t|jddt||d<t|j dt ||d<t|j dt||d<t|j dt||d<t|j dt||d<t|j d| |d<t|j d t||d <t|j d t||d <t|j d t||d <t|j d t||d <t|j dt||d<t|j dt ||d<t|j dt"||d<t|j dt$||d<t|j dt&||d<t|j dt(||d<t|j dt*||d<t|j dt,||d<t|j dt.||d<t|j dt||d<t|j dt||d<t|j dt||d<t|j dt0||d<t|j dt2||d<t|j dt4||d<t|j dt6||d<t|j dt8||d<t|j dt:||d<t|j d t<||d <t|j d!t||d!<t|j d"t>||d"<t|j d#t@||d#<t|j d$tB||d$<t|j d%tD||d%<t|j d&tF||d&<t|j d'tH||d'<t|j d(tJ||d(<t|j d)tL||d)<t|j d*tN||d*<t|j d+tP||d+<t|j d,tR||d,<t|j d-tT||d-<t|j d.tV||d.<t|j d/tX||d/<t|j d0tZ||d0<t|j d1t\||d1<t|j d2t^||d2<t|j d3t`||d3<t|j d4tb||d4<t|j d5td||d5<t|j d6tf||d6<t|j d7th||d7<d8d9l5m6}m7}m8}m9}d8d:l:m;}d8d;l} d8d|||d><t|j d?|||d?<t|j d@|||d@<t|j dAt||dA<t|j dB| ||dB<t|j dC| ||dC<t|j dD|||dD<t|j dEt"||dE<t|j dFt||dF<t|j dGt||dG<t|j dHt||dH<t|j dIt||dI<t|j dJt||dJ<t|j dKt||dK<t|j dLt||dL<t|j dM| ||dM<t|j dN|||dN<t|j dO|||dO<t|j dP|||dP<t|j dQ| ||dQ<t|j dR| ||dR<i}dSD]}|j |x}s||i}t|9|||TS)UrfromNrrrrrrrrrrrrrrrr r rrrrrrrrrrrrrrrrr r rr rrrrrrrrrrrrrrrrr)rYrZr[r\)rf)rWro)rhrirjrkrlrnrrrrrrrrrrrrrrrrrrrrrr) user_shared forward_fromforward_from_chatforward_from_message_idforward_signatureforward_sender_name forward_dater)Orr<r9popr8rr r:r)rr=rrrr#rrr5rrrrrrr(rr-r/r,r0rr1r%rMrNrKrLrOrrr rr!r"rPr4r3r r*r.r$r7r+telegram._giveawayrYrZr[r\telegram._messageoriginrftelegram._replyrWrotelegram._suggestedpostrhrirjrkrlrnr'r rr rr rrr)rrrrrYrZr[r\rfrWrorhrirjrkrlrnrkeyentryrs r}rzMessage.de_jsons t$2#6 ,TXXfd-CT3O[.txx /FcR]+DHHZ,@-QTUZ#3 HH' (-$   $4DHH=O4PRY[^#_  *488K+@T[('):E3GW +DHHZ,@(CPZ,TXXk-BIsS['(8$DV ('):IsKW *488I+>MY('):E3GW ('):E3GW ('):E3GW -dhh|.DiQTU\*488I+>MY+DHHZ,@(CPZ('):E3GW #3DHH=O4PRVX[#\  #3DHH=O4PRVX[#\  !1$((;K2LiY\!] 4D HH8 9;XZ]5  01"2 HH% &(@#"  +488I+>MY%5 HH) *,=s&  !"!1/1JLZ] ^_'(8$DV '(8$DV *488I+>cJY,< HH0 13JC-  () 0 HH^ $&:C ^(8 HH+ ,.@#(  #$&6 HH) *,'  "#(8 HH+ ,.@#(  #$&6 HH) *, HH1 24KS.  )*0@ HH3 46OQT0  +,(8 HH+ ,.@#(  #$ 00H+WZ[^.txx /F TWX]&6 HH* +^S'  "#.dhh|.DmUXY\#3 HH' (/3$   ((8(CHV .txx /FX[\]-= HH1 24KS.  )*       ,DHHZ,@(CPZ%5 HH) *,=s&  !"$4 HH' (/3$   $4 HH' (/3$   (8 HH+ ,.@#(  #$"2 HH% &(93"  )'):IsKW !1$((;K2Lm]`!a !1$((;K2LeUX!Y .txx /FX[\]&6txx@U7VX\^a&b "#/? HH3 46OQT0  +,-TXXk-BIsS['7 HH+ ,.@#(  #$)9 HH, -/BC)  $%)9 HH, -/BC)  $%+; HH. /1F+  &''7 HH* +->'  "#+; HH. /1F+  &''7 HH* +->'  "#+; HH. /1F+  &'2B HH5 68SUX2  -.  *C %u%!5\  *w3:   r|ct|jts |jStD]H}||s |||_|tjk(rt t ddd|jSd|_|jS)aQIf the message is a user generated content which is not a plain text message, this property is set to this content. It may be one of * :class:`telegram.Audio` * :class:`telegram.Dice` * :class:`telegram.Contact` * :class:`telegram.Document` * :class:`telegram.Animation` * :class:`telegram.Game` * :class:`telegram.Invoice` * :class:`telegram.Location` * :class:`telegram.PassportData` * list[:class:`telegram.PhotoSize`] * :class:`telegram.PaidMediaInfo` * :class:`telegram.Poll` * :class:`telegram.Sticker` * :class:`telegram.Story` * :class:`telegram.SuccessfulPayment` * :class:`telegram.Venue` * :class:`telegram.Video` * :class:`telegram.VideoNote` * :class:`telegram.Voice` Otherwise :obj:`None` is returned. .. seealso:: :wiki:`Working with Files and Media ` .. versionchanged:: 20.0 :attr:`dice`, :attr:`passport_data` and :attr:`poll` are now also considered to be an attachment. .. versionchanged:: 21.4 :attr:`paid_media` is now also considered to be an attachment. .. deprecated:: 21.4 :attr:`successful_payment` will be removed in future major versions. z21.4zVsuccessful_payment will no longer be considered an attachment in future major versions) stacklevelN) isinstancerr?rRSUCCESSFUL_PAYMENTrJrU)rattachment_types r}effective_attachmentzMessage.effective_attachments~$44lC-- -4 .OO$-1/-B*"&;&N&NN-"5 $% )))! .*.D &)))r|do_quoteallow_sending_without_replycv||rt|j|Syt|jdr?|jjr%|jjj }nd}|'|j jtjk7s|rt|j|Sy)z3Modify kwargs for replying with or without quoting.N)r7defaults) r2rhasattrget_botr9r6rrr r)rr6r7 default_quotes r} _do_quotezMessage._do_quotes  &OOA\ t||~z2t||~7N7N $  7 7 @ @ $ %$))..DLL*H]&OOA\r|index.c |jxs |jx}s td|jtj }|jtj }|xsd}t tjtj||}t|x}|dzkrtd|d|d|dt|d||jd z} t|d z}| |z} g} |jxs |jD]} | | j| j zks | j| ks0t#d| j| z } t%| | j| j zt#| | jz }|dkr| j&Dcic]}|t)| |}}| |d <||d <| j+t-d i|| t/| xsdfScc}w) a Use this function to compute position and entities of a quote in the message text or caption. Useful for filling the parameters :paramref:`~telegram.ReplyParameters.quote_position` and :paramref:`~telegram.ReplyParameters.quote_entities` of :class:`telegram.ReplyParameters` when replying to a message. Example: Given a message with the text ``"Hello, world! Hello, world!"``, the following code will return the position and entities of the second occurrence of ``"Hello, world!"``. .. code-block:: python message.compute_quote_position_and_entities("Hello, world!", 1) .. versionadded:: 20.8 Args: quote (:obj:`str`): Part of the message which is to be quoted. This is expected to have plain text without formatting entities. index (:obj:`int`, optional): 0-based index of the occurrence of the quote in the message. If not specified, the first occurrence is used. Returns: tuple[:obj:`int`, :obj:`None` | tuple[:class:`~telegram.MessageEntity`, ...]]: On success, a tuple containing information about quote position and entities is returned. Raises: RuntimeError: If the message has neither :attr:`text` nor :attr:`caption`. ValueError: If the requested index of quote doesn't exist in the message. z*This message has neither text nor caption.rzYou requested the z-th occurrence of 'z', but this text appears only z times.Nr0offsetlengthr{)rr RuntimeErrorencoderB UTF_16_LElistrefinditerrlen ValueErrorstartrrrArBmaxminrwgetattrappendr)tuple)rrr>r utf16_text utf16_quoteeffective_indexmatchesrBposition end_positionrentityrAe_lengthattrkwargss r}#compute_quote_position_and_entitiesz+Message.compute_quote_position_and_entitiessF2dll33KL L[[!7!78 ll<#9#9: *1r{{299[#9:FG'l "Fo&9 9$UG+>ugFxw(  z"DGO$<$B$B$DEF!K[!Q&&( mmrJrrr2r2dictr=)rr6rersr7rreffective_reply_parameterss r}_parse_quote_argumentszMessage._parse_quote_argumentss 'l :?O?[^   */?/KV $(<<  ')9 &$222#! ,)8.,G* & 222$ '*,> * *22D)E &y)G222*.B])^ &222sBBrrct|ts|S|jsy||j|jj hvr |j SdSN)r2r?rrrrrr)rrrrs r}_parse_message_thread_idz Message._parse_message_thread_idsQ +\:$ $ $$*1T\\499CUCU4V)Vt%%`\``r|cJ|jr|jjSdS)zBReturn the topic id of the direct messages chat, if it is present.N)rtopic_idrs r}!_extract_direct_messages_topic_idz)Message._extract_direct_messages_topic_ids"6:6P6Pt))22ZVZZr|) rer7disable_web_page_previewr6 read_timeout write_timeoutconnect_timeout pool_timeoutr parse_modedisable_notificationprotect_contentr'message_effect_idallow_paid_broadcastsuggested_post_parametersrmrprqrrrsrtc K|j|| | |d{\}}|j||}|jj|||||||||||||||||j| | |j | d{S7m7w)anShortcut for:: await bot.send_message( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_message`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. Nrrrrurprrvrsrrrwrrqrrrsrtrrrxrydirect_messages_topic_idrz)rirlr; send_messagerro)rrrurvrrrwrrrsrxryrzrer7rpr6rqrrrsrtrrrrhs r} reply_textzMessage.reply_textsj594O4O )+;=X5 / ++!99'CTU\\^00!%=!5!57%+/%'+%!#'#>#>/!5%)%K%K%M&?+1   /  "B BA(B B B  B c 8K|j|| || d{\}}|j||}|jj||tj ||||||||||||||j | | |j| d{S7{7w)aShortcut for:: await bot.send_message( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, parse_mode=ParseMode.MARKDOWN, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) Sends a message with Markdown version 1 formatting. For the documentation of the arguments, please see :meth:`telegram.Bot.send_message`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Note: :tg-const:`telegram.constants.ParseMode.MARKDOWN` is a legacy mode, retained by Telegram for backward compatibility. You should use :meth:`reply_markdown_v2` instead. Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. Nr|)rirlr;r~rSMARKDOWNrrorrrvrrrwrrrsrxryrzrer7rpr6rqrrrsrtrrrrhs r}reply_markdownzMessage.reply_markdown$st594O4O )+;=X5 / ++!99'CTU\\^00 ))%=!5!57%+/%'+%!#'#>#>/!5%)%K%K%M&?+1   /  "BBA6BBBBc 8K|j|| || d{\}}|j||}|jj||tj ||||||||||||||j | | |j| d{S7{7w)aShortcut for:: await bot.send_message( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, parse_mode=ParseMode.MARKDOWN_V2, direct_messages_topic_id=self.direct_messages_topic.topic_id, business_connection_id=self.business_connection_id, *args, **kwargs, ) Sends a message with markdown version 2 formatting. For the documentation of the arguments, please see :meth:`telegram.Bot.send_message`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. Nr|)rirlr;r~rS MARKDOWN_V2rrors r}reply_markdown_v2zMessage.reply_markdown_v2zsl594O4O )+;=X5 / ++!99'CTU\\^00 ,,%=!5!57%+/%'+%!#'#>#>/!5%)%K%K%M&?+1   /  rc 8K|j|| || d{\}}|j||}|jj||tj ||||||||||||||j | | |j| d{S7{7w)aShortcut for:: await bot.send_message( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, parse_mode=ParseMode.HTML, direct_messages_topic_id=self.direct_messages_topic.topic_id, business_connection_id=self.business_connection_id, *args, **kwargs, ) Sends a message with HTML formatting. For the documentation of the arguments, please see :meth:`telegram.Bot.send_message`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. Nr|)rirlr;r~rSHTMLrrors r} reply_htmlzMessage.reply_htmlsl594O4O )+;=X5 / ++!99'CTU\\^00 ~~%=!5!57%+/%'+%!#'#>#>/!5%)%K%K%M&?+1   /  r) rer7r6rqrrrsrtrrrurmedia)r^r_r`ra)r.c K|j| ||| d{\}}|j||}|jj||||| | | ||||||||j|||j d{S7j7w)aShortcut for:: await bot.send_media_group( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_media_group`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: tuple[:class:`telegram.Message`]: An array of the sent Messages. Raises: :class:`telegram.error.TelegramError` N)rrrrvrsrqrrrsrtrrwrrrurrrxryr})rirlr;send_media_grouprro)rrrvrwrrsrxryrer7r6rqrrrsrtrrrurrrrhs r}reply_media_groupzMessage.reply_media_group sl594O4O )+;=X5 / ++!99'CTU\\^44!57%'+%!+/!-#'#>#>/!5%)%K%K%M%5   /  "B BA%B BB B ) rer7filenamer6rqrrrsrtrr has_spoilerrc  K|j||| |d{\}}|j||}|jj||||||||||||||||| |j| | | |j |d{S7o7w)ajShortcut for:: await bot.send_photo( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_photo`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrvrsrrurrrwrrqrrrsrtrrrrxryrr}rz)rirlr; send_photorro)rrrrvrrurrwrrrsrxryrrzrer7rr6rqrrrsrtrrrrhs r} reply_photozMessage.reply_photom sn594O4O )+;=X5 / ++!99'CTU\\^..!57%!-+/%'+%!##'#>#>/!5%=%)%K%K%M&?//   /  "BB A*BB B Brduration performertitle thumbnailc $K|j||| |d{\}}|j|| } |jj||||||||||| || | |||||| |j|||j |d{S7q7w)ajShortcut for:: await bot.send_audio( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_audio`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrrrrvrsrrurrrwrrqrrrsrtrrrrxryr}rz)rirlr; send_audiorro)rrrrrrrvrrurrwrrrsrxryrzrer7rr6rqrrrsrtrrrrhs r} reply_audiozMessage.reply_audio sr594O4O )+;=X5 / ++!99'CTU\\^..!57%!-+/%'+%!#'#>#>/!5%)%K%K%M&?3/   /  "BB A,BBBBrdisable_content_type_detectionc  K|j||| |d{\}}|j|| } |jj||||||||||||||||| | |j| | |j |d{S7o7w)apShortcut for:: await bot.send_document( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_document`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrrvrsrrqrrrsrtrurrrrwrrrrxryr}rz)rirlr; send_documentrro)rrrrvrrurrrwrrrsrxryrzrer7rr6rqrrrsrtrrrrhs r}reply_documentzMessage.reply_document sn594O4O )+;=X5 / ++!99'CTU\\^11!57%%'+%!!+I-+/#'#>#>/!5%)%K%K%M&?/2   /  rrwidthheightc (K|j||||d{\}}|j|| } |jj|||||||||||||||| || | | | |j||||j |d{S7s7w)arShortcut for:: await bot.send_animation( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_animation`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrrrrurvrsrrqrrrsrtrrrrwrrrrrxryrr}rz)rirlr;send_animationrro)rrrrrrrurvrrrwrrrrsrxryrrzrer7rr6rqrrrsrtrrrrhs r}reply_animationzMessage.reply_animationp sv594O4O )+;=X5 / ++!99'CTU\\^22!!57%%'+%!-+/##'#>#>/!5%=%)%K%K%M&?73   /  s"BBA.B B BB)rer7r6rqrrrsrtrremojic K|j| | || d{\}}|j||}|jj||||||||||||||j|| |j | d{S7j7w)anShortcut for:: await bot.send_sticker( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_sticker`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrvrsrrqrrrsrtrrwrrrrxryr}rz)rirlr; send_stickerrro)rrrvrrwrrrsrxryrzrer7r6rqrrrsrtrrrrhs r} reply_stickerzMessage.reply_sticker sd594O4O )+;=X5 / ++!99'CTU\\^00!57%%'+%!+/#'#>#>/!5%)%K%K%M&?%1   /  rrsupports_streamingcoverstart_timestampc K|j||||d{\}} |j|| } |jjd id|d|d|d|d|d| d|d |d |d |d |d |d|d|d| d|d| d|d| d| d| d|d|d|d|jd|d|d|d|j d|d{S77w)!ajShortcut for:: await bot.send_video( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_video`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. Nrrrrrrvrsrrqrrrsrtrrrurrrrrwrrrrrrrxryrr}rzr{)rirlr; send_videorro)!rrrrrvrrrrurrrwrrrrsrxryrrrrzrer7rr6rqrrrsrtrrrrhs! r} reply_videozMessage.reply_video s|594O4O )+;=X5 / ++!99'CTU.T\\^..      "6  8  & & ( , &   "  2 "! ".# $% &,' (0) *$+ , - ./ 0,1 2$(#>#>3 405 6"67 8&>9 :&*%K%K%M; <'@=   /  s"CC B,CCCCrrBc K|j|| | |d{\}}|j||}|jj|||||||||||||||||j| | |j | d{S7m7w)atShortcut for:: await bot.send_video_note( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_video_note`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrr rrBrvrsrrqrrrsrtrrrwrrrrxryr}rz)rirlr;send_video_noterro)rr rrBrvrrwrrrsrxryrzrer7rr6rqrrrsrtrrrrhs r}reply_video_notezMessage.reply_video_note{ sj594O4O )+;=X5 / ++!99'CTU\\^33!!57%%'+%!+/#'#>#>/!5%)%K%K%M&?+4   /  rrc K|j||| |d{\}}|j|| } |jj||||||||||||||||| |j| | |j | d{S7n7w)ajShortcut for:: await bot.send_voice( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_voice`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrr rrrvrsrrqrrrsrtrurrrrwrrrxryr}rz)rirlr; send_voicerro)rr rrrvrrurrwrrsrxryrzrer7rr6rqrrrsrtrrrrhs r} reply_voicezMessage.reply_voice sl594O4O )+;=X5 / ++!99'CTU\\^..!57%%'+%!!-+/#'#>#>/!5%)%K%K%M&?-/   /  "B B A)B B B  B ) rer7rr6rqrrrsrtrlatitude longitude live_periodhorizontal_accuracyheadingproximity_alert_radiusc  K|j||| |d{\}}|j|| } |jj||||||||||||||||| | |j| | |j |d{S7o7w)apShortcut for:: await bot.send_location( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_location`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrvrsrrqrrrsrtrrrrrrrwrrrxryr}rz)rirlr; send_locationrro)rrrrvrrrrrrwrrsrxryrzrer7rr6rqrrrsrtrrrrhs r}reply_locationzMessage.reply_location sn594O4O )+;=X5 / ++!99'CTU\\^11!57%%'+%#! 3#9+/#'#>#>/!5%)%K%K%M&?/2   /  r) rer7rr6rqrrrsrtraddress foursquare_idfoursquare_typegoogle_place_idgoogle_place_typec $K|j||| |d{\}}|j|| } |jj||||||||||||||||| | | | |j|||j |d{S7q7w)ajShortcut for:: await bot.send_venue( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_venue`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrrrrvrsrrqrrrsrtrrrrrrwrrrxryr}rz)rirlr; send_venuerro)rrrrrrrvrrrrrwrrsrxryrzrer7rr6rqrrrsrtrrrrhs r} reply_venuezMessage.reply_venuet sr594O4O )+;=X5 / ++!99'CTU\\^..'!57%%'+%+!+/+/#'#>#>/!5%)%K%K%M&?3/   /  r) rer7rr6rqrrrsrtr phone_number first_name last_namevcardc K|j|| | |d{\}}|j||}|jj|||||||||||||||||j| |j | | d{S7m7w)anShortcut for:: await bot.send_contact( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_contact`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrrvrsrrqrrrsrtrrrrwrrrxr}ryrz)rirlr; send_contactrro)rrrrrvrrrwrrsrxryrzrer7rr6rqrrrsrtrrrrhs r} reply_contactzMessage.reply_contact sj594O4O )+;=X5 / ++!99'CTU\\^00%!!57%%'+%!+/#'#>#>/%)%K%K%M!5&?+1   /  rquestionoptionsrc is_anonymousrallows_multiple_answerscorrect_option_id is_closed explanationexplanation_parse_mode open_period close_dateexplanation_entitiesquestion_parse_modequestion_entitiescK|j||||d{\}}|j||}|jj||||||||||| ||||| | | | |||||j||||d{S7f7w)aShortcut for:: await bot.send_poll( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_poll`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrrrrrrrvrsrrqrrrsrtrrrrrrrwrrrrrxry)rirlr; send_pollr) rrrrrrrrrvrrrrrrrwrrsrrrxryrer7r6rqrrrsrtrrrrhs r} reply_pollzMessage.reply_poll sx594O4O )+;=X5 / ++!99'CTU\\^--%$;/!57%%'+%##9#!!!5+/#'#>#> 3//!59.   /  s"BBA!B<B=BBc K|j| | || d{\}}|j||}|jj||||| ||||||||j|||j | d{S7i7w)ahShortcut for:: await bot.send_dice( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_dice`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrvrsrrqrrrsrtrrrwrrrxryr}rz)rirlr; send_dicerro)rrvrrrwrrsrxryrzrer7r6rqrrrsrtrrrrhs r} reply_dicezMessage.reply_dice} sb594O4O )+;=X5 / ++!99'CTU\\^--!57%%'+%!+/#'#>#>/!5%)%K%K%M&?#.   /  s"BBA$B?BBBr%cK|j| |||d{\}}|jj|j|||||| | | | ||| d{S7E7w)aPShortcut for:: await bot.send_checklist( business_connection_id=self.business_connection_id, chat_id=update.effective_message.chat_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_checklist`. .. versionadded:: 22.3 Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| Returns: :class:`telegram.Message`: On success, instance representing the message posted. N) rrrrrvrsrrqrrrsrtrrwrx)rir;send_checklistr)rrrvrwrxrsrrer7r6rqrrrsrtrrrrhs r}reply_checklistzMessage.reply_checklist sL594O4O )+;=X5 / ++\\^22#'#>#>!57%%'+%!+/3   /  s"A$A AA$A"A$"A$)rqrrrsrtractionc K|jj|j|j|j||||||||j d{S7w)adShortcut for:: await bot.send_chat_action( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_chat_action`. .. versionchanged:: 21.1 |reply_same_thread| .. versionadded:: 13.2 Returns: :obj:`bool`: On success, :obj:`True` is returned. ) rrrrrqrrrsrtrrN)r;send_chat_actionrrrlr)rrrrqrrrsrtrs r}reply_chat_actionzMessage.reply_chat_action sh@\\^44LL";;DLLJ[\%'+%!#'#>#>5    sAA#A!A#game_short_namec K|j| | || d{\}}|j||}|jj|||||| | ||||||j||d{S7Y7w)a9Shortcut for:: await bot.send_game( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=self.business_connection_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_game`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 .. versionadded:: 13.2 Returns: :class:`telegram.Message`: On success, instance representing the message posted. N)rrrrvrsrrqrrrsrtrrwrrrxry)rirlr; send_gamer)rrrvrrwrrsrxryrer7r6rqrrrsrtrrrrhs r} reply_gamezMessage.reply_game+sb594O4O )+;=X5 / ++!99'CTU\\^--+!57%%'+%!+/#'#>#>/!5.   /  s"A8A4AA8/A60A86A8 descriptionpayloadcurrencypricesrdprovider_tokenstart_parameter photo_url photo_size photo_width photo_height need_nameneed_phone_number need_emailneed_shipping_address is_flexible provider_datasend_phone_number_to_providersend_email_to_providermax_tip_amountsuggested_tip_amountscK|j| |||d{\}&}'|j|&|}|jjd&id|&d|d|d|d|d|d|d |d |d | d | d | d| d| d|d|d|d|d|'d|d|d|d|d|!d|"d|#d|$d|%d|d|d |d!|d"|d#|d$|j d%|d{S77w)'a1Shortcut for:: await bot.send_invoice( update.effective_message.chat_id, message_thread_id=update.effective_message.message_thread_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_invoice`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Warning: As of API 5.2 :paramref:`start_parameter ` is an optional argument and therefore the order of the arguments had to be changed. Use keyword arguments to make sure that the arguments are passed correctly. .. versionadded:: 13.2 .. versionchanged:: 13.5 As of Bot API 5.2, the parameter :paramref:`start_parameter ` is optional. Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.Message`: On success, instance representing the message posted. Nrrrrrrrrrrrrrrrrrrrvrsrrrrrqrrrsrtrrrrwrrxryr}rzr{)rirlr; send_invoicero)(rrrrrrrrrrrrrrrrrrvrrrrrrrwrrsrxryrzrer7r6rqrrrsrtrrrrhs( r} reply_invoicezMessage.reply_invoicers`594O4O )+;=X5 / ++!99'CTU0T\\^00% % % $%  % * %  % % ,%  % "% $% &%  % 0% "% #8!% "$#% $"6%% &8'% (&)% *(+% ,+H-% .$:/% 0&1% 2(3% 4,5% 6&7% 8"9% :*;% <#8=% >,?% @0A% B0C% D"6E% F&*%K%K%MG% H'@I% % % / % s"CCB4CCCCvideo_start_timestampcK|jj||j|j|||||||| | | |j d{S7w)aShortcut for:: await bot.forward_message( from_chat_id=update.effective_message.chat_id, message_id=update.effective_message.message_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.forward_message`. Note: Since the release of Bot API 5.5 it can be impossible to forward messages from some chats. Use the attributes :attr:`telegram.Message.has_protected_content` and :attr:`telegram.ChatFullInfo.has_protected_content` to check this. As a workaround, it is still possible to use :meth:`copy`. However, this behaviour is undocumented and might be changed by Telegram. Returns: :class:`telegram.Message`: On success, instance representing the message forwarded. )rr from_chat_idrrrvrwrrzrqrrrsrtrr}N)r;forward_messagerrrro) rrrrvrwrrrzrqrrrsrtrs r}forwardzMessage.forwardslN\\^33"7!5+/&?%'+%!%)%K%K%M4    sAAAA)rer7rqrrrsrtrrecK|jj||j|j|| ||||| |||||||||| | |j | d{S7w)aBShortcut for:: await bot.copy_message( chat_id=chat_id, from_chat_id=update.effective_message.chat_id, message_id=update.effective_message.message_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.copy_message`. Returns: :class:`telegram.MessageId`: On success, returns the MessageId of the sent message. )rrrrrrrurrvrersr7rrqrrrsrtrrwrrryr}rzN)r; copy_messagerrrro)rrrrrurrvrrwrrsrryrrzrer7rqrrrsrtrs r}copyz Message.copy%sR\\^00"7!-!5 3-(C%%'+%!+/%=!5%)%K%K%M&?/1    sAA%A#A%rcK|j||| |d{\}}|j|| } |jj||||| |||||||||||| | | |j |d{S7c7w)aJShortcut for:: await bot.copy_message( chat_id=message.chat.id, message_thread_id=update.effective_message.message_thread_id, message_id=message_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.copy_message`. .. versionchanged:: 21.1 |reply_same_thread| .. versionchanged:: 22.0 |quote_removed| Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| .. versionadded:: 20.8 Returns: :class:`telegram.MessageId`: On success, returns the MessageId of the sent message. N)rrrrrrrurrvrsrrqrrrsrtrrwrrryr}rz)rirlr;r ro)rrrrrurrvrrwrrsrryrrzrer7r6rqrrrsrtrrrrhs r} reply_copyzMessage.reply_copyhsl594O4O )+;=X5 / ++!99'CTU\\^00%!"7!-!57%%'+%!+/%=!5%)%K%K%M&?+1   /  s"BA>AB9B:BB star_countrbcK|j||| |d{\}}|j||}|jj||||| |j||||| |||||||| |j | |d{S7n7w)aShortcut for:: await bot.send_paid_media( chat_id=message.chat.id, message_thread_id=update.effective_message.message_thread_id, business_connection_id=message.business_connection_id, direct_messages_topic_id=self.direct_messages_topic.topic_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.send_paid_media`. .. versionadded:: 21.7 Keyword Args: do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote| Returns: :class:`telegram.Message`: On success, the sent message is returned. N)rrrrrrrrurrvrsrrqrrrsrtrrwrryr}rzr)rirlr;send_paid_mediarro)rrrrrurrrvrwrsrrryrzrrer7r6rqrrrsrtrrrrhs r}reply_paid_mediazMessage.reply_paid_medias`594O4O )+;=X5 / ++!99'CTU\\^33!#'#>#>!-!57%%'+%!+%=!5%)%K%K%M&?/-4   /  r)rprqrrrsrtrcK|jj|j|j|||||||| | | |d|jd{S7w)aShortcut for:: await bot.edit_message_text( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_text`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Message`: On success, if edited message is sent by the bot, the edited Message is returned, otherwise ``True`` is returned. N)rrrrrurprrrqrrrsrtrrinline_message_idr)r;edit_message_textrrrr) rrrurrrrprqrrrsrtrs r} edit_textzMessage.edit_textslN\\^55LL!%=!5%%'+%!"#'#>#>6    sAAAAcK|jj|j|j|||||| || |d||jd{S7w)aShortcut for:: await bot.edit_message_caption( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_caption`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Message`: On success, if edited message is sent by the bot, the edited Message is returned, otherwise ``True`` is returned. N)rrrrrrqrrrsrtrurrrrr)r;edit_message_captionrrrr) rrrrurrrqrrrsrtrs r} edit_captionzMessage.edit_caption@siN\\^88LL%%'+%!!-"%=#'#>#>9    sAAAAc K|jj|j|j|j||||||| d{S7w)a*Shortcut for:: await bot.edit_message_checklist( business_connection_id=message.business_connection_id, chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_checklist`. .. versionadded:: 22.3 Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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. Returns: :class:`telegram.Message`: On success, the edited Message is returned. ) rrrrrrrqrrrsrtrN)r;edit_message_checklistrrrr)rrrrqrrrsrtrs r}edit_checklistzMessage.edit_checklistxs]D\\^::#'#>#>LL%%'+%!;    A A AAr]c K|jj||j|j||||||d|j d{S7w)aShortcut for:: await bot.edit_message_media( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_media`. Note: You can only edit messages that the bot sent itself(i.e. of the ``bot.send_*`` family 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:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Message`: On success, if edited message is not an inline message, the edited Message is returned, otherwise ``True`` is returned. N) rrrrrrqrrrsrtrrr)r;edit_message_mediarrrr)rrrrqrrrsrtrs r} edit_mediazMessage.edit_medias`H\\^66LL%%'+%!"#'#>#>7    sA AAAc K|jj|j|j||||||d|j d{S7w)aShortcut for:: await bot.edit_message_reply_markup( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_reply_markup`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Message`: On success, if edited message is sent by the bot, the edited Message is returned, otherwise ``True`` is returned. N rrrrrqrrrsrtrrr)r;edit_message_reply_markuprrrrrrrqrrrsrtrs r}edit_reply_markupzMessage.edit_reply_markups]D\\^==LL%%'+%!"#'#>#>>    r)rrqrrrsrtrcK|jj|j|j||||| | | | | ||||d|jd{S7w)aShortcut for:: await bot.edit_message_live_location( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_live_location`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Message`: On success, if edited message is sent by the bot, the edited Message is returned, otherwise :obj:`True` is returned. N)rrrrrrrrqrrrsrtrrrrrrr)r;edit_message_live_locationrrrr)rrrrrrrrrrqrrrsrtrs r}edit_live_locationzMessage.edit_live_locationsrR\\^>>LL%%'+%! 3#9#"#'#>#>#?    sAAAAc K|jj|j|j||||||d|j d{S7w)aShortcut for:: await bot.stop_message_live_location( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.stop_message_live_location`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Message`: On success, if edited message is sent by the bot, the edited Message is returned, otherwise :obj:`True` is returned. Nr#)r;stop_message_live_locationrrrrr%s r}stop_live_locationzMessage.stop_live_locationEs]D\\^>>LL%%'+%!"#'#>#>?    ruser_idscoreforcedisable_edit_messagecK|jj|j|j||||||||| d d{S7w)aShortcut for:: await bot.set_game_score( chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.set_game_score`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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. Returns: :class:`telegram.Message`: On success, if edited message is sent by the bot, the edited Message is returned, otherwise :obj:`True` is returned. N) rrrr-r.r/r0rqrrrsrtrr)r;set_game_scorerrr) rr-r.r/r0rqrrrsrtrs r}r2zMessage.set_game_scorets\<\\^22LL!5%'+%!"3    sAA A A )rX.c K|jj|j|j||||||d d{S7w)a{Shortcut for:: await bot.get_game_high_scores( chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.get_game_high_scores`. Note: You can only edit messages that the bot sent itself (i.e. of the ``bot.send_*`` family 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. Returns: tuple[:class:`telegram.GameHighScore`] N) rrrr-rqrrrsrtrr)r;get_game_high_scoresrrr)rr-rqrrrsrtrs r}r4zMessage.get_game_high_scoressS6\\^88LL%'+%!"9    AA AA c 4K|jrC|jj|j|jg|||||d{S|jj |j |j|||||d{S7F7w)ahShortcut for either:: await bot.delete_message( chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs ) or:: await bot.delete_business_messages( business_connection_id=self.business_connection_id, message_ids=[self.message_id], *args, **kwargs, ) For the documentation of the arguments, please see :meth:`telegram.Bot.delete_message` and :meth:`telegram.Bot.delete_business_messages`. .. versionchanged:: 22.4 Calls either :meth:`telegram.Bot.delete_message` or :meth:`telegram.Bot.delete_business_messages` based on :attr:`business_connection_id`. Returns: :obj:`bool`: On success, :obj:`True` is returned. )r message_idsrqrrrsrtrN)rrrrqrrrsrtr)rr;delete_business_messagesrdelete_messagerrrrqrrrsrtrs r}deletezMessage.deletesH  & &@@'+'B'B!__-)+ /)%A \\^22LL%'+%!3    s%A B BABBBBc K|jj|j|j|||||||j d{S7w)aOShortcut for:: await bot.stop_poll( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.stop_poll`. .. versionchanged:: 21.4 Now also passes :attr:`business_connection_id`. Returns: :class:`telegram.Poll`: On success, the stopped Poll with the final results is returned. ) rrrrrqrrrsrtrrN)r; stop_pollrrrrr%s r}r=zMessage.stop_pollsY:\\^--LL%%'+%!#'#>#>.    A A A Ac K|jj|j|j|j|||||| d{S7w)a`Shortcut for:: await bot.pin_chat_message( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.pin_chat_message`. .. versionchanged:: 21.5 Now also passes :attr:`business_connection_id` to :meth:`telegram.Bot.pin_chat_message`. Returns: :obj:`bool`: On success, :obj:`True` is returned. ) rrrrrvrqrrrsrtrN)r;pin_chat_messagerrrr)rrvrqrrrsrtrs r}pinz Message.pin)sY:\\^44LL#'#>#>!5%'+%!5    r>c K|jj|j|j|j|||||d{S7w)adShortcut for:: await bot.unpin_chat_message( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.unpin_chat_message`. .. versionchanged:: 21.5 Now also passes :attr:`business_connection_id` to :meth:`telegram.Bot.pin_chat_message`. Returns: :obj:`bool`: On success, :obj:`True` is returned. rrrrrqrrrsrtrN)r;unpin_chat_messagerrrrr:s r}unpinz Message.unpinRsV8\\^66LL#'#>#>%'+%!7    A A A Anameicon_custom_emoji_idc K|jj|j|j||||||| d{S7w)aShortcut for:: await bot.edit_forum_topic( chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.edit_forum_topic`. .. versionadded:: 20.0 Returns: :obj:`bool`: On success, :obj:`True` is returned. ) rrrrGrHrqrrrsrtrN)r;edit_forum_topicrrr)rrGrHrqrrrsrtrs r}rJzMessage.edit_forum_topicysU4\\^44LL"44!5%'+%!5    r5c K|jj|j|j|||||d{S7w)aShortcut for:: await bot.close_forum_topic( chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.close_forum_topic`. .. versionadded:: 20.0 Returns: :obj:`bool`: On success, :obj:`True` is returned. rrrrqrrrsrtrN)r;close_forum_topicrrrr:s r}rMzMessage.close_forum_topicsO0\\^55LL"44%'+%!6    >AAAc K|jj|j|j|||||d{S7w)aShortcut for:: await bot.reopen_forum_topic( chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.reopen_forum_topic`. .. versionadded:: 20.0 Returns: :obj:`bool`: On success, :obj:`True` is returned. rLN)r;reopen_forum_topicrrrr:s r}rPzMessage.reopen_forum_topicO0\\^66LL"44%'+%!7    rNc K|jj|j|j|||||d{S7w)aShortcut for:: await bot.delete_forum_topic( chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.delete_forum_topic`. .. versionadded:: 20.0 Returns: :obj:`bool`: On success, :obj:`True` is returned. rLN)r;delete_forum_topicrrrr:s r}rSzMessage.delete_forum_topicrQrNc K|jj|j|j|||||d{S7w)aShortcut for:: await bot.unpin_all_forum_topic_messages( chat_id=message.chat_id, message_thread_id=message.message_thread_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.unpin_all_forum_topic_messages`. .. versionadded:: 20.0 Returns: :obj:`bool`: On success, :obj:`True` is returned. rLN)r;unpin_all_forum_topic_messagesrrrr:s r}rUz&Message.unpin_all_forum_topic_messagessP0\\^BBLL"44%'+%!C    rNreactionrgis_bigc K|jj|j|j||||||| d{S7w)a{Shortcut for:: await bot.set_message_reaction(chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs) For the documentation of the arguments, please see :meth:`telegram.Bot.set_message_reaction`. .. versionadded:: 20.8 Returns: :obj:`bool` On success, :obj:`True` is returned. ) rrrrVrWrqrrrsrtrN)r;set_message_reactionrrr)rrVrWrqrrrsrtrs r} set_reactionzMessage.set_reaction'sS4\\^88LL%'+%!9    r5c K|jj|j|j|j|||||d{S7w)aShortcut for:: await bot.read_business_message( chat_id=message.chat_id, message_id=message.message_id, business_connection_id=message.business_connection_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.read_business_message`. .. versionadded:: 22.1 Returns: :obj:`bool` On success, :obj:`True` is returned. rCN)r;read_business_messagerrrrr:s r}r\zMessage.read_business_messageMsV4\\^99LL#'#>#>%'+%!:    rF send_datec K|jj|j|j||||||d{S7w)aShortcut for:: await bot.approve_suggested_post( chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.approve_suggested_post`. .. versionadded:: 22.4 Returns: :obj:`bool` On success, :obj:`True` is returned. )rrrr]rqrrrsrtrN)r;approve_suggested_postrrr)rr]rqrrrsrtrs r}r_zMessage.approve_suggested_postrsP4\\^::LL%'+%!;    ?AAAcommentc K|jj|j|j||||||d{S7w)aShortcut for:: await bot.decline_suggested_post( chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs ) For the documentation of the arguments, please see :meth:`telegram.Bot.decline_suggested_post`. .. versionadded:: 22.4 Returns: :obj:`bool` On success, :obj:`True` is returned. )rrrrarqrrrsrtrN)r;decline_suggested_postrrr)rrarqrrrsrtrs r}rczMessage.decline_suggested_postsP4\\^::LL%'+%!;    r`rWc\|js tdt|j|S)aReturns the text from a given :class:`telegram.MessageEntity`. Note: This method is present because Telegram calculates the offset and length in UTF-16 codepoint pairs, which some versions of Python don't handle automatically. (That is, you can't just slice ``Message.text`` with the offset and length.) Args: entity (:class:`telegram.MessageEntity`): The entity to extract the text from. It must be an entity that belongs to this message. Returns: :obj:`str`: The text of the given entity. Raises: RuntimeError: If the message has no text. zThis Message has no 'text'.)rrCrArrWs r} parse_entityzMessage.parse_entitys(&yy<= =#DIIv66r|c\|js tdt|j|S)aReturns the text from a given :class:`telegram.MessageEntity`. Note: This method is present because Telegram calculates the offset and length in UTF-16 codepoint pairs, which some versions of Python don't handle automatically. (That is, you can't just slice ``Message.caption`` with the offset and length.) Args: entity (:class:`telegram.MessageEntity`): The entity to extract the text from. It must be an entity that belongs to this message. Returns: :obj:`str`: The text of the given entity. Raises: RuntimeError: If the message has no caption. zThis Message has no 'caption'.)rrCrAres r}parse_caption_entityzMessage.parse_caption_entitys(&||?@ @#DLL&99r|typescFt|j|j|S)ai Returns a :obj:`dict` that maps :class:`telegram.MessageEntity` to :obj:`str`. It contains entities from this message filtered by their :attr:`telegram.MessageEntity.type` attribute as the key, and the text that each entity belongs to as the value of the :obj:`dict`. Note: This method should always be used instead of the :attr:`entities` attribute, since it calculates the correct substring from the message text based on UTF-16 codepoints. See :attr:`parse_entity` for more info. Args: types (list[:obj:`str`], optional): List of :class:`telegram.MessageEntity` types as strings. If the ``type`` attribute of an entity is contained in this list, it will be returned. Defaults to a list of all types. All types can be found as constants in :class:`telegram.MessageEntity`. Returns: dict[:class:`telegram.MessageEntity`, :obj:`str`]: A dictionary of entities mapped to the text that belongs to them, calculated based on UTF-16 codepoints. ri)r@rrrris r}parse_entitieszMessage.parse_entitiess.&diieLLr|cFt|j|j|S)a{ Returns a :obj:`dict` that maps :class:`telegram.MessageEntity` to :obj:`str`. It contains entities from this message's caption filtered by their :attr:`telegram.MessageEntity.type` attribute as the key, and the text that each entity belongs to as the value of the :obj:`dict`. Note: This method should always be used instead of the :attr:`caption_entities` attribute, since it calculates the correct substring from the message text based on UTF-16 codepoints. See :attr:`parse_entity` for more info. Args: types (list[:obj:`str`], optional): List of :class:`telegram.MessageEntity` types as strings. If the ``type`` attribute of an entity is contained in this list, it will be returned. Defaults to a list of all types. All types can be found as constants in :class:`telegram.MessageEntity`. Returns: dict[:class:`telegram.MessageEntity`, :obj:`str`]: A dictionary of entities mapped to the text that belongs to them, calculated based on UTF-16 codepoints. rk)r@rrrls r}parse_caption_entitieszMessage.parse_caption_entitiess2&dllD4I4IQVWWr| message_texturledrAc|y|jtj}d}d}t|j d}g} |D]e\} } | | vr |D cic]Y\} } | j | j k\r;| j | j z| j | j zkr| | k7r| | [}} } | jt|j|r |j| ||| j }n t| }| jtjk(rd| jd|d}n | jtj k(r+| j"rd | j"j$d|d}n| jtj&k(r |r d|d|d}n| jtj(k(rd |d }nv| jtj*k(rd |d }nQ| jtj,k(rd |d}n,| jtj.k(rd|d}n| jtj0k(rd|d}n| jtj2k(r'| j4rd| j4d|d}nd|d}n| jtj6k(rd|d}n{| jtj8k(rd|d}nW| jtj:k(rd|d}n3| jtj<k(rd| j>d|d}n|}|t||dz| j |z dzjAtj|zz }| j |z | j z}h|t||dzdjAtjz }|Scc} } w) Nrc |djSNrrAitems r}z%Message._parse_html../DGNNr|r-)rqrAz zzz
z
zzzzzzz#? @"/v}} /   &d| {{m555$VZZL<.E : ::v{{1&++..1AL>QUV 1 11e$\N"\N$G 8 88' ~]C C CC2<. N 2 22|nD1 4 44|nD1 2 22!,w7 1 11??1&//1B"\NR_`F$\N&9F 7 77|nD1 ; ;;|nD1 5 554\N'J : ::/0F0F/Gr,Wbc%  a6==63IQ2NOVV$..   I!--&06==@KA@ AF VK a(9:AA,BXBXYZZ CsAO#cZ|j|j|jdS)azCreates an HTML-formatted string from the markup entities found in the message. Use this if you want to retrieve the message text with the entities formatted as HTML in the same way the original message was formatted. Warning: |text_html| .. versionchanged:: 13.10 Spoiler entities are now formatted as HTML. .. versionchanged:: 20.3 Custom emoji entities are now supported. .. versionchanged:: 20.8 Blockquote entities are now supported. Returns: :obj:`str`: Message text with entities formatted as HTML. Frqrrrmrs r} text_htmlzMessage.text_htmlys). 4+>+>+@NNr|cZ|j|j|jdS)aCreates an HTML-formatted string from the markup entities found in the message. Use this if you want to retrieve the message text with the entities formatted as HTML. This also formats :attr:`telegram.MessageEntity.URL` as a hyperlink. Warning: |text_html| .. versionchanged:: 13.10 Spoiler entities are now formatted as HTML. .. versionchanged:: 20.3 Custom emoji entities are now supported. .. versionchanged:: 20.8 Blockquote entities are now supported. Returns: :obj:`str`: Message text with entities formatted as HTML. Trrrs r}text_html_urledzMessage.text_html_urleds). 4+>+>+@MMr|cZ|j|j|jdS)aCreates an HTML-formatted string from the markup entities found in the message's caption. Use this if you want to retrieve the message caption with the caption entities formatted as HTML in the same way the original message was formatted. Warning: |text_html| .. versionchanged:: 13.10 Spoiler entities are now formatted as HTML. .. versionchanged:: 20.3 Custom emoji entities are now supported. .. versionchanged:: 20.8 Blockquote entities are now supported. Returns: :obj:`str`: Message caption with caption entities formatted as HTML. Frrrrors r} caption_htmlzMessage.caption_htmls*. d.I.I.KSXYYr|cZ|j|j|jdS)aCreates an HTML-formatted string from the markup entities found in the message's caption. Use this if you want to retrieve the message caption with the caption entities formatted as HTML. This also formats :attr:`telegram.MessageEntity.URL` as a hyperlink. Warning: |text_html| .. versionchanged:: 13.10 Spoiler entities are now formatted as HTML. .. versionchanged:: 20.3 Custom emoji entities are now supported. .. versionchanged:: 20.8 Blockquote entities are now supported. Returns: :obj:`str`: Message caption with caption entities formatted as HTML. Trrrs r}caption_html_urledzMessage.caption_html_urleds*. d.I.I.KSWXXr|versionc |dk(rtjtjtjtjtj tj fD]Ntfd|Dsjjjdd}t|d|y|jtj}d}d} t|j!d } g} | D]@\} } | | vr | Dcic]Y\}}|j"| j"k\r;|j"|j$z| j"| j$zkr|| k7r||[}}}| j't)|j+|r1|d kr td |j-| ||| j"| }n t/| | }| j0tj2k(rC|dk(r | j4}n&t/| j4|tj2}d|d|d}n| j0tj6k(r+| j8rd|d| j8j:d}n]| j0tj<k(r|r|dk(r| n|}d|d| d}n*| j0tj>k(rd|d}n| j0tj@k(rd|d}n| j0tjBk(r!dt/| |tjBd}n| j0tjDk(rXt/| |tjD}| jFrd| jFd}n|jIdrd}nd}||d}n-| j0tj k(rd|d}n| j0tj k(rd|d}n| j0tjk(rd|d}n| j0tjtjfvrEddjK|jMz}| j0tjk(rU|d}nO| j0tjk(r0t/| jN|tj}d|d|d}n|}|t/|| d z| j"|z d zjQtj| |zz }| j"|z | j$z} C|t/|| d zdjQtj| z }|Scc}}w) Nr@c3<K|]}|jk(ywrk)r).0rW entity_types r} z*Message._parse_markdown..sIfv{{k1Is_ z2 entities are not supported for Markdown version 1rsrc |djSrurvrws r}ryz)Message._parse_markdown..rzr|r{r0z8Nested entities are not supported for Markdown version 1)rqrAr)r)rr[z]()z](tg://user?id=*`z``` \z``` __~z||>z >z![z](tg://emoji?id=))r)rrrrrranyrGrreplacerJrDrBrEr|r}rArBr~rFr_parse_markdownrTrrrrrrrrrrrr startswithjoin splitlinesrr)rrprrqrrArGr markdown_textrrrrWrrrrrrrrcodeprefixrrs @r}rzMessage._parse_markdowns a<33((**%%++''   b III&++113;;CED$v-_%`aa b  ")),*@*@A    !17RS+] ALFD(.Q88v}},HHqxx'6==6==+HHK 1O  " "4(<(<(>#? @Q;$%_``"22#!==# 3   /tWE {{m555a< **C* GAXAXC\N"SE3 : ::v{{\N/&++..9IK 1 11e&!|tTF"TF!, 2 22\N!, 4 44\N!, 2 22_T7MrGr2r=rPr)r[rqrdrirlrorHfloatrrrrrrDrrIrrrrrrrrrrrCrrr&rrrobjectrr r rrrrrr!r&r)r,r2r4r;r=rArErJrMrPrSrUrZr\r_rcrfrhrFrgrmrorrrrrrFrrrrrrrrrrrs@r}rrsE} @eIX%)04,0"8<@D!%'+#/3%)!%!%*.59!%%)'+!%+/(,8<,0-126/3,0.2=A%):>*.(,+/)-04#7;#"&GK&*9=59RVUY=A/304-1+/+/;?9==A9=HLLP=A,0,0!%)-<@8<8<.2=A8<'+48*.04,004.2*.8<#'37.26:#'04HL)-LP)-=A?C'+?C48EI=AEI=AEIRVOi:R*.Si:i:lli: i: D> i: #9- i:CLL)i:smi:8O45i:#8O#<=i:i:8$i:tni:+,i:'"i: !i:"#i:$Y'%i:&#8D>2'i:(#)i:*'"+i:,8$-i:./i:0#4.1i:2! 3i:4!)!455i:6$D>7i:8%TN9i::"*$;i:<'tn=i:>%SM?i:@'smAi:B!!9:Ci:D'"Ei:F%%67Gi:H#3-Ii:J! Ki:L$C=Mi:NI&Oi:P -Qi:RtnSi:T34Ui:VtnWi:X$Yi:Z$,,C#D[i:\d^]i:^%%56_i:`#>2ai:b*22N)Oci:d,44Q+Rei:f''9:gi:h'tnii:j (~ki:lz*mi:n#4.oi:p$C=qi:r&&78si:t%%56ui:v''9:wi:x%%56yi:z%--D$E{i:|'//H&I}i:~''9:i:@$D>Ai:Bj)Ci:DEi:F:&Gi:H%%89Ii:J##45Ki:L##45Mi:N{+Oi:P''9:Qi:R!!45Si:T $Ui:V!1Wi:X!Yi:Zn-[i:\%SM]i:^!) _i:`&d^ai:b"$ci:d&n5ei:fC=gi:h#+4.ii:j]+ki:l#?3mi:nx oi:pn-qi:r%--D$Esi:t"#ui:v'//H&Iwi:xI&yi:z''9:{i:| ((;<}i:~tni:@ ((;uo?a @X&Aa B Ca L*. $/;.2*6+7)-8<+//3IMO .26B"&8<(4)5+7(4)-/O )[01O :&O  O 'tn O {+ O "$O $C=O I&O ##45O $C=O 'tnO $,,E#FO &c]O &.d^!O "3-#O $5|!345%O &uo'O ( )O *"%+O ,uo-O .X&/O 0 1O h*.!%/;.2$0@D*6+78<+//3IMQ .26B"&8<(4)5+7(4)-1Q Y'(Q :&Q # Q 'tn Q {+ Q SMQ #8O#<=Q "$Q $C=Q ##45Q $C=Q 'tnQ $,,E#FQ &c]!Q "&.d^#Q $3-%Q &5|!345'Q (uo)Q * +Q ,"%-Q .uo/Q 0X&1Q 2 3Q j%)%)/;.2,0/3!%04*6+78<+//3IMS ".26B'+8<(4)5+7(4)-3S 5/S E?S 'tn S {+ S j) S &e_S #S !) S "$S $C=S ##45S $C=S 'tnS $,,E#FS "&c]#S $&.d^%S &8$'S (5|!345)S *uo+S , -S ."%/S 0uo1S 2X&3S 4 5S n%)%)#!%'+/;.2)-)-+/*6+78<+//3IM#W &.26B!%8<(4)5+7(4)-7W 5/W E?W } W # W  } W 'tnW {+W "#W "#W $C=W "$W $C=W ##45W $C=W 'tn!W "$,,E#F#W &&c]'W (&.d^)W *+W ,5|!345-W .uo/W 0 1W 2"%3W 4uo5W 6X&7W 8 9W v'+$(#'/;.2#*6+78<+//3IMO .26B%)8<(4)5+7(4)-/O smO SMO C= O 'tn O {+ O }O "$O $C=O ##45O $C=O 'tnO $,,E#FO &c]O &.d^!O "'"#O $5|!345%O &uo'O ( )O *"%+O ,uo-O .X&/O 0 1O j(,"267;$(/;.2%)0<,09=DH*6+78<-9AE+//3-] 0.26B8<(4)5+7(4)-?] ] %%6 678] tn ] sm ] "*$ ] $O4] D>] 'tn] {+] c]] !) ] j)] U3 #456] 'x'@A] "$!] "$C=#] $##45%] &&c]'] ($H_$=>)] *$C=+] ,'tn-] 0&c]1] 2&.d^3] 45|!3455] 6uo7] 8 9] :"%;] <uo=] >X&?] @ A] B0<.2#*6+78<+//3IMG .26B8<(4)5+7(4)-'G &tnG {+G } G "$ G $C= G ##45G $C=G 'tnG $,,E#FG &c]G &.d^G 5|!345G uoG  !G ""%#G $uo%G &X&'G ( )G X0<*6+/8<9=7 .26B8<(4)5+7(4)-!7 !7 'tn7 "$ 7 $C= 7 ##45 7 567 &c]7 &.d^7 5|!3457 uo7  7 "%7 uo7 X&!7 " #7 x,8* )5)5+7(4)-* * $C=* uo *   * "%* uo* X&*  * ^0<9=*6+78<+//3E .26B8<(4)5+7(4)-%E E 'tnE 56 E "$ E $C= E ##45E $C=E 'tnE &c]E &.d^E 5|!345E uoE  E "%!E "uo#E $X&%E & 'E \)-)-#'$(%)&*$(,0%)04&*/;9=6:8<15(,9=*6+78<+//3IM=y @.26B8<(4)5+7(4)-Oy y y  y  y ( y ! y "#y C=y SMy c]y smy D>y $D>y TNy (~!y "d^#y $'tn%y &56'y ( c6k 23)y *(0~+y ,!)-y .! /y 0 ( 61y 2"$3y 4$C=5y 6##457y 8$C=9y :'tn;y <$,,E#F=y @&c]Ay B&.d^Cy D5|!345Ey FuoGy H Iy J"%Ky LuoMy NX&Oy P Qy |0<*6+//3IM6 )5)5+7(4)-6 sCx6 'tn6 "$ 6 $C= 6 (} 6 $,,E#F6 uo6  6 "%6 uo6 X&6  6 v"&$0@D/;.2*6+/8<37/3/3IMA .26B(4)5+7(4)--A sCxA #A SM A #8O#<= A 'tn A {+A "$A $C=A ##45A #+4.A 'tnA  (}A $,,E#FA &c]!A "&.d^#A $uo%A & 'A ("%)A *uo+A ,X&-A . /A N"&$0@D/;.2*6+78<37/3/3IMP ".26B8<(4)5+7(4)-1P CHoP P # P SM P #8O#<= P 'tnP {+P "$P $C=P ##45P #+4.P 'tnP  (}P $,,E#FP "&c]#P $&.d^%P &5|!345'P (uo)P * +P ,"%-P .uo/P 0X&1P 2 3P l"&$0@D37/;*68<.2!%/3IM+7K ".26B8<(4)5+7(4)-1K K ()K # K SM K #8O#<= K #+4.K 'tnK "$K ##45K {+K #K 'tnK $,,E#FK $C=K "&c]#K $&.d^%K &5|!345'K (uo)K * +K ,"%-K .uo/K 0X&1K 2 3K `%19=8- )5)5+7(4)-- !- 56- uo -   - "%- uo- X&-  - d:>0 )5)5+7(4)-0 0 560 uo 0   0 "%0 uo0 X&0  y$ 0 h:>- )5)5+7(4)-- 56- uo -   - "% - uo- X&-  y$ - b%)%)9=/3!%04,0; (,(4)5+7(4)-; 5/; E?; 56 ; &e_ ; # ; !) ; j); 8$; uo;  ; "%; uo; X&; y$ !; ~:>- )5)5+7(4)-- 56- uo -   - "% - uo- X&-  y$ - f!%/3 + )5)5+7(4)-+ + + ~ + 'tn + uo+  + "%+ uo+ X&+  y$ + b)5)5+7(4)-% % uo %   % "% % uo% X&%  # $% T)5)5+7(4)-6 uo6   6 "% 6 uo 6 X&6  6 t:>' )5)5+7(4)-' 56' uo '   ' "% ' uo' X&'  ' V0<' )5)5+7(4)-' &tn' uo '   ' "% ' uo' X&'  ' X)5)5+7(4)-% uo%   % "% % uo % X&%  % R#.2$ )5)5+7(4)-$ sm$ 'sm$ uo $   $ "%$ uo$ X&$  $ R)5)5+7(4)-  uo     "%  uo  X&     J)5)5+7(4)-  uo     "%  uo  X&     J)5)5+7(4)-  uo     "%  uo  X&     J)5)5+7(4)-  uo     "%  uo  X&     L !% $ )5)5+7(4)-$  (>*NHSM3N O $  $ uo$  $ "%$ uo$ X&$  $ R)5)5+7(4)-# uo#   # "% # uo # X&#  # N9=# )5)5+7(4)-# E#s||"345# uo #   # "% # uo# X&#  # N"&# )5)5+7(4)-# ## uo #   # "% # uo# X&#  # J7=7S70:=:S:0MHT#Y$7M4 WZHZC[M4,0Xd3i(X mS !X6  VsmV}c)*V V  V # VVpO3OO0NNN0ZcZZ0YCYY0 #$ DsmD}c)*D D ! D  D #DDLSsSS<^#^^0RSRR>]]]0^#^^: S  4]]]> 3  r|r)rrrrGcollections.abcrhtmlrtypingrrrrtelegram._chatr telegram._chatbackgroundr telegram._chatboostr telegram._checklistsr r rtelegram._dicer#telegram._directmessagepricechangedrtelegram._directmessagestopicrtelegram._files.animationrtelegram._files.audiortelegram._files.contactrtelegram._files.documentrtelegram._files.locationrtelegram._files.photosizertelegram._files.stickerrtelegram._files.venuertelegram._files.videortelegram._files.videonotertelegram._files.voicertelegram._forumtopicrrrr r!r"telegram._games.gamer#telegram._giftsr$%telegram._inline.inlinekeyboardmarkupr%telegram._inputchecklistr&telegram._linkpreviewoptionsr''telegram._messageautodeletetimerchangedr(telegram._messageentityr)telegram._paidmediar*!telegram._paidmessagepricechangedr+telegram._passport.passportdatar,telegram._payment.invoicer-!telegram._payment.refundedpaymentr.#telegram._payment.successfulpaymentr/telegram._pollr0!telegram._proximityalerttriggeredr1r+r2telegram._sharedr3r4telegram._storyr5telegram._telegramobjectr6telegram._uniquegiftr7telegram._userr8telegram._utils.argumentparsingr9r:r;telegram._utils.datetimer<r=telegram._utils.defaultvaluer>r?telegram._utils.entitiesr@rAtelegram._utils.stringsrBtelegram._utils.typesrCrDrErFrGrHrItelegram._utils.warningsrJtelegram._videochatrKrLrMrNtelegram._webappdatarOtelegram._writeaccessallowedrPtelegram.constantsrQrRrStelegram.helpersrTtelegram.warningsrUtelegramrVrWrXrYrZr[r\r]r^r_r`rarbrcrdrerfrgrhrirjrkrlrmrnrorqrrrr{r|r}rsG(I $<<3.SSI=/'+--/+''/'&$F3;Q1-E8-=AE+4!3/bbQCQ0* ,;JJ,3<&9&TK~TKn2DBU &BU r|