
    ՟fy?                    l   d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZF ddlGmHZH dd lImJZJ dd!lKmLZL dd"lMmNZNmOZO dd#lPmQZQ dd$lRmSZS dd%lTmUZU dd&lVmWZW dd'lXmYZYmZZZ dd(l[m\Z\m]Z] dd)l^m_Z_m`Z` dd*lambZb dd+lcmdZdmeZemfZfmgZgmhZhmiZi dd,ljmkZk dd-llmmZmmnZnmoZompZp dd.lqmrZr dd/lsmtZt dd0lumvZvmwZwmxZx dd1lymzZz dd2l{m|Z| er(dd3l}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  G d4 d5e      Z G d6 d7eS      Z G d8 d9e      Z G d: d;e      Zy)<zBThis module contains an object that represents a Telegram Message.    N)escape)TYPE_CHECKINGDictListOptionalSequenceTuple	TypedDictUnion)Chat)ChatBackground)ChatBoostAdded)Dice)	Animation)Audio)Contact)Document)Location)	PhotoSize)Sticker)Venue)Video)	VideoNote)Voice)ForumTopicClosedForumTopicCreatedForumTopicEditedForumTopicReopenedGeneralForumTopicHiddenGeneralForumTopicUnhidden)Game)InlineKeyboardMarkup)LinkPreviewOptions)MessageAutoDeleteTimerChanged)MessageEntity)PaidMediaInfo)PassportData)Invoice)RefundedPayment)SuccessfulPayment)Poll)ProximityAlertTriggered)ReplyParameters)
ChatSharedUsersShared)Story)TelegramObject)User)parse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp)DEFAULT_NONEDefaultValue)parse_message_entitiesparse_message_entity)TextEncoding)CorrectOptionID	FileInputJSONDictMarkdownVersionODVInputReplyMarkup)warn)VideoChatEndedVideoChatParticipantsInvitedVideoChatScheduledVideoChatStarted)
WebAppData)WriteAccessAllowed)	ZERO_DATEMessageAttachmentType	ParseMode)escape_markdown)PTBDeprecationWarning)BotExternalReplyInfoGameHighScoreGiveawayGiveawayCompletedGiveawayCreatedGiveawayWinners
InputMediaInputMediaAudioInputMediaDocumentInputMediaPhotoInputMediaVideoInputPollOptionLabeledPrice	MessageIdMessageOriginReactionType	TextQuotec                   0    e Zd ZU dZeeef   ed<   eed<   y)_ReplyKwargs)chat_idreply_parametersra   rb   N)	__name__
__module____qualname__	__slots__r   strint__annotations__r-        L/var/www/cvtools/html/venv/lib/python3.12/site-packages/telegram/_message.pyr`   r`   t   s    /I38_%%rk   r`   c                        e Zd ZdZdZdddededej                  dee	   f fd	Z
ed
efd       Ze	 	 ddee	   ded   dee	   d
ed    f fd       Z xZS )MaybeInaccessibleMessageay  Base 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.
    )chatdate
message_idN
api_kwargsro   rq   rp   rs   c                    t         |   |       || _        || _        || _        | j                  | j                  f| _        | j                          y )Nrr   )super__init__ro   rq   rp   	_id_attrs_freeze)selfro   rq   rp   rs   	__class__s        rl   rv   z!MaybeInaccessibleMessage.__init__   sG     	J/	)'+	//4995rk   returnc                 (    | j                   t        k7  S )zoConvenience attribute. :obj:`True`, if the date is not 0 in Unix time.

        .. versionadded:: 20.8
        )rp   rH   ry   s    rl   is_accessiblez&MaybeInaccessibleMessage.is_accessible   s     yyI%%rk   databotrM   c                 |   | j                  |      }|sy| t        u r6|d   dk(  rt        j                  ||      S t        j                  ||      S t        |      }|d   dk(  r
t        |d<   nt        |d   |      |d<   t        j                  |j                  d      |      |d<   t        | -  |||      S ),See :meth:`telegram.TelegramObject.de_json`.Nrp   r   )r   r   tzinforo   r   r   rs   )_parse_datarn   InaccessibleMessagede_jsonMessager4   rH   r5   r   getru   _de_json)clsr   r   rs   
loc_tzinforz   s        rl   r   z!MaybeInaccessibleMessage._de_json   s     t$**F|q *22#2FF??#?66 2#6
 <1$DL)$v,zJDL||DHHV$4c:VwTszJJrk   NN)rc   rd   re   __doc__rf   r   rh   datetimer   r=   rv   propertyboolr~   classmethodr   __classcell__rz   s   @rl   rn   rn   {   s    : /I *.  	 X&" &t & &   $)-	Kx K e_K X&	K
 
,	-K Krk   rn   c                   @     e Zd ZdZdZdddededee   f fdZ	 xZ
S )	r   a  This 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.
    rj   Nrr   ro   rq   rs   c                T    t         |   ||t        |       | j                          y N)ro   rq   rp   rs   )ru   rv   rH   rx   )ry   ro   rq   rs   rz   s       rl   rv   zInaccessibleMessage.__init__   s%     	dz	V`ark   )rc   rd   re   r   rf   r   rh   r   r=   rv   r   r   s   @rl   r   r      s?    ( I *. 
 X& rk   r   c                   *    e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-dddedej                  dedee	   d	ed    d
eej                     dee
   deed      deed      dee   dee   dee   deee      dee   dee   dee   dee   deee	      dee
   dee   dee   dee   dee	   dee
   deee      dee   d ee   d!ee   d"ee   d#ee   d$ee   d%ee   d&ee   d'ee   d(ee
   d)ee
   d*ee
   d+ee   d,ee   d-ee   d.ee   d/ee   d0ee	   d1ee    d2ee   d3ee!   d4ee"   d5ee#   d6ee$   d7ee%   d8ee   d9ee   d:ee&   d;ee   d<ee   d=ee'   d>ee(   d?ee)   d@ee*   dAee+   dBee,   dCee-   dDee   dEee.   dFee/   dGedH   dIedJ   dKedL   dMedN   dOee0   dPee1   dQedR   dSedT   dUedV   dWee/   dXee2   dYee   dZee
   d[ee	   d\ee   d]ee3   d^ee
   d_ee   d`ee4   daee5   dbee6   f fdcZ7e8ddefde       Z9e8ddefdf       Z:e8ddee
   fdg       Z;e<d.dhee6   diedj   dded    f fdk       Z=e8dde>eeeeeeeeeee   e4eee/eeeeedf   fdl       Z?	 d.dSee   dmee   ddee@   fdnZA	 d.dSe
doee   ddeBeeeBeCdpf      f   fdqZDdddeEeEfdSee
   dree   dsee>ee
f      dteFe   d<eFe   ddeGfduZHdvee>eeGf      dSee   dmee   dwedx   ddeBe>e
ef   e@f   f
dyZIeEfdze>e
ef   d<eFe   ddee   fd{ZJeEeEddeEeEeEddf	deEdddeEeEeEeEdd|
de
d}eFe
   d~eFe   d.eeK   deed      deFe   d<eFe   dPeFd   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f*dZMeEddeEeEeEddfdeEdddeEeEeEeEdd|
de
d~eFe   d.eeK   deed      deFe   d<eFe   dPeFd   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f(dZNeEddeEeEeEddfdeEdddeEeEeEeEdd|
de
d~eFe   d.eeK   deed      deFe   d<eFe   dPeFd   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f(dZOeEddeEeEeEddfdeEdddeEeEeEeEdd|
de
d~eFe   d.eeK   deed      deFe   d<eFe   dPeFd   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f(dZPeEeEeEddfdeEddeEeEeEeEddeEdddee>d      d~eFe   deFe   d<eFe   dwedx   dee
   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   dee
   d}eFe
   deed      ddeBd   f&dZQdeEdeEdeEeEddddfdeEdddeEeEeEeEdd
de>eRdf   dee
   d~eFe   d.eeK   d}eFe
   deed      deFe   d<eFe   dee   dwedx   dee
   d_ee   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f.dZSddddeEdeEdeEeEdddfdeEdddeEeEeEeEdd
de>eRdf   dee   dee
   dee
   dee
   d~eFe   d.eeK   d}eFe
   deed      deFe   d<eFe   deeR   dwedx   dee
   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f2dZTdeEdeEddeEeEdddfdeEdddeEeEeEeEdd
de>eRdf   dee
   d~eFe   d.eeK   d}eFe
   dee   deed      deFe   d<eFe   deeR   dwedx   dee
   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f.dZUddddeEeEddeEeEdddddfdeEdddeEeEeEeEdd
d+e>eRdf   dee   dee   dee   dee
   d}eFe
   d~eFe   d.eeK   deed      deFe   d<eFe   dee   deeR   dwedx   dee
   d_ee   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f6dZVeEdeEeEdddfdeEddeEeEeEeEdd	de>eRdf   d~eFe   d.eeK   deFe   d<eFe   dee
   dwedx   dee
   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f$dZWddeEdddeEddeEeEdddddfdeEdddeEeEeEeEdd
de>eRdf   dee   dee
   d~eFe   d.eeK   dee   dee   d}eFe
   dee   deed      deFe   d<eFe   dee   deeR   dwedx   dee
   d_ee   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f8dZXddeEdeEeEdddf	deEdddeEeEeEeEdd
de>eRdf   dee   dee   d~eFe   d.eeK   deFe   d<eFe   deeR   dwedx   dee
   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f*dZYddeEdeEdeEeEddf
deEdddeEeEeEeEdd
de>eRdf   dee   dee
   d~eFe   d.eeK   d}eFe
   deed      deFe   d<eFe   dwedx   dee
   dmee   dteFe   dee
   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f,dZZddeEdddddeEeEddfdeEdddeEeEeEeEdd
deeL   deeL   d~eFe   d.eeK   dee   deeL   dee   dee   deFe   d<eFe   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f.dZ[dddddeEddddeEeEddfdeEdddeEeEeEeEdd
deeL   deeL   dee
   dee
   dee
   d~eFe   d.eeK   dee
   dee
   dee
   deFe   d<eFe   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f2dZ\dddeEddeEeEddf
deEdddeEeEeEeEdd
dee
   dee
   dee
   d~eFe   d.eeK   dee
   deFe   d<eFe   dwedx   dee
   dmee   dteFe   dee   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f*dZ]dddddeEddeEdddeEeEdeEddfdeEddeEeEeEeEdd	de
dee>e
df      dee   dee
   dee   dee^   dee   d~eFe   d.eeK   dee
   deFe
   dee   dee>eej                  f      deed      deFe   d<eFe   dwedx   deFe
   deed      dee
   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f<d҄Z_eEddeEeEddfdeEddeEeEeEeEdd	d~eFe   d.eeK   dee
   deFe   d<eFe   dwedx   dee
   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f"dӄZ`eEfeEeEeEeEddԜde
d<eFe   deFeL   deFeL   deFeL   deFeL   dbee6   ddefdքZaeEdeEeEddfdeEddeEeEeEeEdd	de
d~eFe   d.ed   deFe   d<eFe   dwedx   dee
   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd f"dلZbddddddddddeEddddddeEeEddfdeEddeEeEeEeEdd	de
de
de
dee
   de
ded   dee
   dee
   dee   dee   dee   dee   dee   dee   dee   dee   d~eFe   d.ed   dee>e
ecf      dee   dee   dee   deee      deFe   d<eFe   dwedx   dee
   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   ddd fJdZdeEeEdfeEeEeEeEddԜdze>ee
f   d~eFe   deFe   d<ee   deFeL   deFeL   deFeL   deFeL   dbee6   ddd fdZedeEdeEdeEdddf	deEeEeEeEeEdddze>ee
f   dee
   d}eFe
   deed      d~eFe   d.eeK   deFe   d<ee   dwedx   d_ee   dmee   dteFe   deFeL   deFeL   deFeL   deFeL   dbee6   dddf$dZfdeEdeEdeEeEddf	deEddeEeEeEeEdd	de>e
ef   dedee
   d}eFe
   deed      d~eFe   d.eeK   deFe   d<eFe   dwedx   d_ee   dmee   dteFe   dSee   dvee>eeGf      deFeL   deFeL   deFeL   deFeL   dbee6   dddf*dZgeEddeEfdeEeEeEeEddde
d}eFe
   d.ed   deed      dPeFd   dee   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZhddeEddfeEeEeEeEddԜdee
   d.ed   d}eFe
   deed      d_ee   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZi	 d.eEeEeEeEddԜddd.ed   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZj	 d.eEeEeEeEddԜd.ed   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZk	 	 	 	 	 	 	 d/deEeEeEeEdddeeL   deeL   d.ed   deeL   dee   dee   dee   dee   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZl	 d.eEeEeEeEddԜd.ed   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZm	 	 d0eEeEeEeEddԜded edee   dee   deFeL   deFeL   deFeL   deFeL   dbee6   dde>d ef   fdZneEeEeEeEddԜdedeFeL   deFeL   deFeL   deFeL   dbee6   ddeBd   fdZoeEeEeEeEddԜdeFeL   deFeL   deFeL   deFeL   dbee6   ddefdZp	 d.eEeEeEeEddԜd.ed   deFeL   deFeL   deFeL   deFeL   dbee6   ddefdZqeEfeEeEeEeEddԜd~eFe   deFeL   deFeL   deFeL   deFeL   dbee6   ddefdZreEeEeEeEddԜdeFeL   deFeL   deFeL   deFeL   dbee6   ddefd	Zs	 	 d0eEeEeEeEddԜd
ee
   dee
   deFeL   deFeL   deFeL   deFeL   dbee6   ddefdZteEeEeEeEddԜdeFeL   deFeL   deFeL   deFeL   dbee6   ddefdZueEeEeEeEddԜdeFeL   deFeL   deFeL   deFeL   dbee6   ddefdZveEeEeEeEddԜdeFeL   deFeL   deFeL   deFeL   dbee6   ddefdZweEeEeEeEddԜdeFeL   deFeL   deFeL   deFeL   dbee6   ddefdZx	 	 d0eEeEeEeEddԜdee>ed   dee
   e
f      dee   deFeL   deFeL   deFeL   deFeL   dbee6   ddefdZydeCdde
fdZzdeCdde
fdZ{d.dee|e
      dde}eCe
f   fdZ~	 d.dee|e
      dde}eCe
f   fdZe<	 	 d1dee
   de}eCe
f   dededdee
   f
d       Ze8dde
fd       Ze8dde
fd        Ze8dde
fd!       Ze8dde
fd"       Ze<	 	 	 d2dee
   de}eCe
f   ded#ededdee
   fd$       Ze8dde
fd%       Ze8dde
fd&       Ze8dde
fd'       Ze8dde
fd(       Ze8dde
fd)       Ze8dde
fd*       Ze8dde
fd+       Ze8dde
fd,       Z xZS (3  r   a  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.
        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

        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 >> <games-tree>`.
        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 <https://telegram.org/blog/video-messages-and-telescope>`_, 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 >> <payments-tree>`.
        successful_payment (:class:`telegram.SuccessfulPayment`, optional): Message is a service
            message about a successful payment, information about the payment.
            :ref:`More about payments >> <payments-tree>`.
        connected_website (:obj:`str`, optional): The domain name of the website on which the user
            has logged in.
            `More about Telegram Login >> <https://core.telegram.org/widgets/login>`_.
        author_signature (:obj:`str`, optional): Signature of the post author for messages in
            channels, or the custom title of an anonymous group administrator.
        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 <https://core.telegram.org/bots/webapps#initializing-mini-apps>`_.

            .. versionadded:: 20.0
        has_media_spoiler (:obj:`bool`, optional): :obj:`True`, if the message media is covered
            by a spoiler animation.

            .. versionadded:: 20.0
        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
        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
        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
        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

    Attributes:
        message_id (:obj:`int`): Unique message identifier inside this chat.
        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

        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 <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 <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 <Working-with-Files-and-Media>`
        game (:class:`telegram.Game`): Optional. Message is a game, information about the game.
            :ref:`More about games >> <games-tree>`.
        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 <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 <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 <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 <Working-with-Files-and-Media>`
        video_note (:class:`telegram.VideoNote`): Optional. Message is a
            `video note <https://telegram.org/blog/video-messages-and-telescope>`_, information
            about the video message.

            .. seealso:: :wiki:`Working with Files and Media <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 >> <payments-tree>`.
        successful_payment (:class:`telegram.SuccessfulPayment`): Optional. Message is a service
            message about a successful payment, information about the payment.
            :ref:`More about payments >> <payments-tree>`.
        connected_website (:obj:`str`): Optional. The domain name of the website on which the user
            has logged in.
            `More about Telegram Login >> <https://core.telegram.org/widgets/login>`_.
        author_signature (:obj:`str`): Optional. Signature of the post author for messages in
            channels, or the custom title of an anonymous group administrator.
        passport_data (:class:`telegram.PassportData`): Optional. Telegram Passport data.

            Examples:
                :any:`Passport Bot <examples.passportbot>`
        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
        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
        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
        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
        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

    .. |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.
    )S_effective_attachment	animationaudioauthor_signatureboost_addedbusiness_connection_idcaptioncaption_entitieschannel_chat_createdchat_background_setchat_sharedconnected_websitecontactdelete_chat_photodicedocument	edit_date	effect_identitiesexternal_replyforum_topic_closedforum_topic_createdforum_topic_editedforum_topic_reopenedforward_origin	from_usergamegeneral_forum_topic_hiddengeneral_forum_topic_unhiddengiveawaygiveaway_completedgiveaway_createdgiveaway_winnersgroup_chat_createdhas_media_spoilerhas_protected_contentinvoiceis_automatic_forwardis_from_offlineis_topic_messageleft_chat_memberlink_preview_optionslocationmedia_group_id!message_auto_delete_timer_changedmessage_thread_idmigrate_from_chat_idmigrate_to_chat_idnew_chat_membersnew_chat_photonew_chat_title
paid_mediapassport_dataphotopinned_messagepollproximity_alert_triggeredquoterefunded_paymentreply_markupreply_to_messagereply_to_storysender_boost_countsender_business_botsender_chatshow_caption_above_mediastickerstorysuccessful_paymentsupergroup_chat_createdtextusers_sharedvenuevia_botvideovideo_chat_endedvideo_chat_participants_invitedvideo_chat_scheduledvideo_chat_started
video_notevoiceweb_app_datawrite_access_allowedNrr   rq   rp   ro   r   r   r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rP   r   rQ   r   rR   r   rS   r   r   r   rN   r   r^   r   r\   r   r   r   r   r   r   r   r   r   r   r   rs   cV                   t         W|   |||V       | j                         5  || _        || _        |-| _        || _        || _        |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        F| _D        @| _E        A| _F        B| _G        C| _H        D| _I        E| _J        G| _K        H| _L        I| _M        J| _N        K| _O        L| _P        M| _Q        N| _R        O| _S        P| _T        Q| _U        R| _V        S| _W        T| _X        U| _Y        t        | _[        | j                  | j                  f| _\        d d d        y # 1 sw Y   y xY wr   )]ru   rv   	_unfrozenrq   r   r   rp   ro   r   r   r   r   r   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   r   rw   )Xry   rq   rp   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rs   rz   sX                                                                                          rl   rv   zMessage.__init__  s<   t 	dzQ[\^^ e	:#-DO-6DN/:D+/DI"DI8LD%7GD!:CDN9ND&'+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 2 GUD.5DLCUD#4ED"3CD!1?D2;DN9FD(,DI(,DI+2DL) * G[D%BTD#>ND!/ 0 AMD6BD4DD!4ED"DWD$BTD#FZD%BTD#* + - - G[D%5FD"7CD5@D*/DJ08DMCUD#?OD!?OD!FZD%?MD.3DJ;ID3AD9DD5GD#9OD'7JD$3BD ATD$,5DN<TD)7ADO?OD!)5D&"ootyy9DNKe	: e	: e	:s   KK;;Lr{   c                 .    | j                   j                  S )zC:obj:`int`: Shortcut for :attr:`telegram.Chat.id` for :attr:`chat`.)ro   idr}   s    rl   ra   zMessage.chat_id  s     yy||rk   c                     | j                   S )zb
        :obj:`int`: Shortcut for :attr:`message_id`.

            .. versionadded:: 20.0
        rq   r}   s    rl   r   z
Message.id  s     rk   c                    | j                   j                  t        j                  t        j                  fvr| j                   j
                  r| j                   j
                  n$dt        | j                   j                        dd  }d| d| j                   }| j                  r| j                  s| j                  r| d| j                   }|S y)aL  :obj:`str`: Convenience property. If the chat of the message is not
        a private chat or normal group, returns a t.me link of the message.

            .. versionchanged:: 20.3
                For messages that are replies or part of a forum topic, the link now points
                to the corresponding thread view.
        zc/   Nzhttps://t.me//z?thread=)ro   typer   PRIVATEGROUPusernamerg   r   rq   r   r   r   )ry   to_linkbaselinks      rl   linkzMessage.link  s     99>>$,,

!;;,0II,>,>dii((bTYY\\IZ[\[]I^H_D`G&wiq0ABH %%$*@*@TEZEZ&Zx0F0F/GHOrk   r   r   rM   c                 b   | j                  |      }|syt        |      }t        j                  |j	                  dd      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        |j                  d      |	      |d<   t        j                  |j                  d
      |      |d
<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t!        j                  |j                  d      |      |d<   t#        j                  |j                  d      |      |d<   t%        j                  |j                  d      |      |d<   t'        j                  |j                  d      |      |d<   t)        j                  |j                  d      |      |d<   t+        j                  |j                  d      |      |d<   t-        j                  |j                  d      |      |d<   t/        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t        j                  |j                  d      |      |d<   t1        j                  |j                  d      |      |d<   t2        j                  |j                  d      |      |d<   t5        j                  |j                  d      |      |d<   t7        j                  |j                  d      |      |d<   t9        j                  |j                  d      |      |d<   t;        j                  |j                  d      |      |d<   t=        j                  |j                  d       |      |d <   t        j                  |j                  d!      |      |d!<   t?        j                  |j                  d"      |      |d"<   tA        j                  |j                  d#      |      |d#<   tC        j                  |j                  d$      |      |d$<   tE        j                  |j                  d%      |      |d%<   tG        j                  |j                  d&      |      |d&<   tI        j                  |j                  d'      |      |d'<   tK        j                  |j                  d(      |      |d(<   tM        j                  |j                  d)      |      |d)<   tO        j                  |j                  d*      |      |d*<   tQ        j                  |j                  d+      |      |d+<   tS        j                  |j                  d,      |      |d,<   tU        j                  |j                  d-      |      |d-<   tW        j                  |j                  d.      |      |d.<   tY        j                  |j                  d/      |      |d/<   t[        j                  |j                  d0      |      |d0<   t]        j                  |j                  d1      |      |d1<   t_        j                  |j                  d2      |      |d2<   ta        j                  |j                  d3      |      |d3<   tc        j                  |j                  d4      |      |d4<   d5d6l2m3}m4}m5}m6} d5d7l7m8} d5d8l9m:}	m;}
  |j                  |j                  d9      |      |d9<    |j                  |j                  d:      |      |d:<    |j                  |j                  d;      |      |d;<    |j                  |j                  d<      |      |d<<   ty        j                  |j                  d=      |      |d=<    |	j                  |j                  d>      |      |d><    |
j                  |j                  d?      |      |d?<    |j                  |j                  d@      |      |d@<   t#        j                  |j                  dA      |      |dA<   t{        j                  |j                  dB      |      |dB<   t        j                  |j                  dC      |      |dC<   i }dDD ]  }|j                  |      x}s||i} t|        |   |||E      S )Fr   Nfromr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rP   rQ   rR   rS   )r\   )rN   r^   r   r   r   r   r   r   r   r   r   r   r   )user_sharedforward_fromforward_from_chatforward_from_message_idforward_signatureforward_sender_nameforward_dater   )@r   r4   r2   r   popr   r   r%   de_listr   r5   r   r   r   r!   r   r   r0   r   r   r   r   r   r   r$   rn   r(   r*   r'   r+   r   r,   r"   rD   rE   rB   rC   rF   r   r   r   r   r   r    rG   r/   r.   r   r&   r)   telegram._giveawayrP   rQ   rR   rS   telegram._messageoriginr\   telegram._replyrN   r^   r#   r   ru   r   )r   r   r   r   rP   rQ   rR   rS   r\   rN   r^   rs   keyentryrz   s                 rl   r   zMessage.de_json  sh    t$ 2#6
 LL&$)?E["ll488M+BCH](00*1EsKZ#0#8#8BT9UWZ#[ #*??488<N3OQT#U *488K+@T[dhhw&7=W#++DHHZ,@#FZ%--dhh{.CSI[||DHHV$4c:V!))$((7*;SAW!//$((9*=sCYdhhw&7=Wdhhw&7=Wdhhw&7=W&..txx/EsK\!//$((9*=sCY#++DHHZ,@#FZdhhw&7=W#'<<9K0Lc#R #'<<9K0Lc#R !*!2!2488<L3Ms!S4Q4Y4YHH8935
01 ":!A!A$((K[B\^a!b!//$((9*=sCY%6%>%>txxH\?]_b%c!" , 4 4TXXo5NPS T_||DHHV$4c:V||DHHV$4c:V,,txx	':C@Y,C,K,KHH013-
()  4;;DHH^<TVYZ^'9'A'AHH+,c(
#$ &6%=%=dhhG[>\^a%b!"#1#9#9$((CU:VX[#\ 2N2V2VHH673
./  *11$((>2JCP^%5%=%=dhhG[>\^a%b!"&7&?&?HH*+S'
"# (:'A'AHH+,c(
#$ &6%=%=dhhG[>\^a%b!"-D-L-LHH12C.
)* 0I/P/PHH34c0
+, (:'A'AHH+,c(
#$  +22488N3KSQ^(00-1H#N]&4&<&<TXXF[=\^a&b"#*22488L3I3O\#2#:#:488DV;WY\#] 	
 	
	
	

 ,8++DHHZ,@#FZ%>%6%>%>txxH\?]_b%c!"#:?#:#:488DV;WY\#] #:?#:#:488DV;WY\#] '9'A'AHH+,c(
#$ ";!2!:!:488DT;UWZ![)	))$((7*;SAW!6!6!6txx@P7QSV!W!&txx8H/I3!O,44TXXm5LcR]&*ll488<Q3RTW&X"#

 
	*C %u%!5\

	* w3:   
 	
rk   c                    t        | j                  t              s| j                  S t        D ]H  }| |   s	| |   | _        |t        j                  k(  rt        t        dd      d        | j                  S  d| _        | j                  S )aQ  If 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 <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.

        z21.4zVsuccessful_payment will no longer be considered an attachment in future major versions   
stacklevelN)
isinstancer   r7   rI   SUCCESSFUL_PAYMENTrA   rL   )ry   attachment_types     rl   effective_attachmentzMessage.effective_attachment\  s    ~ $44lC---4 	.OO$-1/-B*"&;&N&NN-"5
 $%  )))!	. *.D&)))rk   reply_to_message_idc                    |t        |      S ||rt        | j                        S yt        | j                         d      r?| j                         j                  r%| j                         j                  j
                  }nd}|'| j                  j                  t        j                  k7  s|rt        | j                        S y)z3Modify kwargs for replying with or without quoting.Ndefaults)
r-   rq   hasattrget_botr  r   ro   r   r   r   )ry   r   r  default_quotes       rl   _quotezMessage._quote  s     *"#677&t77  t||~z2t||~7N7N $ 7 7 = = $%$))..DLL*H]&t77rk   index.c           	          | j                   xs | j                  x}st        d      |j                  t        j
                        }|j                  t        j
                        }|xs d}t        t        j                  t        j                  |      |            }t        |      x}|dz   k  rt        d| d| d| d      t        |d||   j                                d	z  }	t        |      d	z  }|	|z   }
g }| j                  xs | j                  D ]  }|	|j                  |j                   z   k  s |j                  |
k  s0t#        d|j                  |	z
        }t%        |
|j                  |j                   z         t#        |	|j                        z
  }|dk  r|j&                  D ci c]  }|t)        ||       }}||d
<   ||d<   |j+                  t-        di |        |	t/        |      xs dfS c c}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.r      zYou requested the z-th occurrence of 'z', but this text appears only z times.Nr  offsetlengthrj   )r   r   RuntimeErrorencoder:   	UTF_16_LElistrefinditerr   len
ValueErrorstartr   r   r  r   maxminrf   getattrappendr%   tuple)ry   r   r  r   
utf16_textutf16_quoteeffective_indexmatchesr   positionend_positionr   entityr  e_lengthattrkwargss                    rl   #compute_quote_position_and_entitiesz+Message.compute_quote_position_and_entities  s   F 2dll33KLL [[!7!78
ll<#9#9:*1r{{299[#9:FG'l"Fo&99$UG+>ug Fxw( 
 z"DGO$<$B$B$DEF!K[!Q&&(mm<t'<'< 	9F6==6==88V]]l=ZQ 89|V]]V]]-JKcfmmO  q=
 CIBRBRS$$ 55SS#)x #+x  7 78#	9& x0D00 Ts   .G;quote_indextarget_chat_idallow_sending_without_replyc                 &   |d| j                   d| j                  j                   fv }|r|d| j                  fv r|}nd}|r| j	                  ||      nd\  }}	t        |rdn| j                   | j                  |||	|      |xs | j                   dS )aj  
        Builds a dictionary with the keys ``chat_id`` and ``reply_parameters``. This dictionary can
        be used to reply to a message with the given quote and target chat.

        Examples:

            Usage with :meth:`telegram.Bot.send_message`:

            .. code-block:: python

                await bot.send_message(
                    text="This is a reply",
                    **message.build_reply_arguments(quote="Quoted Text")
                )

            Usage with :meth:`reply_text`, replying in the same chat:

            .. code-block:: python

                await message.reply_text(
                    "This is a reply",
                    do_quote=message.build_reply_arguments(quote="Quoted Text")
                )

            Usage with :meth:`reply_text`, replying in a different chat:

            .. code-block:: python

                await message.reply_text(
                    "This is a reply",
                    do_quote=message.build_reply_arguments(
                        quote="Quoted Text",
                        target_chat_id=-100123456789
                    )
                )

        .. versionadded:: 20.8

        Args:
            quote (:obj:`str`, optional): Passed in :meth:`compute_quote_position_and_entities`
                as parameter :paramref:`~compute_quote_position_and_entities.quote` to compute
                quote entities. Defaults to :obj:`None`.
            quote_index (:obj:`int`, optional): Passed in
                :meth:`compute_quote_position_and_entities` as parameter
                :paramref:`~compute_quote_position_and_entities.quote_index` to compute quote
                position. Defaults to :obj:`None`.
            target_chat_id (:obj:`int` | :obj:`str`, optional): |chat_id_channel|
                Defaults to :attr:`chat_id`.
            allow_sending_without_reply (:obj:`bool`, optional): |allow_sending_without_reply|
                Will be applied only if the reply happens in the same chat and forum topic.
            message_thread_id (:obj:`int`, optional): |message_thread_id|

        Returns:
            :obj:`dict`:
        N@r   )ra   rq   r   quote_positionquote_entitiesr<  )rb   ra   )ra   ro   r   r   r9  r-   rq   )
ry   r   r:  r;  r<  r   target_chat_is_selfeffective_aswrr?  r@  s
             rl   build_reply_argumentszMessage.build_reply_arguments  s    ~ -t||qI[I[H\E]0^^#4""9
 $

 .IN!N MRD44UKHWc 	' !0 3??--,:! &5

 
	
rk   do_quoterb   r-   c                 6  K   |r|rt        d      ||t        d      |t        t        dd      d       |xs |}| j                  }||}||fS |t	        |      }||fS t        |t              r|d   }|d	   }||fS | j                  |      }||fS w)
Nz;The arguments `quote` and `do_quote` are mutually exclusivezD`reply_to_message_id` and `reply_parameters` are mutually exclusive.z20.8z|The `quote` parameter is deprecated in favor of the `do_quote` parameter. Please update your code to use `do_quote` instead.r  r  r   rb   ra   )r(  rA   rL   ra   r-   r  dictr  )ry   rD  r   r  rb   effective_do_quotera   effective_reply_parameterss           rl   _parse_quote_argumentszMessage._parse_quote_argumentsl  s      XZ[[*/?/KV  %I
  #.h#'<< ')9& 222 !,)8DW)X& 222 *D1);<N)O&(3G 222 *.5G)H&222s   BBra   c                     t        |t              s|S | j                  sy || j                  | j                  j
                  hv r| j                  S d S N)r  r7   r   ra   ro   r   r   )ry   ra   r   s      rl   _parse_message_thread_idz Message._parse_message_thread_id  sQ     +\:$$ $$ *1T\\499CUCU4V)Vt%%`\``rk   )
r  r<  disable_web_page_previewr   rD  read_timeoutwrite_timeoutconnect_timeoutpool_timeoutrs   
parse_modedisable_notificationprotect_contentr#   message_effect_idrM  rN  rO  rP  rQ  c       
            K   | j                  ||||	       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||||| j                  |
       d{   S 7 ]7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_message`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        Nra   r   rR  rM  r   rS  rb   r   r<  r   rT  r   rN  rO  rP  rQ  rs   r   rU  )rI  rL  r  send_messager   )ry   r   rR  rS  r   r   rT  r   r   rb   rU  r  r<  rM  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                          rl   
reply_textzMessage.reply_text  s     j 594O4Oe02B5
 /
++ !99'CTU\\^00!%=!5!57%(C+/%'+%!#'#>#>/' 1 
 
 	
	/

"   A<A8AA<3A:4A<:A<c
       
           K   | j                  |||
|       d{   \  }}| j                  ||      }| j                         j                  ||t        j
                  ||||||||||||||| j                  |	       d{   S 7 k7 w)a  Shortcut 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,
                *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|

        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:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.
        NrW  )rI  rL  r  rX  rJ   MARKDOWNr   ry   r   rS  r   r   rT  r   r   rb   rU  r  r<  rM  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                         rl   reply_markdownzMessage.reply_markdown  s     t 594O4Oe02B5
 /
++ !99'CTU\\^00 ))%=!5!57%(C+/%'+%!#'#>#>/' 1 
 
 	
	/

"   B
BA&B
BB
B
c
       
           K   | j                  |||
|       d{   \  }}| j                  ||      }| j                         j                  ||t        j
                  ||||||||||||||| j                  |	       d{   S 7 k7 w)a3  Shortcut for::

            await bot.send_message(
                update.effective_message.chat_id,
                message_thread_id=update.effective_message.message_thread_id,
                parse_mode=ParseMode.MARKDOWN_V2,
                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|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.
        NrW  )rI  rL  r  rX  rJ   MARKDOWN_V2r   r]  s                         rl   reply_markdown_v2zMessage.reply_markdown_v2L  s     l 594O4Oe02B5
 /
++ !99'CTU\\^00 ,,%=!5!57%(C+/%'+%!#'#>#>/' 1 
 
 	
	/

r_  c
       
           K   | j                  |||
|       d{   \  }}| j                  ||      }| j                         j                  ||t        j
                  ||||||||||||||| j                  |	       d{   S 7 k7 w)a  Shortcut for::

            await bot.send_message(
                update.effective_message.chat_id,
                message_thread_id=update.effective_message.message_thread_id,
                parse_mode=ParseMode.HTML,
                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|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.
        NrW  )rI  rL  r  rX  rJ   HTMLr   r]  s                         rl   
reply_htmlzMessage.reply_html  s     l 594O4Oe02B5
 /
++ !99'CTU\\^00 ~~%=!5!57%(C+/%'+%!#'#>#>/' 1 
 
 	
	/

r_  )r  r<  r   rD  rN  rO  rP  rQ  rs   r   rR  r   media)rU   rV   rW   rX   )r   .c                   K   | j                  |
|	||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||| j                  |       d{   S 7 [7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_media_group`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            Tuple[:class:`telegram.Message`]: An array of the sent Messages.

        Raises:
            :class:`telegram.error.TelegramError`
        N)ra   rf  rS  rb   rN  rO  rP  rQ  rs   r<  rT  r   r   rR  r   r   rU  )rI  rL  r  send_media_groupr   )ry   rf  rS  rT  r   rb   rU  r  r<  r   rD  rN  rO  rP  rQ  rs   r   rR  r   ra   rH  s                        rl   reply_media_groupzMessage.reply_media_group  s     n 594O4Oe02B5
 /
++ !99'CTU\\^44!57%'+%!(C+/!-#'#>#>/# 5 
 
 	
	/

s"   A:A6AA:1A82A:8A:)
r  r<  filenamer   rD  rN  rO  rP  rQ  rs   r   has_spoilerrj  c       
            K   | j                  ||||
       d{   \  }}| j                  ||      }| j                         j                  ||||||||||||||||||	| j                  ||       d{   S 7 _7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_photo`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   r   rS  rb   r   rR  r<  r   rj  rT  r   rN  rO  rP  rQ  rs   rk  r   rU  r   )rI  rL  r  
send_photor   )ry   r   r   rS  r   rR  r   rT  r   rk  rb   rU  r   r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                            rl   reply_photozMessage.reply_photo;  s     n 594O4Oe02B5
 /
++ !99'CTU\\^..!57%!(C-+/%'+%!##'#>#>/%=+ / 
 
 	
	/

"   A>A:AA>5A<6A><A>r   duration	performertitle	thumbnailc       
           K   | j                  ||||       d{   \  }}| j                  ||      }| j                         j                  ||||||||||||	||
|||||||| j                  |       d{   S 7 a7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_audio`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rp  rq  rr  r   rS  rb   r   rR  r<  r   rj  rT  r   rN  rO  rP  rQ  rs   rs  r   rU  )rI  rL  r  
send_audior   )ry   r   rp  rq  rr  r   rS  r   rR  r   rT  r   rs  rb   rU  r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                              rl   reply_audiozMessage.reply_audio  s     r 594O4Oe02B5
 /
++ !99'CTU\\^..!57%!(C-+/%'+%!#'#>#>// / 
 
 	
	/

"   B A<AB 7A>8B >B r   disable_content_type_detectionc       
            K   | j                  ||||       d{   \  }}| j                  ||	      }	| j                         j                  ||||||||||||||||||	|
| j                  |       d{   S 7 _7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_document`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rj  r   rS  rb   r   rN  rO  rP  rQ  rR  rs   rx  r<  r   rT  r   rs  r   rU  )rI  rL  r  send_documentr   )ry   r   r   rS  r   rR  rx  r   rT  r   rs  rb   rU  r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                            rl   reply_documentzMessage.reply_document  s     n 594O4Oe02B5
 /
++ !99'CTU\\^11!57%%'+%!!+I(C-+/#'#>#>/+ 2 
 
 	
	/

ro  r   widthheightc       
           K   | j                  ||||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||||	||
|||| j                  ||       d{   S 7 c7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_animation`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rp  r|  r}  r   rR  rS  rb   r   rN  rO  rP  rQ  rs   r<  r   rj  rT  r   rk  rs  r   rU  r   )rI  rL  r  send_animationr   )ry   r   rp  r|  r}  r   rR  rS  r   r   rT  r   rk  rs  rb   rU  r   r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                                rl   reply_animationzMessage.reply_animation8	  s     v 594O4Oe02B5
 /
++ !99'CTU\\^22!!57%%'+%!(C-+/##'#>#>/%=3 3 
 
 	
	/

s"   BA>AB9B :B B)	r  r<  r   rD  rN  rO  rP  rQ  rs   r   emojic	       	            K   | j                  |||	|       d{   \  }}| j                  ||      }| j                         j                  |||||||||||
|||| j                  |       d{   S 7 Z7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_sticker`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rS  rb   r   rN  rO  rP  rQ  rs   r<  rT  r   r  r   rU  )rI  rL  r  send_stickerr   )ry   r   rS  r   rT  r   r  rb   rU  r  r<  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                       rl   reply_stickerzMessage.reply_sticker	  s     d 594O4Oe02B5
 /
++ !99'CTU\\^00!57%%'+%!(C+/#'#>#>/! 1 
 
 	
	/

s"   A9A5AA90A71A97A9r   supports_streamingc       
         
  K   | j                  ||||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||	|||
|||||| j                  ||       d{   S 7 d7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_video`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rp  r   rS  rb   r   rN  rO  rP  rQ  r|  r}  rR  r  rs   r<  r   rj  rT  r   rk  rs  r   rU  r   )rI  rL  r  
send_videor   )ry   r   rp  r   rS  r   r|  r}  rR  r  r   rT  r   rk  rs  rb   rU  r   r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                                 rl   reply_videozMessage.reply_video	  s     x 594O4Oe02B5
 /
++ !99'CTU\\^..!57%%'+%!1!(C-+/##'#>#>/%=5 / 
 
 	
	/

s"   BA?AB:B;BBr   r   c       
            K   | j                  ||||	       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||||| j                  |
       d{   S 7 ]7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_video_note`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rp  r   rS  rb   r   rN  rO  rP  rQ  rs   r<  rj  rT  r   rs  r   rU  )rI  rL  r  send_video_noter   )ry   r   rp  r   rS  r   rT  r   rs  rb   rU  r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                          rl   reply_video_notezMessage.reply_video_note9
  s     j 594O4Oe02B5
 /
++ !99'CTU\\^33!!57%%'+%!(C+/#'#>#>/' 4 
 
 	
	/

rZ  r   c       
            K   | j                  ||||
       d{   \  }}| j                  ||	      }	| j                         j                  ||||||||||||||||||	| j                  |       d{   S 7 ^7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_voice`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r   rp  r   rS  rb   r   rN  rO  rP  rQ  rR  rs   r<  r   rj  rT  r   r   rU  )rI  rL  r  
send_voicer   )ry   r   rp  r   rS  r   rR  r   rT  r   rb   rU  r  r<  rj  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                           rl   reply_voicezMessage.reply_voice
  s     l 594O4Oe02B5
 /
++ !99'CTU\\^..!57%%'+%!!(C-+/#'#>#>/) / 
 
 	
	/

s"   A=A9AA=4A;5A=;A=)
r  r<  r   r   rD  rN  rO  rP  rQ  rs   latitude	longitudelive_periodhorizontal_accuracyheadingproximity_alert_radiusc       
            K   | j                  ||||       d{   \  }}| j                  ||
      }
| j                         j                  ||||||||||||||||||	|
| j                  |       d{   S 7 _7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_location`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r  r  rS  rb   r   rN  rO  rP  rQ  r   r  rs   r  r  r  r<  rT  r   r   rU  )rI  rL  r  send_locationr   )ry   r  r  rS  r   r  r  r  r  rT  r   rb   rU  r  r<  r   r   rD  rN  rO  rP  rQ  rs   ra   rH  s                            rl   reply_locationzMessage.reply_location
  s     n 594O4Oe02B5
 /
++ !99'CTU\\^11!57%%'+%#! 3#9(C+/#'#>#>/+ 2 
 
 	
	/

ro  )
r  r<  r   r   rD  rN  rO  rP  rQ  rs   addressfoursquare_idfoursquare_typegoogle_place_idgoogle_place_typec       
           K   | j                  ||||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||||	|
|||| j                  |       d{   S 7 a7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_venue`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r  r  rr  r  r  rS  rb   r   rN  rO  rP  rQ  r   r  rs   r  r  r<  rT  r   r   rU  )rI  rL  r  
send_venuer   )ry   r  r  rr  r  r  rS  r   r  r  r  rT  r   rb   rU  r  r<  r   r   rD  rN  rO  rP  rQ  rs   ra   rH  s                              rl   reply_venuezMessage.reply_venue,  s     r 594O4Oe02B5
 /
++ !99'CTU\\^..'!57%%'+%+!+/(C+/#'#>#>// / 
 
 	
	/

rw  )
r  r<  r   r   rD  rN  rO  rP  rQ  rs   phone_number
first_name	last_namevcardc       
            K   | j                  ||||	       d{   \  }}| j                  ||      }| j                         j                  |||||||||||||||||| j                  |
       d{   S 7 ]7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_contact`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r  r  r  rS  rb   r   rN  rO  rP  rQ  r   r  rs   r<  rT  r   r   rU  )rI  rL  r  send_contactr   )ry   r  r  r  rS  r   r  rT  r   rb   rU  r  r<  r   r   rD  rN  rO  rP  rQ  rs   ra   rH  s                          rl   reply_contactzMessage.reply_contact  s     j 594O4Oe02B5
 /
++ !99'CTU\\^00%!!57%%'+%!(C+/#'#>#>/' 1 
 
 	
	/

rZ  questionoptionsrY   is_anonymousr   allows_multiple_answerscorrect_option_id	is_closedexplanationexplanation_parse_modeopen_period
close_dateexplanation_entitiesquestion_parse_modequestion_entitiesc       	           K   | j                  ||||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||	|||||
||||||||| j                  |||       d{   S 7 f7 w)a  Shortcut 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|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r  r  r  r   r  r  r  rS  rb   r   rN  rO  rP  rQ  r  r  r  r  rs   r<  r  rT  r   r   r  r  rU  )rI  rL  r  	send_pollr   ) ry   r  r  r  r   r  r  r  rS  r   r  r  r  r  r  rT  r   rb   r  r  rU  r  r<  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                                    rl   
reply_pollzMessage.reply_poll  s     | 594O4Oe02B5
 /
++ !99'CTU\\^--%$;/!57%%'+%##9#!!(C!5+/#'#>#> 3//9 . 
 
 	
	/

s"   BBA!B<B=BBc       	            K   | j                  ||
||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||	||| j                  |       d{   S 7 Y7 w)a  Shortcut 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,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_dice`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   rS  rb   r   rN  rO  rP  rQ  r  rs   r<  rT  r   r   rU  )rI  rL  r  	send_dicer   )ry   rS  r   r  rT  r   rb   rU  r  r<  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                      rl   
reply_dicezMessage.reply_dice3  s     b 594O4Oe02B5
 /
++ !99'CTU\\^--!57%%'+%!(C+/#'#>#>/ . 
 
 	
	/

"   A8A4AA8/A60A86A8)rN  rO  rP  rQ  rs   actionc                   K   | j                         j                  | j                  | j                  | j                  |      ||||||| j                  	       d{   S 7 w)ad  Shortcut 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.

        )	ra   r   r  rN  rO  rP  rQ  rs   r   N)r  send_chat_actionra   rL  r   )ry   r  r   rN  rO  rP  rQ  rs   s           rl   reply_chat_actionzMessage.reply_chat_actionz  sh     @ \\^44LL";;DLLJ[\%'+%!#'#>#> 5 

 

 
	
 

s   AA#A!A#game_short_namer"   c       	            K   | j                  ||
||       d{   \  }}| j                  ||      }| j                         j                  |||||||||||	||| j                  |       d{   S 7 Y7 w)a  Shortcut 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|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        .. versionadded:: 13.2

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        N)ra   r  rS  rb   r   rN  rO  rP  rQ  rs   r<  rT  r   r   rU  )rI  rL  r  	send_gamer   )ry   r  rS  r   rT  r   rb   rU  r  r<  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                      rl   
reply_gamezMessage.reply_game  s     f 594O4Oe02B5
 /
++ !99'CTU\\^--+!57%%'+%!(C+/#'#>#>/ . 
 
 	
	/

r  descriptionpayloadprovider_tokencurrencypricesrZ   start_parameter	photo_url
photo_sizephoto_widthphoto_height	need_nameneed_phone_number
need_emailneed_shipping_addressis_flexibleprovider_datasend_phone_number_to_providersend_email_to_providermax_tip_amountsuggested_tip_amountsc       	           K   | j                  ||||       d{   \  }%}&| j                  |%|      } | j                         j                  d$i 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#| d{   S 7 7 w)%a  Shortcut for::

             await bot.send_invoice(
                 update.effective_message.chat_id,
                 message_thread_id=update.effective_message.message_thread_id,
                 *args,
                 **kwargs,
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.send_invoice`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Warning:
            As of API 5.2 :paramref:`start_parameter <telegram.Bot.send_invoice.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 <telegram.Bot.send_invoice.start_parameter>` is optional.

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.Message`: On success, instance representing the message posted.

        Nra   rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rS  rb   r   r  r  r  rN  rO  rP  rQ  rs   r<  r  r  rT  r   rU  rj   )rI  rL  r  send_invoice)'ry   rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rS  r   r  r  r  r  r  rT  r   rb   rU  r  r<  r   rD  rN  rO  rP  rQ  rs   ra   rH  s'                                          rl   reply_invoicezMessage.reply_invoice  s    ` 594O4Oe02B5
 /
++ !99'CTU0T\\^00 #
#
#
 $#
 	#

 *#
 #
 #
 ,#
  #
 "#
 $#
 &#
  #
 0#
 "#
  #8!#
" $##
$ "6%#
& 8'#
( &)#
* (+#
, +H-#
. $:/#
0 &1#
2 (3#
4 ,5#
6 &7#
8 "9#
: )D;#
< *=#
> #8?#
@ ,A#
B 0C#
D 0E#
 #
 #	
	/
#
s"   CC B C;C<CCc                   K   | j                         j                  || j                  | j                  ||||||||	       d{   S 7 w)a  Shortcut for::

             await bot.forward_message(
                 from_chat_id=update.effective_message.chat_id,
                 message_id=update.effective_message.message_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.

        )ra   from_chat_idrq   rS  rT  r   rN  rO  rP  rQ  rs   N)r  forward_messagera   rq   )
ry   ra   rS  rT  r   rN  rO  rP  rQ  rs   s
             rl   forwardzMessage.forwardh  sZ     H \\^33!5+/%'+%! 4 
 
 	
 
s   AAA	A)r  r<  rN  rO  rP  rQ  rs   r[   c                   K   | j                         j                  || j                  | j                  ||||||	||||||||||
       d{   S 7 w)a  Shortcut for::

             await bot.copy_message(
                 chat_id=chat_id,
                 from_chat_id=update.effective_message.chat_id,
                 message_id=update.effective_message.message_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.

        )ra   r  rq   r   rR  r   rS  r  rb   r<  r   rN  rO  rP  rQ  rs   rT  r   r   N)r  copy_messagera   rq   )ry   ra   r   rR  r   rS  r   rT  r   rb   r   r  r<  rN  rO  rP  rQ  rs   s                     rl   copyzMessage.copy  sr     J \\^00!-!5 3-(C%%'+%!+/%=' 1 
 
 	
 
   A
AAAr  c       	            K   | j                  ||||
       d{   \  }}| j                  ||	      }	| j                         j                  |||||||||||||||||	|       d{   S 7 R7 w)a  Shortcut for::

             await bot.copy_message(
                 chat_id=message.chat.id,
                 message_thread_id=update.effective_message.message_thread_id,
                 message_id=message_id,
                 *args,
                 **kwargs
             )

        For the documentation of the arguments, please see :meth:`telegram.Bot.copy_message`.

        .. versionchanged:: 21.1
                |reply_same_thread|

        Keyword Args:
            quote (:obj:`bool`, optional): |reply_quote|

                .. versionadded:: 13.1
                .. deprecated:: 20.8
                    This argument is deprecated in favor of :paramref:`do_quote`
            do_quote (:obj:`bool` | :obj:`dict`, optional): |do_quote|
                Mutually exclusive with :paramref:`quote`.

                .. versionadded:: 20.8

        Returns:
            :class:`telegram.MessageId`: On success, returns the MessageId of the sent message.

        N)ra   r  rq   r   rR  r   rS  rb   r<  r   rN  rO  rP  rQ  rs   rT  r   r   )rI  rL  r  r  )ry   r  rq   r   rR  r   rS  r   rT  r   rb   r   r  r<  r   rD  rN  rO  rP  rQ  rs   ra   rH  s                          rl   
reply_copyzMessage.reply_copy  s     l 594O4Oe02B5
 /
++ !99'CTU\\^00%!!-!57(C%%'+%!+/%=% 1 
 
 	
	/

s"   A1A-AA1(A/)A1/A1)rM  rN  rO  rP  rQ  rs   c                   K   | j                         j                  | j                  | j                  ||||||||	|
||d| j                         d{   S 7 w)a  Shortcut 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)ra   rq   r   rR  rM  r   r   rN  rO  rP  rQ  rs   r   inline_message_idr   )r  edit_message_textra   rq   r   )ry   r   rR  r   r   r   rM  rN  rO  rP  rQ  rs   s               rl   	edit_textzMessage.edit_text$  sl     N \\^55LL!%=!5%%'+%!"#'#>#> 6 
 
 	
 
s   AAAAc                   K   | j                         j                  | j                  | j                  ||||||	||
|d|| j                         d{   S 7 w)a  Shortcut 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)ra   rq   r   r   rN  rO  rP  rQ  rR  rs   r   r  r   r   )r  edit_message_captionra   rq   r   )ry   r   r   rR  r   r   rN  rO  rP  rQ  rs   s              rl   edit_captionzMessage.edit_caption]  si     N \\^88LL%%'+%!!-"%=#'#>#> 9 
 
 	
 
s   AAAArT   c                   K   | j                         j                  || j                  | j                  ||||||d| j                         d{   S 7 w)a  Shortcut 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)rf  ra   rq   r   rN  rO  rP  rQ  rs   r  r   )r  edit_message_mediara   rq   r   )ry   rf  r   rN  rO  rP  rQ  rs   s           rl   
edit_mediazMessage.edit_media  s`     H \\^66LL%%'+%!"#'#>#> 7 
 
 	
 
s   AAAAc                   K   | j                         j                  | j                  | j                  ||||||d| j                  
       d{   S 7 w)a  Shortcut 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
ra   rq   r   rN  rO  rP  rQ  rs   r  r   )r  edit_message_reply_markupra   rq   r   ry   r   rN  rO  rP  rQ  rs   s          rl   edit_reply_markupzMessage.edit_reply_markup  s]     D \\^==LL%%'+%!"#'#>#> > 
 
 	
 
   AAAA)r   rN  rO  rP  rQ  rs   c                   K   | j                         j                  | j                  | j                  |||||	|
|||||||d| j                         d{   S 7 w)a  Shortcut 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)ra   rq   r  r  r   r   rN  rO  rP  rQ  rs   r  r  r  r  r  r   )r  edit_message_live_locationra   rq   r   )ry   r  r  r   r  r  r  r  r   rN  rO  rP  rQ  rs   s                 rl   edit_live_locationzMessage.edit_live_location  sr     R \\^>>LL%%'+%! 3#9#"#'#>#># ? 
 
 	
 
s   AAAAc                   K   | j                         j                  | j                  | j                  ||||||d| j                  
       d{   S 7 w)a  Shortcut 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_locationra   rq   r   r  s          rl   stop_live_locationzMessage.stop_live_location3  s]     D \\^>>LL%%'+%!"#'#>#> ? 
 
 	
 
r  user_idscoreforcedisable_edit_messagec                   K   | j                         j                  | j                  | j                  |||||||||	d       d{   S 7 w)a  Shortcut 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)ra   rq   r  r  r  r  rN  rO  rP  rQ  rs   r  )r  set_game_scorera   rq   )
ry   r  r  r  r  rN  rO  rP  rQ  rs   s
             rl   r  zMessage.set_game_scoreb  s\     < \\^22LL!5%'+%!" 3 
 
 	
 
s   AAA
A)rO   .c                   K   | j                         j                  | j                  | j                  ||||||d	       d{   S 7 w)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)	ra   rq   r  rN  rO  rP  rQ  rs   r  )r  get_game_high_scoresra   rq   )ry   r  rN  rO  rP  rQ  rs   s          rl   r  zMessage.get_game_high_scores  sS     6 \\^88LL%'+%!" 9 

 

 
	
 

   A A	AA	c          	         K   | j                         j                  | j                  | j                  |||||       d{   S 7 w)a\  Shortcut for::

              await bot.delete_message(
                  chat_id=message.chat_id, message_id=message.message_id, *args, **kwargs
              )

        For the documentation of the arguments, please see :meth:`telegram.Bot.delete_message`.

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.

        )ra   rq   rN  rO  rP  rQ  rs   N)r  delete_messagera   rq   ry   rN  rO  rP  rQ  rs   s         rl   deletezMessage.delete  sM     * \\^22LL%'+%! 3 
 
 	
 
   >A AAc                   K   | j                         j                  | j                  | j                  ||||||| j                  	       d{   S 7 w)aO  Shortcut 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.

        )	ra   rq   r   rN  rO  rP  rQ  rs   r   N)r  	stop_pollra   rq   r   r  s          rl   r	  zMessage.stop_poll  sY     : \\^--LL%%'+%!#'#>#> . 

 

 
	
 

r  c                   K   | j                         j                  | j                  | j                  | j                  ||||||	       d{   S 7 w)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.

        )	ra   rq   r   rS  rN  rO  rP  rQ  rs   N)r  pin_chat_messagera   rq   r   )ry   rS  rN  rO  rP  rQ  rs   s          rl   pinzMessage.pin  sY     : \\^44LL#'#>#>!5%'+%! 5 

 

 
	
 

r  c          
         K   | j                         j                  | j                  | j                  | j                  |||||       d{   S 7 w)ad  Shortcut 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.

        )ra   rq   r   rN  rO  rP  rQ  rs   N)r  unpin_chat_messagera   rq   r   r  s         rl   unpinzMessage.unpin'  sV     8 \\^66LL#'#>#>%'+%! 7 	
 	
 		
 	
s   A	AAAnameicon_custom_emoji_idc                   K   | j                         j                  | j                  | j                  |||||||	       d{   S 7 w)a  Shortcut 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.
        )	ra   r   r  r  rN  rO  rP  rQ  rs   N)r  edit_forum_topicra   r   )ry   r  r  rN  rO  rP  rQ  rs   s           rl   r  zMessage.edit_forum_topicN  sU     4 \\^44LL"44!5%'+%! 5 

 

 
	
 

r  c          	         K   | j                         j                  | j                  | j                  |||||       d{   S 7 w)a  Shortcut 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.
        ra   r   rN  rO  rP  rQ  rs   N)r  close_forum_topicra   r   r  s         rl   r  zMessage.close_forum_topict  sO     0 \\^55LL"44%'+%! 6 
 
 	
 
r  c          	         K   | j                         j                  | j                  | j                  |||||       d{   S 7 w)a  Shortcut 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.
        r  N)r  reopen_forum_topicra   r   r  s         rl   r  zMessage.reopen_forum_topic  O     0 \\^66LL"44%'+%! 7 
 
 	
 
r  c          	         K   | j                         j                  | j                  | j                  |||||       d{   S 7 w)a  Shortcut 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.
        r  N)r  delete_forum_topicra   r   r  s         rl   r  zMessage.delete_forum_topic  r  r  c          	         K   | j                         j                  | j                  | j                  |||||       d{   S 7 w)a  Shortcut 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.
        r  N)r  unpin_all_forum_topic_messagesra   r   r  s         rl   r  z&Message.unpin_all_forum_topic_messages  sP     0 \\^BBLL"44%'+%! C 
 
 	
 
r  reactionr]   is_bigc                   K   | j                         j                  | j                  | j                  |||||||	       d{   S 7 w)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.
        )	ra   rq   r  r  rN  rO  rP  rQ  rs   N)r  set_message_reactionra   rq   )ry   r  r  rN  rO  rP  rQ  rs   s           rl   set_reactionzMessage.set_reaction  sS     4 \\^88LL%'+%! 9 

 

 
	
 

r  r5  c                 \    | j                   st        d      t        | j                   |      S )a  Returns 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.

        zThis Message has no 'text'.)r   r!  r9   ry   r5  s     rl   parse_entityzMessage.parse_entity"  s(    & yy<==#DIIv66rk   c                 \    | j                   st        d      t        | j                   |      S )a  Returns 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.

        zThis Message has no 'caption'.)r   r!  r9   r$  s     rl   parse_caption_entityzMessage.parse_caption_entity:  s(    & ||?@@#DLL&99rk   typesc                 F    t        | 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.

        r(  )r8   r   r   ry   r(  s     rl   parse_entitieszMessage.parse_entitiesR  s    . &diieLLrk   c                 F    t        | 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.

        r*  )r8   r   r   r+  s     rl   parse_caption_entitieszMessage.parse_caption_entitiesk  s    2 &dllD4I4IQVWWrk   message_texturledr  c                    |y |j                  t        j                        }d}d}t        |j	                         d       }g }	|D ]e  \  }
}|
|	v r|D ci c]Y  \  }}|j
                  |
j
                  k\  r;|j
                  |j                  z   |
j
                  |
j                  z   k  r||
k7  r||[ }}}|	j                  t        |j                                      |r | j                  ||||
j
                        }nt        |      }|
j                  t        j                  k(  rd|
j                   d| d}n|
j                  t        j                   k(  r+|
j"                  rd	|
j"                  j$                   d| d}n|
j                  t        j&                  k(  r|rd| d| d}n|
j                  t        j(                  k(  rd
| d}nv|
j                  t        j*                  k(  rd| d}nQ|
j                  t        j,                  k(  rd| d}n,|
j                  t        j.                  k(  rd| d}n|
j                  t        j0                  k(  rd| d}n|
j                  t        j2                  k(  r'|
j4                  rd|
j4                   d| d}nd| d}n|
j                  t        j6                  k(  rd| d}n{|
j                  t        j8                  k(  rd| d}nW|
j                  t        j:                  k(  rd| d}n3|
j                  t        j<                  k(  rd|
j>                   d| d}n|}|t        ||dz  |
j
                  |z
  dz   jA                  t        j                              |z   z  }|
j
                  |z
  |
j                  z   }h |t        ||dz  d  jA                  t        j                              z  }|S c c}}w ) N r   c                      | d   j                   S Nr   r  items    rl   <lambda>z%Message._parse_html.<locals>.<lambda>      DGNN rk   r  )r0  r  z	<a href="z">z</a>z<a href="tg://user?id=z<blockquote>z</blockquote>z<blockquote expandable>z<b>z</b>z<i>z</i>z<code>z</code>z<pre><code class="z</code></pre>z<pre>z</pre>z<u>z</u>z<s>z</s>z<span class="tg-spoiler">z</span>z<tg-emoji emoji-id="z</tg-emoji>r  )!r"  r:   r#  sorteditemsr  r   extendr$  keys_parse_htmlr   r   r%   	TEXT_LINKurlTEXT_MENTIONuserr   URL
BLOCKQUOTEEXPANDABLE_BLOCKQUOTEBOLDITALICCODEPRElanguage	UNDERLINESTRIKETHROUGHSPOILERCUSTOM_EMOJIcustom_emoji_iddecode)r   r/  r   r0  r  utf_16_text	html_textlast_offsetsorted_entitiesparsed_entitiesr5  r   etnested_entitiesescaped_textinserts                    rl   r?  zMessage._parse_html  s    ")),*@*@A	 !17RS+ @	ALFD( .Q88v}},HHqxx'6==6==+HHK	 1O  ""4(<(<(>#?@"/v}}  /    &d|{{m555$VZZL<.E : ::v{{1&++..1AL>QUV 1 11e$\N"\N$G 8 88'~]C C CC2<.N 2 22|nD1 4 44|nD1 2 22!,w7 1 11??1&//1B"\NR_`F$\N&9F 7 77|nD1 ; ;;|nD1 5 554\N'J : ::/0F0F/Gr,Wbc%
 a6==63IQ2NOVV$..
 I !--&06==@KA@	AF 	VKa(9:AA,BXBXYZZ	Cs   AO#c                 Z    | j                  | j                  | j                         d      S )az  Creates 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.

        Fr0  r?  r   r,  r}   s    rl   	text_htmlzMessage.text_html  s)    . 		4+>+>+@NNrk   c                 Z    | j                  | j                  | j                         d      S )a  Creates 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.

        Tr]  r^  r}   s    rl   text_html_urledzMessage.text_html_urled  s)    . 		4+>+>+@MMrk   c                 Z    | j                  | j                  | j                         d      S )a  Creates 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.
        Fr]  r?  r   r.  r}   s    rl   caption_htmlzMessage.caption_html  s*    . d.I.I.KSXYYrk   c                 Z    | j                  | j                  | j                         d      S )a  Creates 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.
        Tr]  rc  r}   s    rl   caption_html_urledzMessage.caption_html_urled*  s*    . d.I.I.KSWXXrk   versionc                 
   |dk(  rt         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  fD ]N  t        fd|D              sj                  j                         j                  dd      }t        | d       |y |j                  t        j                        }d}d}	t        |j!                         d 	      }
g }|
D ]@  \  }}||v r|
D ci c]Y  \  }}|j"                  |j"                  k\  r;|j"                  |j$                  z   |j"                  |j$                  z   k  r||k7  r||[ }}}|j'                  t)        |j+                                      |r1|d
k  rt        d      | j-                  ||||j"                  |      }nt/        ||      }|j0                  t         j2                  k(  rC|dk(  r|j4                  }n&t/        |j4                  |t         j2                        }d| d| d}n|j0                  t         j6                  k(  r+|j8                  rd| d|j8                  j:                   d}n]|j0                  t         j<                  k(  r|r|dk(  r|n|}d| d| d}n*|j0                  t         j>                  k(  rd| d}n|j0                  t         j@                  k(  rd| d}n|j0                  t         jB                  k(  r!dt/        ||t         jB                         d}n|j0                  t         jD                  k(  rXt/        ||t         jD                        }|jF                  rd|jF                   d}n|jI                  d      rd}nd}| | d}n-|j0                  t         j                  k(  rd| d}n|j0                  t         j
                  k(  rd| d}n|j0                  t         j                  k(  rd| d}n|j0                  t         j                  t         j                  fv rEddjK                  |jM                               z   }|j0                  t         j                  k(  rU| d}nO|j0                  t         j                  k(  r0t/        |jN                  |t         j                        }d| d| d}n|}|t/        ||	d
z  |j"                  |z
  d
z   jQ                  t        j                        |      |z   z  }|j"                  |z
  |j$                  z   }	C |t/        ||	d
z  d  jQ                  t        j                        |      z  }|S c c}}w ) Nr  c              3   <   K   | ]  }|j                   k(    y wrK  )r   ).0r5  entity_types     rl   	<genexpr>z*Message._parse_markdown.<locals>.<genexpr>U  s     Ifv{{k1Is   _ z2 entities are not supported for Markdown version 1r2  r   c                      | d   j                   S r4  r5  r6  s    rl   r8  z)Message._parse_markdown.<locals>.<lambda>`  r9  rk   r:  r  z8Nested entities are not supported for Markdown version 1)r0  r  rg  )rg  )rg  rk  [z]()z](tg://user?id=*`z```
\z```
__~z||>z
>z![z](tg://emoji?id=))r%   rF  rE  rO  rN  rM  rL  anyr  rr  replacer(  r"  r:   r#  r;  r<  r  r   r=  r$  r>  _parse_markdownrK   r   r@  rA  rB  rC  r   rD  rG  rH  rI  rJ  rK  
startswithjoin
splitlinesrP  rQ  )r   r/  r   r0  rg  r  r  rR  markdown_textrT  rU  rV  r5  r   rW  rX  rY  rZ  rA  r[  r   codeprefixrP  rk  s                           @rl   r{  zMessage._parse_markdownC  s    a<33((**%%++''  
b III&++113;;CED$v-_%`aa
b ")),*@*@A !17RS+ ]	ALFD( .Q88v}},HHqxx'6==6==+HHK	 1O  ""4(<(<(>#?@Q;$%_``"22#!==#  3    /tWE{{m555a< **C *

GAXAXC \N"SE3 : ::v{{\N/&++..9IK 1 11e&!|tTF"TF!, 2 22\N!, 4 44\N!, 2 22_T7M<N<NOPPQR 1 11&tW-J[J[\??"6??"326F__T*"F$F"8D6- 7 77l^2. ; ;;\N!, 5 55l^2.!9!9=;^;^ __uzz,*A*A*CDD;;-"E"EE &xr]F : :: #2**# - : :#
 l^+;O;LAN%
 a6==63IQ2NOVV$.. $	 M !--&06==@K{]	A@ 	a)*11,2H2HI
 	

 Cs   AU3c                 Z    | j                  | j                  | j                         d      S )a  Creates an Markdown-formatted string from the markup entities found in the message
        using :class:`telegram.constants.ParseMode.MARKDOWN`.

        Use this if you want to retrieve the message text with the entities formatted as Markdown
        in the same way the original message was formatted.

        Warning:
            |text_markdown|

        Note:
            :tg-const:`telegram.constants.ParseMode.MARKDOWN` is a legacy mode, retained by
            Telegram for backward compatibility. You should use :meth:`text_markdown_v2` instead.

        .. versionchanged:: 20.5
            |custom_emoji_no_md1_support|

        .. versionchanged:: 20.8
            |blockquote_no_md1_support|

        Returns:
            :obj:`str`: Message text with entities formatted as Markdown.

        Raises:
            :exc:`ValueError`: If the message contains underline, strikethrough, spoiler,
                blockquote or nested entities.

        Fr]  r{  r   r,  r}   s    rl   text_markdownzMessage.text_markdown  s)    : ##DIIt/B/B/DE#RRrk   c                 \    | j                  | j                  | j                         dd      S )a  Creates an Markdown-formatted string from the markup entities found in the message
        using :class:`telegram.constants.ParseMode.MARKDOWN_V2`.

        Use this if you want to retrieve the message text with the entities formatted as Markdown
        in the same way the original message was formatted.

        Warning:
            |text_markdown|

        .. versionchanged:: 13.10
           Spoiler entities are now formatted as Markdown V2.

        .. 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 Markdown.
        Fr  r0  rg  r  r}   s    rl   text_markdown_v2zMessage.text_markdown_v2  s,    . ##DIIt/B/B/DE[\#]]rk   c                 Z    | j                  | j                  | j                         d      S )a  Creates an Markdown-formatted string from the markup entities found in the message
        using :class:`telegram.constants.ParseMode.MARKDOWN`.

        Use this if you want to retrieve the message text with the entities formatted as Markdown.
        This also formats :attr:`telegram.MessageEntity.URL` as a hyperlink.

        Warning:
            |text_markdown|

        Note:
            :tg-const:`telegram.constants.ParseMode.MARKDOWN` is a legacy mode, retained by
            Telegram for backward compatibility. You should use :meth:`text_markdown_v2_urled`
            instead.

        .. versionchanged:: 20.5
            |custom_emoji_no_md1_support|

        .. versionchanged:: 20.8
            |blockquote_no_md1_support|

        Returns:
            :obj:`str`: Message text with entities formatted as Markdown.

        Raises:
            :exc:`ValueError`: If the message contains underline, strikethrough, spoiler,
                blockquote or nested entities.

        Tr]  r  r}   s    rl   text_markdown_urledzMessage.text_markdown_urled  s)    < ##DIIt/B/B/DD#QQrk   c                 \    | j                  | j                  | j                         dd      S )a  Creates an Markdown-formatted string from the markup entities found in the message
        using :class:`telegram.constants.ParseMode.MARKDOWN_V2`.

        Use this if you want to retrieve the message text with the entities formatted as Markdown.
        This also formats :attr:`telegram.MessageEntity.URL` as a hyperlink.

        Warning:
            |text_markdown|

        .. versionchanged:: 13.10
           Spoiler entities are now formatted as Markdown V2.

        .. 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 Markdown.
        Tr  r  r  r}   s    rl   text_markdown_v2_urledzMessage.text_markdown_v2_urled"  s,    . ##DIIt/B/B/DDZ[#\\rk   c                 Z    | j                  | j                  | j                         d      S )a  Creates an Markdown-formatted string from the markup entities found in the message's
        caption using :class:`telegram.constants.ParseMode.MARKDOWN`.

        Use this if you want to retrieve the message caption with the caption entities formatted as
        Markdown in the same way the original message was formatted.

        Warning:
            |text_markdown|

        Note:
            :tg-const:`telegram.constants.ParseMode.MARKDOWN` is a legacy mode, retained by
            Telegram for backward compatibility. You should use :meth:`caption_markdown_v2`
        .. versionchanged:: 20.5
            |custom_emoji_no_md1_support|

        .. versionchanged:: 20.8
            |blockquote_no_md1_support|

        Returns:
            :obj:`str`: Message caption with caption entities formatted as Markdown.

        Raises:
            :exc:`ValueError`: If the message contains underline, strikethrough, spoiler,
                blockquote or nested entities.

        Fr]  r{  r   r.  r}   s    rl   caption_markdownzMessage.caption_markdown;  s*    8 ##DLL$2M2M2OW\#]]rk   c                 \    | j                  | j                  | j                         dd      S )a  Creates an Markdown-formatted string from the markup entities found in the message's
        caption using :class:`telegram.constants.ParseMode.MARKDOWN_V2`.

        Use this if you want to retrieve the message caption with the caption entities formatted as
        Markdown in the same way the original message was formatted.

        Warning:
            |text_markdown|

        .. versionchanged:: 13.10
           Spoiler entities are now formatted as Markdown V2.

        .. 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 Markdown.
        Fr  r  r  r}   s    rl   caption_markdown_v2zMessage.caption_markdown_v2Y  s2    . ##LL$557ua $ 
 	
rk   c                 Z    | j                  | j                  | j                         d      S )a  Creates an Markdown-formatted string from the markup entities found in the message's
        caption using :class:`telegram.constants.ParseMode.MARKDOWN`.

        Use this if you want to retrieve the message caption with the caption entities formatted as
        Markdown. This also formats :attr:`telegram.MessageEntity.URL` as a hyperlink.

        Warning:
            |text_markdown|

        Note:
            :tg-const:`telegram.constants.ParseMode.MARKDOWN` is a legacy mode, retained by
            Telegram for backward compatibility. You should use
            :meth:`caption_markdown_v2_urled` instead.

        .. versionchanged:: 20.5
            |custom_emoji_no_md1_support|

        .. versionchanged:: 20.8
            |blockquote_no_md1_support|

        Returns:
            :obj:`str`: Message caption with caption entities formatted as Markdown.

        Raises:
            :exc:`ValueError`: If the message contains underline, strikethrough, spoiler,
                blockquote or nested entities.

        Tr]  r  r}   s    rl   caption_markdown_urledzMessage.caption_markdown_urledt  s*    < ##DLL$2M2M2OW[#\\rk   c                 \    | j                  | j                  | j                         dd      S )a  Creates an Markdown-formatted string from the markup entities found in the message's
        caption using :class:`telegram.constants.ParseMode.MARKDOWN_V2`.

        Use this if you want to retrieve the message caption with the caption entities formatted as
        Markdown. This also formats :attr:`telegram.MessageEntity.URL` as a hyperlink.

        Warning:
            |text_markdown|

        .. versionchanged:: 13.10
           Spoiler entities are now formatted as Markdown V2.

        .. 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 Markdown.
        Tr  r  r  r}   s    rl   caption_markdown_v2_urledz!Message.caption_markdown_v2_urled  s2    . ##LL$557tQ $ 
 	
rk   )RNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNrK  )NNNNNNNr   )Fr   )Fr  r   )rc   rd   re   r   rf   rh   r   r   r   r2   rg   r   r   r   r!   r   r   r   r   r   r   r   r   r   rn   r(   r*   r   r'   r+   r"   r   r,   rE   rB   rC   r$   rD   rF   r   r   r   r   r   r    rG   r.   r0   r/   r#   r   r   r&   r)   r=   rv   r   ra   r   r   r   r   r   r  r-   r  r	   r%   r9  r6   r?   r`   rC  rI  rL  r@   floatrY  r^  rb  re  ri  r<   rn  rv  r{  r  r  r  r  r  r  r  r  r;   r  r  r  r  objectr  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r"  r%  r'  r   r   r,  r.  r?  r_  ra  rd  rf  r>   r{  r  r  r  r  r  r  r  r  r   r   s   @rl   r   r      s<   f
RTIv %)0415"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:mA:p *.qA:A: A: 	A:
 D>A: #9-A: H--.A: smA: 8O45A: #8O#<=A: A: 8$A: tnA: +,A: '"A:  !A:" #A:$ Y'%A:& #8D>2'A:( #)A:* '"+A:, 8$-A:. /A:0 #4.1A:2 !3A:4 !)!455A:6 $D>7A:8 %TN9A:: "*$;A:< 'tn=A:> %SM?A:@ 'smAA:B !!9:CA:D '"EA:F %%67GA:H #3-IA:J !KA:L $C=MA:N I&OA:P  -QA:R tnSA:T 34UA:V tnWA:X $YA:Z $,,C#D[A:\ d^]A:^ %%56_A:` #>2aA:b *22N)OcA:d ,44Q+ReA:f ''9:gA:h 'tniA:j  (~kA:l z*mA:n #4.oA:p $C=qA:r &&78sA:t %%56uA:v ''9:wA:x %%56yA:z %--D$E{A:| '//H&I}A:~ ''9:A:@ $D>AA:B j)CA:D EA:F :&GA:H %%89IA:J ##45KA:L ##45MA:N {+OA:P ''9:QA:R !!45SA:T $UA:V !1WA:X !YA:Z n-[A:\ %SM]A:^ !)_A:` &d^aA:b "$cA:d &n5eA:f C=gA:h #+4.iA:j ]+kA:l #?3mA:p X&qA:F    C   hsm  & |
8H- |
HUO |
xXaOb |
 |
| Q*	'	
Q* Q*h KOd^:B3-	/	"0 26J1J1!)#J1	sHU=##5677	8J1\  $%)486B+7W
}W
 c]W
 !sCx1	W

 &.d^W
 $C=W
 
W
r'35|!345'3 ~'3 &c]	'3
 ##45'3 
uS#X/	0'3X ,8asCxa $C=a 
#	a. %1/;.28<*6+7?K8<+/M
 .26B37 $8<(4)5+7(4)--M
M
 SMM
 'tn	M

 {+M
 8O45M
 "$M
 $C=M
 '';<M
 ##45M
 $C=M
 &c]M
 &.d^M
 #+4.M
  ~!M
" 5|!345#M
$ uo%M
&  'M
( "%)M
* uo+M
, X&-M
. 
/M
d 0<.28<*6+7?K8<+/R
 .26B37 $8<(4)5+7(4)-+R
R
 'tnR
 {+	R

 8O45R
 "$R
 $C=R
 '';<R
 ##45R
 $C=R
 &c]R
 &.d^R
 #+4.R
 ~R
  5|!345!R
" uo#R
$  %R
& "%'R
( uo)R
* X&+R
, 
-R
n 0<.28<*6+7?K8<+/N
 .26B37 $8<(4)5+7(4)-+N
N
 'tnN
 {+	N

 8O45N
 "$N
 $C=N
 '';<N
 ##45N
 $C=N
 &c]N
 &.d^N
 #+4.N
 ~N
  5|!345!N
" uo#N
$  %N
& "%'N
( uo)N
* X&+N
, 
-N
f 0<.28<*6+7?K8<+/N
 .26B37 $8<(4)5+7(4)-+N
N
 'tnN
 {+	N

 8O45N
 "$N
 $C=N
 '';<N
 ##45N
 $C=N
 &c]N
 &.d^N
 #+4.N
 ~N
  5|!345!N
" uo#N
$  %N
& "%'N
( uo)N
* X&+N
, 
-N
j 0<*6+78<+/M
 .26B $8<(4)5+7(4)-!%$0@D-M
_`
M

 'tnM
 "$M
 $C=M
 ##45M
 $C=M
 &c]M
 &.d^M
 ~M
 5|!345M
 uoM
   !M
" "%#M
$ uo%M
& X&'M
( #)M
* SM+M
, #8O#<=-M
. 
~	/M
d "&/;.2$0@D*6+7&*8<+/37Q
 .26B"& $8<(4)5+7(4)-1Q
Y+,Q
 #Q
 'tn	Q

 {+Q
 SMQ
 #8O#<=Q
 "$Q
 $C=Q
 d^Q
 ##45Q
 $C=Q
 #+4.Q
 &c]Q
  &.d^!Q
" 3-#Q
$ ~%Q
& 5|!345'Q
( uo)Q
*  +Q
, "%-Q
. uo/Q
0 X&1Q
2 
3Q
l #'#'#!%/;.2$0@D*6+7)-8<+/U
" .26B"& $8<(4)5+7(4)-5U
Y'(U
 3-U
 C=	U

 }U
 #U
 'tnU
 {+U
 SMU
 #8O#<=U
 "$U
 $C=U
 I&U
 ##45U
 $C=U
" &c]#U
$ &.d^%U
& 3-'U
( ~)U
* 5|!345+U
, uo-U
.  /U
0 "%1U
2 uo3U
4 X&5U
6 
7U
t "&/;.2$09=@D*6+7)-8<+/Q
 .26B"& $8<(4)5+7(4)-1Q
	:-.Q
 #Q
 'tn	Q

 {+Q
 SMQ
 )1Q
 #8O#<=Q
 "$Q
 $C=Q
 I&Q
 ##45Q
 $C=Q
 &c]Q
  &.d^!Q
" 3-#Q
$ ~%Q
& 5|!345'Q
( uo)Q
*  +Q
, "%-Q
. uo/Q
0 X&1Q
2 
3Q
l #'# $!%$0/;.2@D*6+7&*)-8<+/37#Y
& .26B"& $8<(4)5+7(4)-9Y
K/0Y
 3-Y
 }	Y

 Y
 #Y
 SMY
 'tnY
 {+Y
 #8O#<=Y
 "$Y
 $C=Y
 d^Y
 I&Y
 ##45Y
  $C=!Y
" #+4.#Y
& &c]'Y
( &.d^)Y
* 3-+Y
, ~-Y
. 5|!345/Y
0 uo1Y
2  3Y
4 "%5Y
6 uo7Y
8 X&9Y
: 
;Y
| 0<.2*6+7#8<+/G
 .26B $8<(4)5+7(4)-'G
y)+,G
 'tnG
 {+	G

 "$G
 $C=G
 }G
 ##45G
 $C=G
 &c]G
 &.d^G
 ~G
 5|!345G
 uoG
   !G
" "%#G
$ uo%G
& X&'G
( 
)G
X #'!%/;.2# $$0-1@D*6+7&*)-8<+/37%[
( .26B"& $8<(4)5+7(4)-;[
Y'([
 3-[
 #	[

 'tn[
 {+[
 }[
 [
 SM[
 %TN[
 #8O#<=[
 "$[
 $C=[
 d^[
 I&[
  ##45![
" $C=#[
$ #+4.%[
( &c])[
* &.d^+[
, 3--[
. ~/[
0 5|!3451[
2 uo3[
4  5[
6 "%7[
8 uo9[
: X&;[
< 
=[
@ #' $/;.2*6+7)-8<+/M
 .26B"& $8<(4)5+7(4)--M
)[01M
 3-M
 	M

 'tnM
 {+M
 "$M
 $C=M
 I&M
 ##45M
 $C=M
 &c]M
 &.d^M
 3-M
  ~!M
" 5|!345#M
$ uo%M
&  'M
( "%)M
* uo+M
, X&-M
. 
/M
d #'!%/;.2$0@D*6+78<+/O
 .26B"& $8<(4)5+7(4)-/O
Y'(O
 3-O
 #	O

 'tnO
 {+O
 SMO
 #8O#<=O
 "$O
 $C=O
 ##45O
 $C=O
 &c]O
 &.d^O
  3-!O
" ~#O
$ 5|!345%O
& uo'O
(  )O
* "%+O
, uo-O
. X&/O
0 
1O
f %)%)/;.2%)/3!%04*6+78<+/Q
 .26B'+ $8<(4)5+7(4)-1Q
5/Q
 E?Q
 'tn	Q

 {+Q
 c]Q
 &e_Q
 #Q
 !)Q
 "$Q
 $C=Q
 ##45Q
 $C=Q
 &c]Q
  &.d^!Q
" 8$#Q
$ ~%Q
& 5|!345'Q
( uo)Q
*  +Q
, "%-Q
. uo/Q
0 X&1Q
2 
3Q
j %)%)#!%'+/;.2)-)-+/*6+78<+/U
" .26B!% $8<(4)5+7(4)-5U
5/U
 E?U
 }	U

 #U
  }U
 'tnU
 {+U
 "#U
 "#U
 $C=U
 "$U
 $C=U
 ##45U
 $C=U
" &c]#U
$ &.d^%U
& 'U
( ~)U
* 5|!345+U
, uo-U
.  /U
0 "%1U
2 uo3U
4 X&5U
6 
7U
r '+$(#'/;.2#*6+78<+/M
 .26B%) $8<(4)5+7(4)--M
smM
 SMM
 C=	M

 'tnM
 {+M
 }M
 "$M
 $C=M
 ##45M
 $C=M
 &c]M
 &.d^M
 '"M
  ~!M
" 5|!345#M
$ uo%M
&  'M
( "%)M
* uo+M
, X&-M
. 
/M
f (,"267;$(/;.2%)0<%)>BDH*6+78<-9AE+/+_
. .26B $8<(4)5+7(4)-?_
_
 %%6 678_
 tn	_

 sm_
 "*$_
 $O4_
 D>_
 'tn_
 {+_
 c]_
 !)_
 c]_
 U3(9(9#9:;_
 'x'@A_
  "$!_
" $C=#_
$ ##45%_
& &c]'_
( $H_$=>)_
* $C=+_
. &c]/_
0 &.d^1_
2 ~3_
4 5|!3455_
6 uo7_
8  9_
: "%;_
< uo=_
> X&?_
@ 
A_
F 0<.2#*6+78<+/E
 .26B $8<(4)5+7(4)-%E
&tnE
 {+E
 }	E

 "$E
 $C=E
 ##45E
 $C=E
 &c]E
 &.d^E
 ~E
 5|!345E
 uoE
  E
  "%!E
" uo#E
$ X&%E
& 
'E
T ,8*

 )5)5+7(4)-*
*
 $C=*

 uo*
  *
 "%*
 uo*
 X&*
 
*
^ 0<9=*6+78<+/G
 .26B $8<(4)5+7(4)-%G
G
 'tnG
 56	G

 "$G
 $C=G
 ##45G
 $C=G
 &c]G
 &.d^G
 ~G
 5|!345G
 uoG
  G
  "%!G
" uo#G
$ X&%G
& 
'G
b *.#'$(%)&*$(,0%)04&*/;9=6:8<15(,9=*6+78<+/9w
< .26B $8<(4)5+7(4)-Mw
w
 w
 	w

 !w
 w
 (w
 "#w
 C=w
 SMw
 c]w
 smw
 D>w
 $D>w
 TNw
   (~!w
" d^#w
$ 'tn%w
& 56'w
(  c6k 23)w
* (0~+w
, !)-w
. !/w
0  (61w
2 "$3w
4 $C=5w
6 ##457w
8 $C=9w
< &c]=w
> &.d^?w
@ ~Aw
B 5|!345Cw
D uoEw
F  Gw
H "%Iw
J uoKw
L X&Mw
N 
Ow
x 0<*6+/0
 )5)5+7(4)-0
sCx0
 'tn0
 "$	0

 $C=0
 uo0
  0
 "%0
 uo0
 X&0
 
0
j "&$0@D/;.2*6+/8<379
 .26B(4)5+7(4)-'9
sCx9
 #9
 SM	9

 #8O#<=9
 'tn9
 {+9
 "$9
 $C=9
 ##459
 #+4.9
 &c]9
 &.d^9
 uo9
   !9
" "%#9
$ uo%9
& X&'9
( 
)9
~ "&$0@D/;.2*6+78<37M
 .26B $8<(4)5+7(4)--M
CHoM
 M
 #	M

 SMM
 #8O#<=M
 'tnM
 {+M
 "$M
 $C=M
 ##45M
 #+4.M
 &c]M
 &.d^M
  ~!M
" 5|!345#M
$ uo%M
&  'M
( "%)M
* uo+M
, X&-M
. 
/M
d %19=8<?K7
 48(4)5+7(4)-7
7
 SM7
 56	7

 8O457
 '';<7
 #+4.7
 uo7
  7
 "%7
 uo7
 X&7
 
y$	7
v "&9=$0@D376
 )5)5+7(4)-6
#6
 566
 SM	6

 #8O#<=6
 #+4.6
 uo6
  6
 "%6
 uo6
 X&6
 
y$	6
v :>0

 )5)5+7(4)-0
0
 560

 uo0
  0
 "%0
 uo0
 X&0
 
y$	0
h :>-
 )5)5+7(4)--
56-
 uo	-

  -
 "%-
 uo-
 X&-
 
y$	-
b %)%)9=/3!%04%);
 (,(4)5+7(4)-;
5/;
 E?;
 56	;

 &e_;
 #;
 !);
 c];
 8$;
 uo;
  ;
 "%;
 uo;
 X&;
  
y$	!;
~ :>-
 )5)5+7(4)--
56-
 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)-
 uo
  	

 "%
 uo
 X&
 

B :>'
 )5)5+7(4)-'
56'
 uo	'

  '
 "%'
 uo'
 X&'
 
'
V 0<'
 )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)-$
(>*NHSM3NO
$

 $
 uo$
  $
 "%$
 uo$
 X&$
 
$
L7= 7S 70:= :S :0MHT#Y$7 M4WZHZC[ M4 ,0Xd3i(X	mS 	!X6 
 VsmV }c)*V 	V
 V 
#V Vp O3 O O0 N N N0 Zc Z Z0 YC Y Y0 
 #$DsmD }c)*D 	D
 !D D 
#D DL Ss S S< ^# ^ ^0 RS R R> ] ] ]0 ^# ^ ^: 
S 
 
4 ] ] ]> 
3 
 
rk   r   )r   r   r%  htmlr   typingr   r   r   r   r   r	   r
   r   telegram._chatr   telegram._chatbackgroundr   telegram._chatboostr   telegram._dicer   telegram._files.animationr   telegram._files.audior   telegram._files.contactr   telegram._files.documentr   telegram._files.locationr   telegram._files.photosizer   telegram._files.stickerr   telegram._files.venuer   telegram._files.videor   telegram._files.videonoter   telegram._files.voicer   telegram._forumtopicr   r   r   r   r   r    telegram._games.gamer!   %telegram._inline.inlinekeyboardmarkupr"   telegram._linkpreviewoptionsr#   'telegram._messageautodeletetimerchangedr$   telegram._messageentityr%   telegram._paidmediar&   telegram._passport.passportdatar'   telegram._payment.invoicer(   !telegram._payment.refundedpaymentr)   #telegram._payment.successfulpaymentr*   telegram._pollr+   !telegram._proximityalerttriggeredr,   r
  r-   telegram._sharedr.   r/   telegram._storyr0   telegram._telegramobjectr1   telegram._userr2   telegram._utils.argumentparsingr3   telegram._utils.datetimer4   r5   telegram._utils.defaultvaluer6   r7   telegram._utils.entitiesr8   r9   telegram._utils.stringsr:   telegram._utils.typesr;   r<   r=   r>   r?   r@   telegram._utils.warningsrA   telegram._videochatrB   rC   rD   rE   telegram._webappdatarF   telegram._writeaccessallowedrG   telegram.constantsrH   rI   rJ   telegram.helpersrK   telegram.warningsrL   telegramrM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r`   rn   r   r   rj   rk   rl   <module>r     s  ( I  	  Y Y Y  3 .  / ' + - - / + ' ' / '  & F ; Q 1 - 8 - = A  E + 4 ! 3  > Q C Q 0  *  , ; J J , 3    ,&9 &WK~ WKt2 DvJ
& vJ
rk   