
    Ii^                    :   S r SSKrSSKrSSKJr  SSKJrJrJrJ	r	J
r
JrJrJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.  SSK/J0r0  SSK1J2r2  SSK3J4r4  SSK5J6r6  SSK7J8r8  SSK9J:r:  SSK;J<r<  SSK=J>r>  SSK?J@r@  SSKAJBrB  SSKCJDrD  SSKEJFrFJGrGJHrH  SSKIJJrJ  SS KKJLrL  SS!KMJNrN  SS"KOJPrP  SS#KQJRrRJSrS  SS$KTJUrUJVrV  SS%KWJXrXJYrYJZrZJ[r[J\r\J]r]  SS&K^J_r_  SS'K`JaraJbrb  SS(KcJdrdJereJfrfJgrg  SS)KhJiri  SS*KjJkrk  SS+KlJmrmJnrnJoro  SS,KpJqrq  SS-KrJsrs  \(       a&  SS.KtJuruJvrvJwrwJxrxJyryJzrzJ{r{J|r|J}r}J~r~JrJrJrJrJrJrJr   " S/ S0\5      r " S1 S2\L5      r " S3 S4\5      r " S5 S6\5      rg)7zBThis module contains an object that represents a Telegram Message.    N)escape)TYPE_CHECKINGDictListOptionalSequenceTuple	TypedDictUnion)Chat)Dice)	Animation)Audio)Contact)Document)Location)	PhotoSize)Sticker)Venue)Video)	VideoNote)Voice)ForumTopicClosedForumTopicCreatedForumTopicEditedForumTopicReopenedGeneralForumTopicHiddenGeneralForumTopicUnhidden)Game)InlineKeyboardMarkup)LinkPreviewOptions)MessageAutoDeleteTimerChanged)MessageEntity)PassportData)Invoice)SuccessfulPayment)Poll)ProximityAlertTriggered)ReplyParameters)
ChatShared
UserSharedUsersShared)Story)TelegramObject)User)parse_sequence_arg)extract_tzinfo_from_defaultsfrom_timestamp)DEFAULT_NONEDefaultValue)CorrectOptionID	FileInputJSONDictMarkdownVersionODVInputReplyMarkup)warn)!build_deprecation_warning_message&warn_about_deprecated_attr_in_property)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LabeledPrice	MessageIdMessageOriginReactionType	TextQuotec                   8    \ rS rSr% Sr\\\4   \S'   \	\S'   Sr
g)_ReplyKwargsp   )chat_idreply_parametersr]   r^    N)__name__
__module____qualname____firstlineno__	__slots__r   strint__annotations__r)   __static_attributes__r_       7/venv/lib/python3.13/site-packages/telegram/_message.pyr[   r[   p   s    /I38_%%ri   r[   c            
          ^  \ rS rSrSrSrSS.S\S\S\R                  S	\	\
   4U 4S
 jjjrS\4S jr\S\4S j5       r\S\	\
   SSS\	S    4U 4S jj5       rSrU =r$ )MaybeInaccessibleMessagew   a  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

.. 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_kwargsrn   rp   ro   rr   c                   > [         TU ]  US9  Xl        X l        X0l        U R                  U R                  4U l        U R                  5         g )Nrq   )super__init__rn   rp   ro   	_id_attrs_freeze)selfrn   rp   ro   rr   	__class__s        rj   ru   !MaybeInaccessibleMessage.__init__   sA     	J/	)'+	//4995ri   returnc                 h    [        [        SU R                  R                   S3SS9  U R                  $ )a  Overrides :meth:`object.__bool__` to return the value of :attr:`is_accessible`.
This is intended to ease migration to Bot API 7.0, as this allows checks like

.. code-block:: python

    if message.pinned_message:
        ...

to work as before, when ``message.pinned_message`` was :obj:`None`. Note that this does not
help with check like

.. code-block:: python

    if message.pinned_message is None:
        ...

for cases where ``message.pinned_message`` is now no longer :obj:`None`.

Tip:
    Since objects that can only be of type :class:`~telegram.Message` or :obj:`None` are
    not affected by this change, :meth:`Message.__bool__` is not overridden and will
    continue to work as before.

.. versionadded:: 20.8
.. deprecated:: 20.8
   This behavior is introduced only temporarily to ease migration to Bot API 7.0. It will
   be removed along with other functionality deprecated by Bot API 7.0.
ag  You probably see this warning because you wrote `if callback_query.message` or `if message.pinned_message` in your code. This is not the supported way of checking the existence of a message as of API 7.0. Please use `if message.is_accessible` or `if isinstance(message, Message)` instead. `if message is None` may be suitable for specific use cases as well.
`zQ.__bool__` will be reverted to Pythons default implementation in future versions.   )categorymessage
stacklevel)r;   rH   ry   r`   is_accessiblerx   s    rj   __bool__!MaybeInaccessibleMessage.__bool__   sC    < 	*
 #nn556 7=> 	
 !!!ri   c                 (    U R                   [        :g  $ )z_Convenience attribute. :obj:`True`, if the date is not 0 in Unix time.

.. versionadded:: 20.8
)ro   rD   r   s    rj   r   &MaybeInaccessibleMessage.is_accessible   s     yyI%%ri   databotrI   c                 n  > U R                  U5      nU(       d  gU [        L a/  US   S:X  a  [        R                  XS9$ [        R                  XS9$ [        U5      nUS   S:X  a
  [        US'   O[        US   US9US'   [        R                  " UR                  S5      U5      US'   [        TU ]  XS9$ ),See :meth:`telegram.TelegramObject.de_json`.Nro   r   r   r   tzinforn   )_parse_datarl   InaccessibleMessagede_jsonMessager1   rD   r2   r   getrt   )clsr   r   
loc_tzinfory   s       rj   r    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D22ri   )rv   rn   ro   rp   )r`   ra   rb   rc   __doc__rd   r   rf   datetimer   r7   ru   boolr   propertyr   classmethodr   rh   __classcell__ry   s   @rj   rl   rl   w   s    4 /I *.  	 X& "+"$ +"Z &t & & 38H- 3E 3hGa>b 3 3ri   rl   c                   N   ^  \ rS rSrSrSrSS.S\S\S\\	   4U 4S	 jjjr
SrU =r$ )
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.
r_   Nrq   rn   rp   rr   c                L   > [         TU ]  X[        US9  U R                  5         g )Nrn   rp   ro   rr   )rt   ru   rD   rw   )rx   rn   rp   rr   ry   s       rj   ru   InaccessibleMessage.__init__  s#     	d	V`ari   )r`   ra   rb   rc   r   rd   r   rf   r   r7   ru   rh   r   r   s   @rj   r   r      s?    ( I *. 
 X& ri   r   c                   p*  ^  \ rS rSrSrSr                                                                              GS+SS.S\S\R                  S\S	\	\
   S
\	\
   S\	\   S\	\   S\	\R                     S\	S    S\	\R                     S\	\   S\	\S      S\	\S      S\	\   S\	\   S\	\   S\	\\      S\	\   S\	\   S\	\   S\	\   S\	\\
      S\	\   S\	\   S\	\   S \	\   S!\	\
   S"\	\   S#\	\\      S$\	\   S%\	\   S&\	\   S'\	\   S(\	\   S)\	\   S*\	\   S+\	\   S,\	\   S-\	\   S.\	\   S/\	\   S0\	\   S1\	\   S2\	\   S3\	\   S4\	\   S5\	\   S6\	\    S7\	\
   S8\	\!   S9\	\   S:\	\"   S;\	\#   S<\	\$   S=\	\%   S>\	\&   S?\	\   S@\	\   SA\	\'   SB\	\   SC\	\   SD\	\(   SE\	\)   SF\	\*   SG\	\+   SH\	\,   SI\	\-   SJ\	\.   SK\	\   SL\	\/   SM\	\0   SN\	\1   SO\	SP   SQ\	SR   SS\	ST   SU\	SV   SW\	\2   SX\	\3   SY\	SZ   S[\	S\   S]\	S^   S_\	\4   4U 4S` jjjjr5Sa\4Sb jr6\7Sa\	\/   4Sc j5       r8\7Sa\	\
   4Sd j5       r9\7Sa\	\   4Se j5       r:\7Sa\	\   4Sf j5       r;\7Sa\	\   4Sg j5       r<\7Sa\	\   4Sh j5       r=\7Sa\	\R                     4Si j5       r>\7Sa\4Sj j5       r?\7Sa\4Sk j5       r@\7Sa\	\   4Sl j5       rA\BSm\	\4   SnSoSa\	S    4U 4Sp jj5       rC\7Sa\D\\\\ \\\\\\\   \\\1\\\\\S4   4Sq j5       rE GS,S[\	\   Sr\	\   Sa\	\F   4Ss jjrG GS,S[\St\	\   Sa\H\\	\H\ISu4      4   4Sv jjrJSSS\KS4S[\	\   Sw\	\   Sx\	\D\\4      Sy\L\   SC\	\   Sa\M4Sz jjrNS{\	\D\\M4      S[\	\   Sr\	\   S|\	S}   Sa\H\D\\4   \F4   4
S~ jrO\K\K\KSS\KS\KS\KS4SS\K\K\K\KSS.S\S\L\   S\L\   S\L\   Sr\	\   S5\	\P   Sy\L\   S\	\S      S\L\   SC\	\   SX\LS   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4(S jjjrR\K\KSS\KS\KS\KS4
SS\K\K\K\KSS.S\S\L\   S\L\   Sr\	\   S5\	\P   Sy\L\   S\	\S      S\L\   SC\	\   SX\LS   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4&S jjjrS\K\KSS\KS\KS\KS4
SS\K\K\K\KSS.S\S\L\   S\L\   Sr\	\   S5\	\P   Sy\L\   S\	\S      S\L\   SC\	\   SX\LS   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4&S jjjrT\K\KSS\KS\KS\KS4
SS\K\K\K\KSS.S\S\L\   S\L\   Sr\	\   S5\	\P   Sy\L\   S\	\S      S\L\   SC\	\   SX\LS   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4&S jjjrU\KS\K\KSS4SS\K\K\K\KSS\KSS.
S\\DS      S\L\   Sr\	\   Sy\L\   S\L\   SC\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   S\	\   S\L\   S\	\S      Sa\HS   4$S jjjrVS\KSS\K\KS\KSSS4SSS\K\K\K\KSS.S\D\WS4   S\	\   S\L\   Sr\	\   S5\	\P   S\L\   Sy\L\   S\	\S      S\L\   SC\	\   S\	\   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4*S jjjrXSSSS\KSS\K\KS\KSSS4SSS\K\K\K\KSS.S\D\WS4   S\	\   S\	\   S\	\   S\	\   S\L\   Sr\	\   S5\	\P   S\L\   Sy\L\   S\	\S      S\L\   SC\	\   S\	\W   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 40S jjjrYS\KSS\KS\KS\KSSS4SSS\K\K\K\KSS.S\D\WS4   S\	\   S\L\   Sr\	\   S5\	\P   S\L\   S\	\   Sy\L\   S\	\S      S\L\   SC\	\   S\	\W   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4,S jjjrZSSSS\K\KSS\KS\KSSSS4SSS\K\K\K\KSS.S1\D\WS4   S\	\   S\	\   S\	\   S\	\   S\L\   S\L\   Sr\	\   S5\	\P   Sy\L\   S\	\S      S\L\   SC\	\   S\	\   S\	\W   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 42S jjjr[\KSS\K\KSSS4SS\K\K\K\KSS.S\D\WS4   S\L\   Sr\	\   S5\	\P   Sy\L\   S\L\   SC\	\   S\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4"S jjjr\SS\KSSSS\KS\KS\KSSSS4SSS\K\K\K\KSS.S\D\WS4   S\	\   S\	\   S\L\   Sr\	\   S5\	\P   S\	\   S\	\   S\L\   S\	\   Sy\L\   S\	\S      S\L\   SC\	\   S\	\   S\	\W   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 44S jjjr]SS\KSS\K\KSSS4
SSS\K\K\K\KSS.S\D\WS4   S\	\   S\	\   S\L\   Sr\	\   S5\	\P   Sy\L\   S\L\   SC\	\   S\	\W   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4(S jjjr^SS\KSS\K\KS\KSS4SSS\K\K\K\KSS.S\D\WS4   S\	\   S\	\   S\L\   Sr\	\   S5\	\P   S\L\   Sy\L\   S\	\S      S\L\   SC\	\   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4*S jjjr_SS\KSSSSSS\K\KSS4SSS\K\K\K\KSS.S\	\Q   S\	\Q   S\L\   Sr\	\   S5\	\P   S\	\   S\	\Q   S\	\   S\	\   Sy\L\   S\L\   SC\	\   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4,S jjjr`SSSSS\KSSSSS\K\KSS4SSS\K\K\K\KSS.S\	\Q   S\	\Q   S\	\   S\	\   S\	\   S\L\   Sr\	\   S5\	\P   S\	\   S\	\   S\	\   Sy\L\   S\L\   SC\	\   S|\	S}   S \	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 40S jjjraSSS\KSSS\K\KSS4SSS\K\K\K\KSS.S\	\   S\	\   S\	\   S\L\   Sr\	\   S5\	\P   S\	\   Sy\L\   S\L\   SC\	\   S|\	S}   S\	\   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4(S jjjrbSSSSS\KSSS\KSS\KS\KSS4SS\K\K\K\KSS.S\S\\   S\	\   S\	\   S\	\   S\	\c   S\	\   S\L\   Sr\	\   S5\	\P   S\	\   S\L\   S\	\   S\	\D\\R                  4      Sy\L\   S\	\S      S\L\   SC\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 46S jjjrd\KSSS\K\KSS4SS\K\K\K\KSS.S\L\   Sr\	\   S5\	\P   S\	\   Sy\L\   S\L\   SC\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4 S jjjre GS,\K\K\K\KSS.S\SC\	\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4S jjjrf\KSS\K\KSS4SS\K\K\K\KSS.S\S\L\   Sr\	\   S5\	S   Sy\L\   S\L\   SC\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4 S jjjrgSSSSSSSSSS\KSSSSS\KSS\KSS4SS\K\K\K\KSS.S\S\S\S\S\S\S   S\	\   S\	\   S\	\   S\	\   S\	\   S\	\   S\	\   S\	\   S\	\   S\	\   S\L\   Sr\	\   S5\	S   S\	\D\\h4      S\	\   S\	\   Sy\L\   S\	\   S\	\\      S\L\   SC\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4HS jjjri\K\KS4\K\K\K\KSS.S\D\\4   S\L\   S\L\   SC\	\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS 4S jjjrjS\KS\KS\KS\KSS4
\K\K\K\KSS.S\D\\4   S\	\   S\L\   S\	\S      S\L\   Sr\	\   Sy\L\   S5\	\P   S\L\   SC\	\   S|\	S}   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS4"S jjjrkS\KS\KS\KS\KSS4
SS\K\K\K\KSS.S\D\\4   S\S\	\   S\L\   S\	\S      S\L\   Sr\	\   Sy\L\   S5\	\P   S\L\   SC\	\   S|\	S}   S[\	\   S{\	\D\\M4      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   SaS4(S jjjrl\K\KSS\K4\K\K\K\KSS.S\S\L\   S\L\   S5\	S   S\	\S      SX\LS   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4S jjjrmSS\KS4\K\K\K\KSS.S\	\   S5\	S   S\L\   S\	\S      S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4S jjjrn GS,\K\K\K\KSS.SSS5\	S   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4S jjjro GS,\K\K\K\KSS.S5\	S   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4S jjjrp      GS-S\K\K\K\KSS.S\	\Q   S\	\Q   S5\	S   S\	\Q   S\	\   S\	\   S\	\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4S jjjrq GS,\K\K\K\KSS.S5\	S   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4S jjjrr  GS.\K\K\K\KSS.S\S\S\	\   S\	\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\DS \4   4GS  jjjrs\K\K\K\KSS.S\S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\HGS   4GS jjrt\K\K\K\KSS.S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjru GS,\K\K\K\KSS.S5\	S   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjjrv\K4\K\K\K\KSS.S\L\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjjrw\K\K\K\KSS.S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjrx  GS.\K\K\K\KSS.GS\	\   GS\	\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS	 jjjry\K\K\K\KSS.S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS
 jjrz\K\K\K\KSS.S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjr{\K\K\K\KSS.S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjr|\K\K\K\KSS.S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjr}  GS.\K\K\K\KSS.GS\	\D\GS   GS\\   \4      GS\	\   S\L\Q   S\L\Q   S\L\Q   S\L\Q   S_\	\4   Sa\4GS jjjr~GS\ISa\4GS jrGS\ISa\4GS jrGS,GS\	\\      Sa\\I\4   4GS jjr GS,GS\	\\      Sa\\I\4   4GS jjr\B  GS/GS\	\   S\\I\4   GS\GS\Sa\	\   4
GS jj5       r\7Sa\4GS j5       r\7Sa\4GS j5       r\7Sa\4GS j5       r\7Sa\4GS j5       r\B   GS0GS\	\   S\\I\4   GS\GS \GS\Sa\	\   4GS! jj5       r\7Sa\4GS" j5       r\7Sa\4GS# j5       r\7Sa\4GS$ j5       r\7Sa\4GS% j5       r\7Sa\4GS& j5       r\7Sa\4GS' j5       r\7Sa\4GS( j5       r\7Sa\4GS) j5       rGS*rU =r$ (1  r   i  aQz  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:: 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; empty for messages
        sent to channels. For backward compatibility, this will contain a fake sender user in
        non-channel chats, if the message was sent on behalf of a chat.
    sender_chat (:class:`telegram.Chat`, optional): Sender of the message, sent on behalf of a
        chat. For example, the channel itself for channel posts, the supergroup itself for
        messages from anonymous group administrators, the linked channel for messages
        automatically forwarded to the discussion group. For backward compatibility,
        :attr:`from_user` contains a fake sender user in non-channel chats, if the message was
        sent on behalf of a chat.
    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.
    forward_from (:class:`telegram.User`, optional): For forwarded messages, sender of
        the original message.

        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`forward_from` in favor of
           :paramref:`forward_origin`.
    forward_from_chat (:class:`telegram.Chat`, optional): For messages forwarded from channels
        or from anonymous administrators, information about the original sender chat.

        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`forward_from_chat` in favor of
           :paramref:`forward_origin`.
    forward_from_message_id (:obj:`int`, optional): For forwarded channel posts, identifier of
        the original message in the channel.

        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`forward_from_message_id` in favor of
           :paramref:`forward_origin`.
    forward_sender_name (:obj:`str`, optional): Sender's name for messages forwarded from
        users who disallow adding a link to their account in forwarded messages.

        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`forward_sender_name` in favor of
           :paramref:`forward_origin`.
    forward_date (:class:`datetime.datetime`, optional): For forwarded messages, date the
        original message was sent in Unix time. Converted to :class:`datetime.datetime`.

        .. versionchanged:: 20.3
            |datetime_localization|

        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`forward_date` in favor of
           :paramref:`forward_origin`.
    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
    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

    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|

    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.
    photo (Sequence[:class:`telegram.PhotoSize`], optional): Message is a photo, available
        sizes of the photo. This list is empty if the message does not contain a photo.

        .. versionchanged:: 20.0
            |sequenceclassargs|

    sticker (:class:`telegram.Sticker`, optional): Message is a sticker, information
        about the sticker.
    story (:class:`telegram.Story`, optional): Message is a forwarded story.

        .. versionadded:: 20.5
    video (:class:`telegram.Video`, optional): Message is a video, information about the
        video.
    voice (:class:`telegram.Voice`, optional): Message is a voice message, information about
        the file.
    video_note (:class:`telegram.VideoNote`, optional): Message is a video note, information
        about the video message.
    new_chat_members (Sequence[:class:`telegram.User`], optional): New members that were added
        to the group or supergroup and information about them (the bot itself may be one of
        these members). This list is empty if the message does not contain new chat members.

        .. versionchanged:: 20.0
            |sequenceclassargs|

    caption (:obj:`str`, optional): Caption for the animation, audio, document, 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.
    successful_payment (:class:`telegram.SuccessfulPayment`, optional): Message is a service
        message about a successful payment, information about the payment.
    connected_website (:obj:`str`, optional): The domain name of the website on which the user
        has logged in.
    forward_signature (:obj:`str`, optional): For messages forwarded from channels, signature
        of the post author if present.

        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`forward_signature` in favor of
           :paramref:`forward_origin`.
    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
    user_shared (:class:`telegram.UserShared`, optional): Service message: a user was shared
        with the bot.

        .. versionadded:: 20.1
        .. deprecated:: 20.8
           Bot API 7.0 deprecates :paramref:`user_shared` in favor of :paramref:`users_shared`.
    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

Attributes:
    message_id (:obj:`int`): Unique message identifier inside this chat.
    from_user (:class:`telegram.User`): Optional. Sender of the message; empty for messages
        sent to channels. For backward compatibility, this will contain a fake sender user in
        non-channel chats, if the message was sent on behalf of a chat.
    sender_chat (:class:`telegram.Chat`): Optional. Sender of the message, sent on behalf of a
        chat. For example, the channel itself for channel posts, the supergroup itself for
        messages from anonymous group administrators, the linked channel for messages
        automatically forwarded to the discussion group. For backward compatibility,
        :attr:`from_user` contains a fake sender user in non-channel chats, if the message was
        sent on behalf of a chat.
    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
    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

    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|

    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.
    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, 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, 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.
    successful_payment (:class:`telegram.SuccessfulPayment`): Optional. Message is a service
        message about a successful payment, information about the payment.
    connected_website (:obj:`str`): Optional. The domain name of the website on which the user
        has logged in.
    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

.. |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.
)O_effective_attachment_forward_date_forward_from_forward_from_chat_forward_from_message_id_forward_sender_name_forward_signature_user_shared	animationaudioauthor_signaturecaptioncaption_entitieschannel_chat_createdchat_sharedconnected_websitecontactdelete_chat_photodicedocument	edit_date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_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passport_dataphotopinned_messagepollproximity_alert_triggeredquotereply_markupreply_to_messagesender_chat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_allowedNrq   rp   ro   rn   r   forward_fromforward_from_chatforward_from_message_idforward_dater   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   forward_signaturer   r   r   r   r   r   forward_sender_namer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   user_sharedr   r   r   rL   r   rM   r   rN   r   rO   r   r   r   rJ   r   rY   r   rW   rr   cR          	        > [         TTU ]  X1UWRS9  WF(       a  [        [        SSSSS9[        SS9  [        UUUU'U.U45      (       aJ  U(       a  S	nSO*U(       a  S
nSO U(       a  SnSOU'(       a  SnSOU.(       a  SnSOSnS[        SWS SUS S3[        SS9  U R                  5          Xl        X@l        U3U l	        X l
        X0l        XPl        X`l        Xl        U9U l        Xl        Xl        U:U l        Xl        [)        U5      U l        [)        U5      U l        Xl        UU l        Xl        [)        U5      U l        UU l        UU l        UU l        UU l        UU l        UU l         UU l!        UU l"        [)        U5      U l#        UU l$        UU l%        [)        U5      U l&        [O        U5      U l(        [O        U5      U l)        [O        U 5      U l*        U"U l+        U#U l,        [O        U!5      U l-        U7U l.        U$U l/        Xpl0        U%U l1        U&U l2        U*U l3        U'U l4        U.U l5        U(U l6        U)U l7        U+U l8        U,U l9        U-U l:        U0U l;        U1U l<        U2U l=        U8U l>        U4U l?        U5U l@        U6U lA        U/U lB        U;U lC        U<U lD        U=U lE        U>U lF        U?U lG        W@U lH        WAU lI        WBU lJ        WCU lK        WDU lL        WEU lM        WFU lN        WMU lO        WGU lP        WHU lQ        WIU lR        WJU lS        WKU lT        WLU lU        WNU lV        WOU lW        WPU lX        WQU lY        [        U l[        U R                  U R                  4U l\        S S S 5        g ! , (       d  f       g = f)Nr   r   r   	parameter7.0)deprecated_namenew_nameobject_typebot_api_versionr}   r   r   r   r   r   r   r   z!The information about parameter 'zf' was transferred to 'forward_origin' in Bot API 7.0. We recommend using 'forward_origin' instead of '')]rt   ru   r;   r<   rH   any	_unfrozenrp   r   r   ro   rn   r   r   r   r   r   r   r   r   r0   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   r3   r   rv   )Urx   rp   ro   rn   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   rr   _warn_paramry   sU                                                                                       rj   ru   Message.__init__  s   l 	dQ[\1$1+ +$)	 &	 !'!#	
 	
 ,"1(7"1$3,3K= A=# & ^^#-O-6N/:D+/I"I1=6G#>J8LD%7G!:CN9ND&'+I7I(7SDM?QRb?cD!*/J(,DI08M0B50IDJ.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;R).5DLCUD#4ED"5FD#7JD%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"6AD7CD5@D*/DJ08DMCUD#?OD!?OD!FZD%?MD.3DJ;ID)5D&"ootyy9DNC s   !J$M
Mr{   c                     g)am  Overrides :meth:`telegram.MaybeInaccessibleMessage.__bool__` to use Pythons
default implementation of :meth:`object.__bool__` instead.

Tip:
    The current behavior is the same as before the introduction of
    :class:`telegram.MaybeInaccessibleMessage`. This documentation is relevant only until
    :meth:`telegram.MaybeInaccessibleMessage.__bool__` is removed.
Tr_   r   s    rj   r   Message.__bool__  s     ri   c                 0    [        SSSS9  U R                  $ )a  :class:`telegram.UserShared`: Optional. Service message. A user was shared with the
bot.

Hint:
    In case a single user was shared, :attr:`user_shared` will be present in addition to
    :attr:`users_shared`. If multiple users where shared, only :attr:`users_shared` will
    be present. However, this behavior is not documented and may be changed by Telegram.

.. versionadded:: 20.1
.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`user_shared` in favor of :attr:`users_shared`.
r   r   r   deprecated_attr_namenew_attr_namer   )r=   r   r   s    rj   r   Message.user_shared  s#     	/!.(!	

    ri   c                 0    [        SSSS9  U R                  $ )z:class:`telegram.User`: Optional. For forwarded messages, sender of the original
message.

.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`forward_from` in favor of :attr:`forward_origin`.
r   r   r   r	  )r=   r   r   s    rj   r   Message.forward_from  s#     	/!/*!	

 !!!ri   c                 0    [        SSSS9  U R                  $ )a  :class:`telegram.Chat`: Optional. For messages forwarded from channels or from anonymous
administrators, information about the original sender chat.

.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`forward_from_chat` in favor of :attr:`forward_origin`.
r   r   r   r	  )r=   r   r   s    rj   r   Message.forward_from_chat  #     	/!4*!	

 &&&ri   c                 0    [        SSSS9  U R                  $ )z:obj:`int`: Optional. For forwarded channel posts, identifier of the original message
in the channel.

.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`forward_from_message_id` in favor of
   :attr:`forward_origin`.
r   r   r   r	  )r=   r   r   s    rj   r   Message.forward_from_message_id  s#     	/!:*!	

 ,,,ri   c                 0    [        SSSS9  U R                  $ )z:obj:`str`: Optional. For messages forwarded from channels, signature
of the post author if present.

.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`forward_signature` in favor of :attr:`forward_origin`.
r   r   r   r	  )r=   r   r   s    rj   r   Message.forward_signature  r  ri   c                 0    [        SSSS9  U R                  $ )a  :class:`telegram.User`: Optional. Sender's name for messages forwarded from users who
disallow adding a link to their account in forwarded messages.

.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`forward_sender_name` in favor of :attr:`forward_origin`.
r   r   r   r	  )r=   r   r   s    rj   r   Message.forward_sender_name  s#     	/!6*!	

 (((ri   c                 0    [        SSSS9  U R                  $ )a=  :obj:`datetime.datetime`: Optional. For forwarded messages, date the original message
was sent in Unix time. Converted to :class:`datetime.datetime`.

    .. versionchanged:: 20.3
        |datetime_localization|

.. deprecated:: 20.8
   Bot API 7.0 deprecates :attr:`forward_date` in favor of :attr:`forward_origin`.
r   r   r   r	  )r=   r   r   s    rj   r   Message.forward_date  s#     	/!/*!	

 !!!ri   c                 .    U R                   R                  $ )zC:obj:`int`: Shortcut for :attr:`telegram.Chat.id` for :attr:`chat`.)rn   idr   s    rj   r]   Message.chat_id/  s     yy||ri   c                     U R                   $ )zJ
:obj:`int`: Shortcut for :attr:`message_id`.

    .. versionadded:: 20.0
rp   r   s    rj   r  
Message.id4  s     ri   c                    U R                   R                  [        R                  [        R                  4;  a  U R                   R
                  (       a  U R                   R
                  O$S[        U R                   R                  5      SS  3nSU SU R                   3nU R                  (       a  U R                  (       d  U R                  (       a  U SU R                   3nU$ g)a$  :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=)rn   typer   PRIVATEGROUPusernamere   r  rp   r   r   r   )rx   to_linkbaselinks      rj   linkMessage.link=  s     99>>$,,

!;;,0II,>,>dii((bTYY\\IZ[\[]I^H_D`G&wiq0ABH %%$*@*@TEZEZ&Zx0F0F/GHOri   r   r   rI   c                   > U R                  U5      nU(       d  g[        U5      n[        R                  " UR	                  SS5      U5      US'   [
        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [
        R                  " UR                  S5      U5      US'   [        UR                  S	5      US
9US	'   [        R                  UR                  S5      U5      US'   [        UR                  S5      US
9US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [         R                  " UR                  S5      U5      US'   ["        R                  " UR                  S5      U5      US'   [$        R                  " UR                  S5      U5      US'   [&        R                  " UR                  S5      U5      US'   [(        R                  " UR                  S5      U5      US'   [*        R                  " UR                  S5      U5      US'   [,        R                  " UR                  S5      U5      US'   [.        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [        R                  " UR                  S5      U5      US'   [0        R                  " UR                  S5      U5      US'   [2        R                  UR                  S5      U5      US'   [4        R                  " UR                  S5      U5      US'   [6        R                  " UR                  S 5      U5      US '   [8        R                  " UR                  S!5      U5      US!'   [:        R                  " UR                  S"5      U5      US"'   [<        R                  " UR                  S#5      U5      US#'   [        R                  " UR                  S$5      U5      US$'   [>        R                  " UR                  S%5      U5      US%'   [@        R                  " UR                  S&5      U5      US&'   [B        R                  " UR                  S'5      U5      US''   [D        R                  " UR                  S(5      U5      US('   [F        R                  " UR                  S)5      U5      US)'   [H        R                  " UR                  S*5      U5      US*'   [J        R                  " UR                  S+5      U5      US+'   [L        R                  " UR                  S,5      U5      US,'   [N        R                  " UR                  S-5      U5      US-'   [P        R                  " UR                  S.5      U5      US.'   [R        R                  " UR                  S/5      U5      US/'   [T        R                  " UR                  S05      U5      US0'   [V        R                  " UR                  S15      U5      US1'   [X        R                  " UR                  S25      U5      US2'   [Z        R                  " UR                  S35      U5      US3'   [\        R                  " UR                  S45      U5      US4'   [^        R                  " UR                  S55      U5      US5'   S6S7K0J1nJ2nJ3nJ4n  S6S8K5J6n  S6S9K7J8n	J9n
  UR                  " UR                  S:5      U5      US:'   UR                  " UR                  S;5      U5      US;'   UR                  " UR                  S<5      U5      US<'   UR                  " UR                  S=5      U5      US='   [t        R                  " UR                  S>5      U5      US>'   U	R                  " UR                  S?5      U5      US?'   U
R                  " UR                  S@5      U5      US@'   UR                  " UR                  SA5      U5      USA'   [v        TU ]  XSB9$ )Cr   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   r   )rL   rM   rN   rO   )rW   )rJ   rY   r   r   r   r   r   r   r   r   r   )<r   r1   r/   r   popr   r   r#   de_listr2   r   r   r   r   r   r   r   r-   r   r   r   r   r   r   r"   rl   r%   r&   r$   r'   r   r(   r    r@   rA   r>   r?   rB   r   r   r   r   r   r   rC   r+   r,   r*   telegram._giveawayrL   rM   rN   rO   telegram._messageoriginrW   telegram._replyrJ   rY   r!   rt   )r   r   r   r   rL   rM   rN   rO   rW   rJ   rY   ry   s              rj   r   Message.de_jsonQ  s    t$ 2#6
 LL&$)?E["ll488M+BCH](00*1EsKZ#0#8#8BT9UWZ#[ #||DHH^,DcJ^$(LL:M1NPS$T !-dhh~.FzZ^#*??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(
#$ )00-1H#N]*22488N3KSQ^(00-1H#N]	
 	
	
	

 $++DHHZ,@#FZ%6%>%>txxH\?]_b%c!"#2#:#:488DV;WY\#] #2#:#:488DV;WY\#] '9'A'AHH+,c(
#$ "3!:!:488DT;UWZ![!))$((7*;SAW!.!6!6txx@P7QSV!WwD22ri   c                     [        U R                  [        5      (       d  U R                  $ [         H"  nX   (       d  M  X   U l          U R                  $    SU l        U R                  $ )a  If this message is neither a plain text message nor a status update, this gives the
attachment that this message was sent with. This 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.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.

N)
isinstancer   r4   rE   )rx   attachment_types     rj   effective_attachmentMessage.effective_attachment  si    n $44lCC---4O$$-1-B* )))  5
 *.D&)))ri   reply_to_message_idc                    Ub  [        U5      $ Ub  U(       a  [        U R                  5      $  g[        U R                  5       S5      (       aD  U R                  5       R                  (       a%  U R                  5       R                  R
                  nOSnUc(  U R                  R                  [        R                  :w  d  U(       a  [        U R                  5      $ g)z3Modify kwargs for replying with or without quoting.Ndefaults)
r)   rp   hasattrget_botr:  r   rn   r#  r   r$  )rx   r   r8  default_quotes       rj   _quoteMessage._quote   s     *"#677&t77   t||~z22t||~7N7N $ 7 7 = = $%$))..DLL*H]&t77ri   index.c           	         U R                   =(       d    U R                  =n(       d  [        S5      eUR                  S5      nUR                  S5      nU=(       d    Sn[	        [
        R                  " [
        R                  " U5      U5      5      n[        U5      =oS-   :  a  [        SU SU SU S35      e[        US	Xv   R                  5        5      S
-  n	[        U5      S
-  nX-   n
/ nU R                  =(       d    U R                   H  nXR                  UR                  -   ::  d  M!  UR                  U
::  d  M3  [        SUR                  U	-
  5      n[!        XR                  UR                  -   5      [        XR                  5      -
  nUS::  a  M  UR"                   Vs0 s H  o[%        X5      _M     nnUUS'   UUS'   UR'                  [)        S0 UD65        M     U	[+        U5      =(       d    S	4$ s  snf )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.	utf-16-ler      zYou requested the z-th occurrence of 'z', but this text appears only z times.Nr}   offsetlengthr_   )r   r   RuntimeErrorencodelistrefinditerr   len
ValueErrorstartr   r   rD  rE  maxminrd   getattrappendr#   tuple)rx   r   r@  r   
utf16_textutf16_quoteeffective_indexmatchesrE  positionend_positionr   entityrD  e_lengthattrkwargss                    rj   #compute_quote_position_and_entities+Message.compute_quote_position_and_entities  s   F 2dll33KLL [[-
ll;/*1r{{299[#9:FG'l"F&99$UG+>ug Fxw( 
 z"DG$<$B$B$DEF!K[!Q&(mm<t'<'<<F==6==88V]]l=ZQ 89|]]V]]-JKcmmO  q=
 CIBRBRSBR$ 55BRS#)x #+x  7 78# =& x0D00 Ts   )G>quote_indextarget_chat_idallow_sending_without_replyc           	      J   USU R                   SU R                  R                   34;   nU(       a  USU R                  4;   a  UnOSnU(       a  U R	                  X5      OSu  p[        U(       a  SOU R                   U R                  UUU	US9U=(       d    U R                   S.$ )a"  
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@NN)r]   rp   r   quote_positionquote_entitiesra  )r^   r]   )r]   rn   r&  r   r]  r)   rp   )
rx   r   r_  r`  ra  r   target_chat_is_selfeffective_aswrre  rf  s
             rj   build_reply_argumentsMessage.build_reply_argumentsc  s    ~ -t||qI[I[H\E]0^^#4""9
 $

 .IN!N MRD44UHWc 	' !0 3??--,:! &5

 
	
ri   do_quoter^   r)   c                 J  #    U(       a  U(       a  [        S5      eUb  Ub  [        S5      eUb  [        S[        SS9  U=(       d    UnU R                  nUb  UnXg4$ Ub  [	        US9nXg4$ [        U[        5      (       a  US   nUS   nXg4$ U R                  U5      nXg4$ 7f)	Nz;The arguments `quote` and `do_quote` are mutually exclusivezD`reply_to_message_id` and `reply_parameters` are mutually exclusive.z|The `quote` parameter is deprecated in favor of the `do_quote` parameter. Please update your code to use `do_quote` instead.r}   r   r  r^   r]   )rL  r;   rH   r]   r)   r4  dictr>  )rx   rk  r   r8  r^   effective_do_quoter]   effective_reply_parameterss           rj   _parse_quote_argumentsMessage._parse_quote_arguments  s      XZ[[*/?/KV  >%	 #.h#'<< ')9& 22 !,)8DW)X& 22 *D11);<N)O&(3G 22 *.5G)H&22s   B!B#)r   rk  read_timeoutwrite_timeoutconnect_timeoutpool_timeoutrr   
parse_modedisable_web_page_previewdisable_notificationprotect_contentr!   rr  rs  rt  ru  c                   #    U R                  XX\5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUU	U
UUUUUS9I Sh  vN $  N< N7f)aO  Shortcut for::

     await bot.send_message(update.effective_message.chat_id, *args, **kwargs)

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

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r]   r   rv  rw  r   rx  r^   r   ra  r   ry  r   rr  rs  rt  ru  rr   )rp  r<  send_message)rx   r   rv  rw  rx  r8  r   ra  r   ry  r   r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                         rj   
reply_textMessage.reply_text  s     V 594O4O05
 /
++ \\^00!%=!5!57%(C+/%'+%!# 1 
 
 	
/

!   AA7AAAAc                   #    U R                  XXK5      I Sh  vN u  nnU R                  5       R                  UU[        R                  UU
UUUUUUU	UUUUUS9I Sh  vN $  NJ N7f)a~  Shortcut for::

    await bot.send_message(
        update.effective_message.chat_id,
        parse_mode=ParseMode.MARKDOWN,
        *args,
        **kwargs,
    )

Sends a message with Markdown version 1 formatting.

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

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.
Nr{  )rp  r<  r|  rF   MARKDOWNrx   r   rw  rx  r8  r   ra  r   ry  r   r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                        rj   reply_markdownMessage.reply_markdown%  s     h 594O4O05
 /
++ \\^00 ))%=!5!57%(C+/%'+%!# 1 
 
 	
/

"   A'A#AA'A%A'%A'c                   #    U R                  XXK5      I Sh  vN u  nnU R                  5       R                  UU[        R                  UU
UUUUUUU	UUUUUS9I Sh  vN $  NJ N7f)a  Shortcut for::

    await bot.send_message(
        update.effective_message.chat_id,
        parse_mode=ParseMode.MARKDOWN_V2,
        *args,
        **kwargs,
    )

Sends a message with markdown version 2 formatting.

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

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.
Nr{  )rp  r<  r|  rF   MARKDOWN_V2r  s                        rj   reply_markdown_v2Message.reply_markdown_v2p  s     ` 594O4O05
 /
++ \\^00 ,,%=!5!57%(C+/%'+%!# 1 
 
 	
/

r  c                   #    U R                  XXK5      I Sh  vN u  nnU R                  5       R                  UU[        R                  UU
UUUUUUU	UUUUUS9I Sh  vN $  NJ N7f)a  Shortcut for::

    await bot.send_message(
        update.effective_message.chat_id,
        parse_mode=ParseMode.HTML,
        *args,
        **kwargs,
    )

Sends a message with HTML formatting.

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

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.
Nr{  )rp  r<  r|  rF   HTMLr  s                        rj   
reply_htmlMessage.reply_html  s     ` 594O4O05
 /
++ \\^00 ~~%=!5!57%(C+/%'+%!# 1 
 
 	
/

r  )
r   rk  rr  rs  rt  ru  rr   r   rv  r   media)rQ   rR   rS   rT   )r   .c       
            #    U R                  XX75      I Sh  vN u  nnU R                  5       R                  UUUUU
UUUUUUUUUUS9I Sh  vN $  N: N7f)ay  Shortcut for::

     await bot.send_media_group(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r  rx  r^   rr  rs  rt  ru  rr   ra  ry  r   r   rv  r   )rp  r<  send_media_group)rx   r  rx  r8  ra  ry  r   r^   r   rk  rr  rs  rt  ru  rr   r   rv  r   r]   ro  s                       rj   reply_media_groupMessage.reply_media_group  s     Z 594O4O05
 /
++ \\^44!57%'+%!(C+/!- 5 
 
 	
/

s!   AA5AAAA)filenamer   rk  rr  rs  rt  ru  rr   r   has_spoilerr  c                   #    U R                  XXL5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUU	U
UUUUUUS9I Sh  vN $  N= N7f)aK  Shortcut for::

     await bot.send_photo(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r   rx  r^   r   rv  ra  r   r  ry  r   rr  rs  rt  ru  rr   r  )rp  r<  
send_photo)rx   r   r   rx  r8  r   rv  ra  r   ry  r   r  r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                          rj   reply_photoMessage.reply_photo@  s     X 594O4O05
 /
++ \\^..!57%!(C-+/%'+%!#% / 
 
 	
/

!   AA8AAAAr   duration	performertitle	thumbnailc                   #    U R                  UUX5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUU	U
UUUUUUUUUUS9I Sh  vN $  N@ N7f)aK  Shortcut for::

     await bot.send_audio(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r  r  r  r   rx  r^   r   rv  ra  r   r  ry  r   rr  rs  rt  ru  rr   r  )rp  r<  
send_audio)rx   r   r  r  r  r   rx  r8  r   rv  ra  r   ry  r   r  r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                             rj   reply_audioMessage.reply_audio  s     ^ 594O4Oe05
 /
++ \\^..!57%!(C-+/%'+%!+ / 
 
 	
/

!   AA;AAAAr   disable_content_type_detectionc                   #    U R                  UXU5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUUU	U
UUS9I Sh  vN $  N> N7f)aQ  Shortcut for::

     await bot.send_document(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r  r   rx  r^   r   rr  rs  rt  ru  rv  rr   r  ra  r   ry  r   r  )rp  r<  send_document)rx   r   r   rx  r8  r   rv  r  ra  r   ry  r   r  r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                           rj   reply_documentMessage.reply_document  s     Z 594O4Oe2B5
 /
++ \\^11!57%%'+%!!+I(C-+/' 2 
 
 	
/

!   AA9AAAAr   widthheightc                   #    U R                  UUUU5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUU	UUUUUU
UUUUUUS9I Sh  vN $  NA N7f)aS  Shortcut for::

     await bot.send_animation(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r  r  r  r   rv  rx  r^   r   rr  rs  rt  ru  rr   ra  r   r  ry  r   r  r  )rp  r<  send_animation)rx   r   r  r  r  r   rv  rx  r8  r   ra  r   ry  r   r  r  r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                              rj   reply_animationMessage.reply_animation	  s     ` 594O4Oe02B5
 /
++ \\^22!!57%%'+%!(C-+/#- 3 
 
 	
/

s!   A A<A AA A r   emojic
                   #    U R                  XX95      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUS9I Sh  vN $  N9 N7f)aO  Shortcut for::

     await bot.send_sticker(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   rx  r^   r   rr  rs  rt  ru  rr   ra  ry  r   r  )rp  r<  send_sticker)rx   r   rx  r8  r   ra  ry  r   r  r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                      rj   reply_stickerMessage.reply_sticker`	  s     P 594O4O05
 /
++ \\^00!57%%'+%!(C+/ 1 
 
 	
/

s!   AA4AAAAr   supports_streamingc                   #    U R                  UUUU5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUU	U
UUUUUUUUS9I Sh  vN $  NB N7f)aK  Shortcut for::

     await bot.send_video(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r  r   rx  r^   r   rr  rs  rt  ru  r  r  rv  r  rr   ra  r   r  ry  r   r  r  )rp  r<  
send_video)rx   r   r  r   rx  r8  r   r  r  rv  r  ra  r   ry  r   r  r  r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                               rj   reply_videoMessage.reply_video	  s     b 594O4Oe02B5
 /
++ \\^..!57%%'+%!1!(C-+/#/ / 
 
 	
/

s!   A!A=A!AA!A!r   rE  c                   #    U R                  XX[5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUUU	U
S9I Sh  vN $  N< N7f)aU  Shortcut for::

     await bot.send_video_note(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r  rE  rx  r^   r   rr  rs  rt  ru  rr   ra  r  ry  r   r  )rp  r<  send_video_note)rx   r   r  rE  rx  r8  r   ra  ry  r   r  r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                         rj   reply_video_noteMessage.reply_video_note	  s     V 594O4O05
 /
++ \\^33!!57%%'+%!(C+/# 4 
 
 	
/

r  r   c                   #    U R                  XX\5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUU	UU
US9I Sh  vN $  N= N7f)aK  Shortcut for::

     await bot.send_voice(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r   r  r   rx  r^   r   rr  rs  rt  ru  rv  rr   ra  r   r  ry  r   )rp  r<  
send_voice)rx   r   r  r   rx  r8  r   rv  ra  r   ry  r   r^   r  r   rk  rr  rs  rt  ru  rr   r]   ro  s                          rj   reply_voiceMessage.reply_voice,
  s     X 594O4O05
 /
++ \\^..!57%%'+%!!(C-+/% / 
 
 	
/

r  )r   r   rk  rr  rs  rt  ru  rr   latitude	longitudelive_periodhorizontal_accuracyheadingproximity_alert_radiusc                   #    U R                  UXU5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUUU	U
UUS9I Sh  vN $  N> N7f)aQ  Shortcut for::

     await bot.send_location(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r  r  rx  r^   r   rr  rs  rt  ru  r   r  rr   r  r  r  ra  ry  r   )rp  r<  send_location)rx   r  r  rx  r8  r   r  r  r  r  ra  ry  r   r^   r   r   rk  rr  rs  rt  ru  rr   r]   ro  s                           rj   reply_locationMessage.reply_locationp
  s     Z 594O4Oe2B5
 /
++ \\^11!57%%'+%#! 3#9(C+/' 2 
 
 	
/

r  )r   r   rk  rr  rs  rt  ru  rr   addressfoursquare_idfoursquare_typegoogle_place_idgoogle_place_typec                   #    U R                  UUX5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUU	UU
UUUUS9I Sh  vN $  N@ N7f)aK  Shortcut for::

     await bot.send_venue(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r  r  r  r  r  rx  r^   r   rr  rs  rt  ru  r   r  rr   r  r  ra  ry  r   )rp  r<  
send_venue)rx   r  r  r  r  r  rx  r8  r   r  r  r  ra  ry  r   r^   r   r   rk  rr  rs  rt  ru  rr   r]   ro  s                             rj   reply_venueMessage.reply_venue
  s     ^ 594O4Oe05
 /
++ \\^..'!57%%'+%+!+/(C+/+ / 
 
 	
/

r  )r   r   rk  rr  rs  rt  ru  rr   phone_number
first_name	last_namevcardc                   #    U R                  XX[5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUUUU	U
S9I Sh  vN $  N< N7f)aO  Shortcut for::

     await bot.send_contact(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r  r  r  rx  r^   r   rr  rs  rt  ru  r   r  rr   ra  ry  r   )rp  r<  send_contact)rx   r  r  r  rx  r8  r   r  ra  ry  r   r^   r   r   rk  rr  rs  rt  ru  rr   r]   ro  s                         rj   reply_contactMessage.reply_contact   s     V 594O4O05
 /
++ \\^00%!!57%%'+%!(C+/# 1 
 
 	
/

r  questionoptionsis_anonymousr#  allows_multiple_answerscorrect_option_id	is_closedexplanationexplanation_parse_modeopen_period
close_dateexplanation_entitiesc                   #    U R                  UUU	U5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUU
UUUUUUUUUUUUUS9I Sh  vN $  NC N7f)aI  Shortcut for::

     await bot.send_poll(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r  r  r  r#  r  r  r  rx  r^   r   rr  rs  rt  ru  r  r  r  r  rr   ra  r  ry  r   )rp  r<  	send_poll)rx   r  r  r  r#  r  r  r  rx  r8  r   r  r  r  r  ra  r  ry  r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                                rj   
reply_pollMessage.reply_pollB  s     d 594O4Oe02B5
 /
++ \\^--%$;/!57%%'+%##9#!!(C!5+/1 . 
 
 	
/

s!   A"A>A"A A" A"c	                   #    U R                  XX(5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUS9I Sh  vN $  N8 N7f)aI  Shortcut for::

     await bot.send_dice(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   rx  r^   r   rr  rs  rt  ru  r  rr   ra  ry  r   )rp  r<  	send_dice)rx   rx  r8  r   r  ra  ry  r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                     rj   
reply_diceMessage.reply_dice  s     N 594O4O05
 /
++ \\^--!57%%'+%!(C+/ . 
 
 	
/

!   AA3AAAA)rr  rs  rt  ru  rr   actionc                z   #    U R                  5       R                  U R                  UUUUUUUS9I Sh  vN $  N7f)a  Shortcut for::

     await bot.send_chat_action(update.effective_message.chat_id, *args, **kwargs)

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

.. versionadded:: 13.2

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

)r]   r   r  rr  rs  rt  ru  rr   N)r<  send_chat_actionr]   )rx   r  r   rr  rs  rt  ru  rr   s           rj   reply_chat_actionMessage.reply_chat_action  sK     . \\^44LL/%'+%! 5 	
 	
 		
 	
s   2;9;game_short_namer    c	                   #    U R                  XX85      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUUUUUS9I Sh  vN $  N8 N7f)aa  Shortcut for::

     await bot.send_game(update.effective_message.chat_id, *args, **kwargs)

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

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)r]   r  rx  r^   r   rr  rs  rt  ru  rr   ra  ry  r   )rp  r<  	send_game)rx   r  rx  r8  r   ra  ry  r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                     rj   
reply_gameMessage.reply_game  s     R 594O4O05
 /
++ \\^--+!57%%'+%!(C+/ . 
 
 	
/

r  descriptionpayloadprovider_tokencurrencypricesrU   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                b  #    U R                  UUUU5      I Sh  vN u  n$n%U R                  5       R                  " S#0 SU$_SU_SU_SU_SU_SU_SU_S	U_S
U_SU	_SU
_SU_SU_SU_SU_SU_SU_SU_SU%_SU_SU_SU_SU_SU_SU _SU!_SU"_SU#_SU_SU_S U_S!U_S"U_6I Sh  vN $  N N7f)$a  Shortcut for::

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

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

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.

Nr]   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  rx  r^   r   r	  r
  r  rr  rs  rt  ru  rr   ra  r  r  ry  r   r_   )rp  r<  send_invoice)&rx   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  rx  r8  r   r	  r
  r  ra  r  r  ry  r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s&                                         rj   reply_invoiceMessage.reply_invoice*  s    N 594O4Oe02B5
 /
++ \\^00 "
"
"
 $"
 	"

 *"
 "
 "
 ,"
  "
 ""
 $"
 &"
  "
 0"
 ""
  #8!"
" $#"
$ "6%"
& 8'"
( &)"
* (+"
, +H-"
. $:/"
0 &1"
2 (3"
4 ,5"
6 &7"
8 "9"
: )D;"
< *="
> #8?"
@ ,A"
B 0C"
 "
 "	
/
"
s"   B/B+BB/&B-'B/-B/r]   c                   #    U R                  5       R                  UU R                  U R                  UUUUUUUU	S9I Sh  vN $  N7f)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.Chat.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.

)r]   from_chat_idrp   rx  ry  r   rr  rs  rt  ru  rr   N)r<  forward_messager]   rp   )
rx   r]   rx  ry  r   rr  rs  rt  ru  rr   s
             rj   forwardMessage.forward  sY     H \\^33!5+/%'+%! 4 
 
 	
 
s   ?AAArV   c                   #    U R                  5       R                  UU R                  U R                  UUUUUUUUUUUUUU	U
S9I Sh  vN $  N7f)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.

)r]   r  rp   r   rv  r   rx  r8  r^   ra  r   rr  rs  rt  ru  rr   ry  r   N)r<  copy_messager]   rp   )rx   r]   r   rv  r   rx  r8  ra  r   ry  r   r^   rr  rs  rt  ru  rr   s                    rj   copyMessage.copy  sn     H \\^00!-!5 3-(C%%'+%!+/% 1 
 
 	
 
s   AAA	Ar  c                   #    U R                  XX|5      I Sh  vN u  nnU R                  5       R                  UUUUUUUUUU	UUUUUU
US9I Sh  vN $  N< N7f)a  Shortcut for::

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

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

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)r]   r  rp   r   rv  r   rx  r^   ra  r   rr  rs  rt  ru  rr   ry  r   )rp  r<  r  )rx   r  rp   r   rv  r   rx  r8  ra  r   ry  r   r^   r   rk  rr  rs  rt  ru  rr   r]   ro  s                         rj   
reply_copyMessage.reply_copy  s     b 594O4O05
 /
++ \\^00%!!-!57(C%%'+%!+/# 1 
 
 	
/

r  c                   #    U R                  5       R                  U R                  U R                  UUUUUUUU	U
UUSS9I Sh  vN $  N7f)a  Shortcut for::

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

For the documentation of the arguments, please see :meth:`telegram.Bot.edit_message_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.

Returns:
    :class:`telegram.Message`: On success, if edited message is sent by the bot, the
    edited Message is returned, otherwise ``True`` is returned.

N)r]   rp   r   rv  rw  r   r   rr  rs  rt  ru  rr   r   inline_message_id)r<  edit_message_textr]   rp   )rx   r   rv  rw  r   r   r   rr  rs  rt  ru  rr   s               rj   	edit_textMessage.edit_textK  sb     B \\^55LL!%=!5%%'+%!" 6 
 
 	
 
s   AAA	Ac                   #    U R                  5       R                  U R                  U R                  UUUUUUUU	USS9I Sh  vN $  N7f)a  Shortcut for::

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

For the documentation of the arguments, please see
:meth:`telegram.Bot.edit_message_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.

Returns:
    :class:`telegram.Message`: On success, if edited message is sent by the bot, the
    edited Message is returned, otherwise ``True`` is returned.

N)r]   rp   r   r   rr  rs  rt  ru  rv  rr   r   r  )r<  edit_message_captionr]   rp   )
rx   r   r   rv  r   rr  rs  rt  ru  rr   s
             rj   edit_captionMessage.edit_caption}  s\     @ \\^88LL%%'+%!!-" 9 
 
 	
 
   A A	AA	rP   c                   #    U R                  5       R                  UU R                  U R                  UUUUUUSS9
I Sh  vN $  N7f)a  Shortcut for::

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

For the documentation of the arguments, please see
:meth:`telegram.Bot.edit_message_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.

Returns:
    :class:`telegram.Message`: On success, if edited message is not an inline message, the
    edited Message is returned, otherwise ``True`` is returned.

N)
r  r]   rp   r   rr  rs  rt  ru  rr   r  )r<  edit_message_mediar]   rp   )rx   r  r   rr  rs  rt  ru  rr   s           rj   
edit_mediaMessage.edit_media  sU     < \\^66LL%%'+%!" 7 
 
 	
 
s   >A AAc                   #    U R                  5       R                  U R                  U R                  UUUUUUSS9	I Sh  vN $  N7f)a  Shortcut for::

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

For the documentation of the arguments, please see
:meth:`telegram.Bot.edit_message_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.

Returns:
    :class:`telegram.Message`: On success, if edited message is sent by the bot, the
    edited Message is returned, otherwise ``True`` is returned.
N	r]   rp   r   rr  rs  rt  ru  rr   r  )r<  edit_message_reply_markupr]   rp   rx   r   rr  rs  rt  ru  rr   s          rj   edit_reply_markupMessage.edit_reply_markup  sR     8 \\^==LL%%'+%!" > 

 

 
	
 

   =AA A)r   rr  rs  rt  ru  rr   c                   #    U R                  5       R                  U R                  U R                  UUUUUU	U
UUUUUSS9I Sh  vN $  N7f)a  Shortcut for::

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

For the documentation of the arguments, please see
:meth:`telegram.Bot.edit_message_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.

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)r]   rp   r  r  r   r   rr  rs  rt  ru  rr   r  r  r  r  )r<  edit_message_live_locationr]   rp   )rx   r  r  r   r  r  r  r   rr  rs  rt  ru  rr   s                rj   edit_live_locationMessage.edit_live_location  se     D \\^>>LL%%'+%! 3#9" ? 
 
 	
 
s   AAA
Ac                   #    U R                  5       R                  U R                  U R                  UUUUUUSS9	I Sh  vN $  N7f)a  Shortcut for::

     await bot.stop_message_live_location(
         chat_id=message.chat_id, message_id=message.message_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.

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_locationr]   rp   r/  s          rj   stop_live_locationMessage.stop_live_location3  sR     8 \\^>>LL%%'+%!" ? 

 

 
	
 

r2  user_idscoreforcedisable_edit_messagec                   #    U R                  5       R                  U R                  U R                  UUUUUUUUU	SS9I Sh  vN $  N7f)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)r]   rp   r;  r<  r=  r>  rr  rs  rt  ru  rr   r  )r<  set_game_scorer]   rp   )
rx   r;  r<  r=  r>  rr  rs  rt  ru  rr   s
             rj   r@  Message.set_game_score[  s[     < \\^22LL!5%'+%!" 3 
 
 	
 
r'  )rK   .c                   #    U R                  5       R                  U R                  U R                  UUUUUUSS9	I Sh  vN $  N7f)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)	r]   rp   r;  rr  rs  rt  ru  rr   r  )r<  get_game_high_scoresr]   rp   )rx   r;  rr  rs  rt  ru  rr   s          rj   rC  Message.get_game_high_scores  sR     6 \\^88LL%'+%!" 9 

 

 
	
 

r2  c          
         #    U R                  5       R                  U R                  U R                  UUUUUS9I Sh  vN $  N7f)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.

r]   rp   rr  rs  rt  ru  rr   N)r<  delete_messager]   rp   rx   rr  rs  rt  ru  rr   s         rj   deleteMessage.delete  sL     * \\^22LL%'+%! 3 
 
 	
 
   ;AAAc                   #    U R                  5       R                  U R                  U R                  UUUUUUS9I Sh  vN $  N7f)aE  Shortcut for::

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

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

Returns:
    :class:`telegram.Poll`: On success, the stopped Poll with the final results is
    returned.

)r]   rp   r   rr  rs  rt  ru  rr   N)r<  	stop_pollr]   rp   r/  s          rj   rM  Message.stop_poll  sO     . \\^--LL%%'+%! . 	
 	
 		
 	
   <AAAc                   #    U R                  5       R                  U R                  U R                  UUUUUUS9I Sh  vN $  N7f)a(  Shortcut for::

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

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

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

)r]   rp   rx  rr  rs  rt  ru  rr   N)r<  pin_chat_messager]   rp   )rx   rx  rr  rs  rt  ru  rr   s          rj   pinMessage.pin  sO     , \\^44LL!5%'+%! 5 	
 	
 		
 	
rO  c          
         #    U R                  5       R                  U R                  U R                  UUUUUS9I Sh  vN $  N7f)a,  Shortcut for::

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

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

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

rF  N)r<  unpin_chat_messager]   rp   rH  s         rj   unpinMessage.unpin  sL     * \\^66LL%'+%! 7 
 
 	
 
rK  nameicon_custom_emoji_idc                   #    U R                  5       R                  U R                  U R                  UUUUUUUS9	I Sh  vN $  N7f)aQ  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.
)	r]   r   rX  rY  rr  rs  rt  ru  rr   N)r<  edit_forum_topicr]   r   )rx   rX  rY  rr  rs  rt  ru  rr   s           rj   r[  Message.edit_forum_topic0  sT     4 \\^44LL"44!5%'+%! 5 

 

 
	
 

r2  c          
         #    U R                  5       R                  U R                  U R                  UUUUUS9I Sh  vN $  N7f)aS  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.
r]   r   rr  rs  rt  ru  rr   N)r<  close_forum_topicr]   r   rH  s         rj   r_  Message.close_forum_topicV  sN     0 \\^55LL"44%'+%! 6 
 
 	
 
rK  c          
         #    U R                  5       R                  U R                  U R                  UUUUUS9I Sh  vN $  N7f)aT  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_topicr]   r   rH  s         rj   rb  Message.reopen_forum_topicx  N     0 \\^66LL"44%'+%! 7 
 
 	
 
rK  c          
         #    U R                  5       R                  U R                  U R                  UUUUUS9I Sh  vN $  N7f)aU  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_topicr]   r   rH  s         rj   rf  Message.delete_forum_topic  rd  rK  c          
         #    U R                  5       R                  U R                  U R                  UUUUUS9I Sh  vN $  N7f)am  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_messagesr]   r   rH  s         rj   ri  &Message.unpin_all_forum_topic_messages  sO     0 \\^BBLL"44%'+%! C 
 
 	
 
rK  reactionrX   is_bigc                   #    U R                  5       R                  U R                  U R                  UUUUUUUS9	I Sh  vN $  N7f)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.
)	r]   rp   rk  rl  rr  rs  rt  ru  rr   N)r<  set_message_reactionr]   rp   )rx   rk  rl  rr  rs  rt  ru  rr   s           rj   set_reactionMessage.set_reaction  sR     4 \\^88LL%'+%! 9 

 

 
	
 

r2  rY  c                     U R                   (       d  [        S5      eU R                   R                  S5      nX!R                  S-  UR                  UR                  -   S-   nUR                  S5      $ )aB  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'.rB  r}   )r   rF  rG  rD  rE  decoderx   rY  entity_texts      rj   parse_entityMessage.parse_entity  sb    & yy<==ii&&{3!--!"3v}}v}}7TXY6YZ!!+..ri   c                     U R                   (       d  [        S5      eU R                   R                  S5      nX!R                  S-  UR                  UR                  -   S-   nUR                  S5      $ )aH  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'.rB  r}   )r   rF  rG  rD  rE  rr  rs  s      rj   parse_caption_entityMessage.parse_caption_entity  sb    & ||?@@ll))+6!--!"3v}}v}}7TXY6YZ!!+..ri   typesc                     Uc  [         R                  nU R                   Vs0 s H%  o"R                  U;   d  M  X R	                  U5      _M'     sn$ s  snf )a  
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#   	ALL_TYPESr   r#  ru  rx   rz  rY  s      rj   parse_entitiesMessage.parse_entities8  sW    . =!++E =AMM
<I&[[\aMa-F%%f--M
 	
 
s
   AAc                     Uc  [         R                  nU R                   Vs0 s H&  nUR                  U;   d  M  X R	                  U5      _M(     sn$ s  snf )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#   r|  r   r#  rx  r}  s      rj   parse_caption_entitiesMessage.parse_caption_entitiesV  s]    2 =!++E //
/{{e# 6F--f55/
 	
 
s
   AAmessage_texturledrD  c                 z   Uc  g UR                  S5      nSnSn[        UR                  5       S S9n/ n	U GHW  u  pX;   a  M  U VVs0 s H`  u  pUR                  U
R                  :  d  M!  UR                  UR                  -   U
R                  U
R                  -   ::  d  MW  X:w  d  M^  X_Mb     nnnU	R                  [        UR                  5       5      5        U(       a  U R                  XX:R                  S9nO[        U5      nU
R                  [        R                  :X  a  SU
R                   SU S	3nGOU
R                  [        R                  :X  a0  U
R                  (       a  S
U
R                  R                    SU S	3nGOU
R                  [        R"                  :X  a  U(       a  SU SU S	3nGOU
R                  [        R$                  :X  a  SU S3nGO^U
R                  [        R&                  :X  a  SU S3nGO8U
R                  [        R(                  :X  a  SU S3nGOU
R                  [        R*                  :X  a  SU S3nOU
R                  [        R,                  :X  a,  U
R.                  (       a  SU
R.                   SU S3nOSU S3nOU
R                  [        R0                  :X  a  SU S3nO~U
R                  [        R2                  :X  a  SU S3nOYU
R                  [        R4                  :X  a  SU S3nO4U
R                  [        R6                  :X  a  SU
R8                   SU S3nOUnU[        XWS-  U
R                  U-
  S-   R;                  S5      5      U-   -  nU
R                  U-
  U
R                  -   nGMZ     U[        XWS-  S  R;                  S5      5      -  nU$ s  snnf ) NrB   r   c                      U S   R                   $ Nr   rD  items    rj   <lambda>%Message._parse_html.<locals>.<lambda>      DGNNri   key)r  rD  z	<a href="z">z</a>z<a href="tg://user?id=z<blockquote>z</blockquote>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}   )rG  sorteditemsrD  rE  extendrH  keys_parse_htmlr   r#  r#   	TEXT_LINKurlTEXT_MENTIONuserr  URL
BLOCKQUOTEBOLDITALICCODEPRElanguage	UNDERLINESTRIKETHROUGHSPOILERCUSTOM_EMOJIcustom_emoji_idrr  )r   r  r   r  rD  utf_16_text	html_textlast_offsetsorted_entitiesparsed_entitiesrY  r   etnested_entitiesescaped_textinserts                    rj   r  Message._parse_htmlx  sw    "))+6	 !17RS+LF( .-FQ88v}},  HHqxx'6==6==+HH  K	 -   ""4(<(<(>#?@"}}  /    &d|{{m555$VZZL<.E : ::v{{1&++..1AL>QUV 1 11e$\N"\N$G 8 88'~]C 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VWbc I !--&06==@Ky ,~ 	VKa(9:AA+NOO	{s   	 N7-2N7#N7*N7c                 T    U R                  U R                  U R                  5       SS9$ )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 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r  r  r   r~  r   s    rj   	text_htmlMessage.text_html  s)    . 		4+>+>+@NNri   c                 T    U R                  U R                  U R                  5       SS9$ )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    rj   text_html_urledMessage.text_html_urled  s)    . 		4+>+>+@MMri   c                 T    U R                  U R                  U R                  5       SS9$ )a1  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    rj   caption_htmlMessage.caption_html  s*    . d.I.I.KSXYYri   c                 T    U R                  U R                  U R                  5       SS9$ )aC  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  r  r   s    rj   caption_html_urledMessage.caption_html_urled  s*    . d.I.I.KSWXXri   versionc           	      \
  ^ US:X  a  [         R                  [         R                  [         R                  [         R                  [         R
                  4 HU  m[        U4S jU 5       5      (       d  M  TR                  R                  5       R                  SS5      n[        U S35      e   Uc  g UR                  S5      nSnSn	[        UR                  5       S	 S
9n
/ nU
 GH  u  pX;   a  M  U
 VVs0 s H`  u  pUR                  UR                  :  d  M!  UR                  UR                  -   UR                  UR                  -   ::  d  MW  X:w  d  M^  X_Mb     nnnUR!                  [#        UR%                  5       5      5        U(       a/  US:  a  [        S5      eU R'                  UUUUR                  US9nO	[)        XS9nUR*                  [         R,                  :X  aA  US:X  a  UR.                  nO#[)        UR.                  U[         R,                  S9nSU SU S3nGOUR*                  [         R0                  :X  a0  UR2                  (       a  SU SUR2                  R4                   S3nGO<UR*                  [         R6                  :X  a  U(       a  US:X  a  UOUnSU SU S3nGOUR*                  [         R8                  :X  a  SU S3nGOUR*                  [         R:                  :X  a  SU S3nGOUR*                  [         R<                  :X  a   S[)        X[         R<                  5       S3nGOxUR*                  [         R>                  :X  a]  [)        X[         R>                  S9nUR@                  (       a  SUR@                   S3nOURC                  S5      (       a  SnOSnU U S3nOUR*                  [         R                  :X  a  SU S3nOUR*                  [         R                  :X  a  SU S3nOUR*                  [         R                  :X  a  SU S3nOUR*                  [         R                  :X  a#  SSRE                  URG                  5       5      -   nOMUR*                  [         R
                  :X  a-  [)        URH                  U[         R
                  S9nSU S U S3nOUnU[)        XyS-  UR                  U-
  S-   RK                  S5      US9U-   -  nUR                  U-
  UR                  -   n	GM     U[)        XyS-  S  RK                  S5      US9-  nU$ s  snnf )!NrC  c              3   @   >#    U  H  oR                   T:H  v   M     g 7fN)r#  ).0rY  entity_types     rj   	<genexpr>*Message._parse_markdown.<locals>.<genexpr>B  s     If{{k1s   _ z2 entities are not supported for Markdown version 1rB  r  r   c                      U S   R                   $ r  r  r  s    rj   r  )Message._parse_markdown.<locals>.<lambda>M  r  ri   r  r}   z8Nested entities are not supported for Markdown version 1)r  rD  r  )r  )r  r  [z]()z](tg://user?id=*`z```
\z```
__~z||>z
>z![z](tg://emoji?id=)&r#   r  r  r  r  r  r  rX  r  replacerL  rG  r  r  rD  rE  r  rH  r  _parse_markdownrG   r#  r  r  r  r  r  r  r  r  r  r  r  
startswithjoin
splitlinesr  rr  )r   r  r   r  r  rD  rX  r  markdown_textr  r  r  rY  r   r  r  r  r  r  r  r)  codeprefixr  r  s                           @rj   r  Message._parse_markdown1  s    a<''++%%((**  IIII&++113;;CED$v-_%`aa  "))+6 !17RS+LF( .-FQ88v}},  HHqxx'6==6==+HH  K	 -   ""4(<(<(>#?@Q;$%_``"22#!==#  3    /t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_TM<N<NOPPQR 1 11&t-J[J[\??"6??"326F__T**"F$F"8D6- 7 77l^2. ; ;;\N!, 5 55l^2. 8 88uzz,*A*A*CDD : :: #2**# - : :#
 l^+;O;LAN%
 a6==63IQ2NOVV# $	 M !--&06==@Kw ,| 	a)*11+>
 	

 s   6 T(2T(T(T(c                 T    U R                  U R                  U R                  5       SS9$ )a0  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    rj   text_markdownMessage.text_markdown  s)    : ##DIIt/B/B/DE#RRri   c                 V    U R                  U R                  U R                  5       SSS9$ )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}   r  r  r  r   s    rj   text_markdown_v2Message.text_markdown_v2  s,    . ##DIIt/B/B/DE[\#]]ri   c                 T    U R                  U R                  U R                  5       SS9$ )aL  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    rj   text_markdown_urledMessage.text_markdown_urled  s)    < ##DIIt/B/B/DD#QQri   c                 V    U R                  U R                  U R                  5       SSS9$ )ar  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    rj   text_markdown_v2_urledMessage.text_markdown_v2_urled  s,    . ##DIIt/B/B/DDZ[#\\ri   c                 T    U R                  U R                  U R                  5       SS9$ )aI  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    rj   caption_markdownMessage.caption_markdown&  s*    8 ##DLL$2M2M2OW\#]]ri   c                 V    U R                  U R                  U R                  5       SSS9$ )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    rj   caption_markdown_v2Message.caption_markdown_v2D  s2    . ##LL$557ua $ 
 	
ri   c                 T    U R                  U R                  U R                  5       SS9$ )ao  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    rj   caption_markdown_urledMessage.caption_markdown_urled_  s*    < ##DLL$2M2M2OW[#\\ri   c                 V    U R                  U R                  U R                  5       SSS9$ )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    rj   caption_markdown_v2_urled!Message.caption_markdown_v2_urled  s2    . ##LL$557tQ $ 
 	
ri   )Sr   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   rn   r   r   r   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   rp   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   )NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNr  )NNNNNNrd  )Fr   )FrC  r   )r`   ra   rb   rc   r   rd   rf   r   r   r   r/   re   r   r   r   r   r   r   r   r   r   r   r   r   r   rl   r%   r&   r   r$   r'   r    r   r(   rA   r>   r?   r"   r@   rB   r   r   r   r   r   r   rC   r+   r*   r-   r,   r!   r7   ru   r   r   r   r   r   r   r   r   r   r]   r  r)  r   r   r   r6  r)   r>  r	   r#   r]  r3   r9   r[   ri  rp  r:   floatr}  r  r  r  r  r6   r  r  r  r  r  r  r  r  r  r  r  r5   r  r  r  r  objectr  r  r  r  r!  r%  r*  r0  r5  r9  r@  rC  rI  rM  rR  rV  r[  r_  rb  rf  ri  ro  ru  rx  r   r   r~  r  r  r  r  r  r  r8   r  r  r  r  r  r  r  r  r  rh   r   r   s   @rj   r   r     s:   \	~PIn %)'+,015480415"8<@D!%'+#/3%)!%!%*.59!%%)'+!%+/(,8<,0-126/3,0.2=A%):>+/*.(,+/)-04#-17;#"&GK&*9=59RVUY=A/304-1+/+/;?9==A9=HLLP=A,0,0,0!%)-<@8<8<.2=A8<'+48ed:h *.id:d: d: 	d:
 D>d: tnd: $D>d: "*#d: x001d: #9-d: H--.d: smd: 8O45d: #8O#<=d: d:  8$!d:" tn#d:$ +,%d:& '"'d:( )d:* +d:, Y'-d:. #8D>2/d:0 #1d:2 '"3d:4 8$5d:6 7d:8 #4.9d:: !;d:< !)!45=d:> $D>?d:@ %TNAd:B "*$Cd:D 'tnEd:F %SMGd:H 'smId:J !!9:Kd:L '"Md:N %%67Od:P $C=Qd:R #3-Sd:T !Ud:V $C=Wd:X I&Yd:Z  -[d:\ tn]d:^ &c]_d:` 34ad:b tncd:d $ed:f $,,C#Dgd:h d^id:j %%56kd:l #>2md:n *22N)Ood:p ,44Q+Rqd:r ''9:sd:t 'tnud:v  (~wd:x z*yd:z #4.{d:| $C=}d:~ &&78d:@ %%56Ad:B ''9:Cd:D %%56Ed:F %--D$EGd:H '//H&IId:J ''9:Kd:L $D>Md:N j)Od:P j)Qd:R Sd:T :&Ud:V %%89Wd:X ##45Yd:Z ##45[d:\ {+]d:^ ''9:_d:` !!45ad:b $cd:d !1ed:h X&id: d:L	$ 	 !Xj1 ! !( "htn " " '8D> ' ' -# - - '8C= ' ' )Xc] ) ) "hx'8'89 " ""    C   hsm  & i38H- i3E i3hy>Q i3 i3V @*	%	
@* @*F KOd^:B3-	/	"0 26J1J1!)#J1	sHU=##5677	8J1\  $%)486B+/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%3T %13?/;-1.26B8<*6+/?K8<@
 !%8<(4)5+7(4)-+@
@
 SM@
 #+4.	@

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 'tn@
 &c]@
 {+@
 }@
 &.d^@
 "$@
 $C=@
 ##45@
 '"@
 ~@
  5|!345!@
" uo#@
$  %@
& "%'@
( uo)@
* X&+@
, 
-@
L (,"267;$(/;-1.2%)0<%)>B6BDH*6+/8<)N
, !%8<(4)5+7(4)-9N
N
 #N
 tn	N

 smN
 "*$N
 $O4N
 D>N
 'tnN
 &c]N
 {+N
 c]N
 !)N
 c]N
 U3(9(9#9:;N
  &.d^!N
" 'x'@A#N
$ "$%N
& $C='N
( ##45)N
, ~-N
. 5|!345/N
0 uo1N
2  3N
4 "%5N
6 uo7N
8 X&9N
: 
;N
d 0<-1.2#6B*6+/8<8
 !%8<(4)5+7(4)-#8
&tn8
 &c]8
 {+	8

 }8
 &.d^8
 "$8
 $C=8
 ##458
 ~8
 5|!3458
 uo8
  8
 "%8
  uo!8
" X&#8
$ 
%8
z ,0 

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

 uo 
   
 "% 
 uo 
 X& 
 
 
J 0<-19=6B*6+/8<:
 !%8<(4)5+7(4)-#:
:
 'tn:
 &c]	:

 56:
 &.d^:
 "$:
 $C=:
 ##45:
 ~:
 5|!345:
 uo:
  :
 "%:
  uo!:
" X&#:
$ 
%:
H *.#'$(%)&*$(,0%)04&*/;-19=6:8<156B(,9=*6+/8<;l
> !%8<(4)5+7(4)-Kl
l
 l
 	l

 l
 l
 (l
 "#l
 C=l
 SMl
 c]l
 sml
 D>l
 $D>l
 TNl
   (~!l
" d^#l
$ 'tn%l
& &c]'l
( 56)l
*  c6k 23+l
, (0~-l
. !)/l
0 &.d^1l
2 !3l
4  (65l
6 "$7l
8 $C=9l
: ##45;l
> ~?l
@ 5|!345Al
B uoCl
D  El
F "%Gl
H uoIl
J X&Kl
L 
Ml
b 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/;-16B.2*6+/8<7
 )5)5+7(4)-%7
sCx7
 #7
 SM	7

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

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

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

 #8O#<=-
 uo-
  -
 "%-
 uo-
 X&-
 
y$	-
d :>)

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

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

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

 &e_2
 #2
 !)2
 8$2
 uo2
  2
 "%2
 uo2
 X&2
 
y$	2
l :>&
 )5)5+7(4)-&
56&
 uo	&

  &
 "%&
 uo&
 X&&
 
y$	&
X !%/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& 
 
 
H 0<
 )5)5+7(4)-
&tn
 uo	

  
 "%
 uo
 X&
 

H )5)5+7(4)-
 uo
  	

 "%
 uo
 X&
 

B #.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/= /S /4/= /S /4
HT#Y$7 
4WZHZC[ 
> ,0 
d3i( 
	mS 	! 
D 
 RsmR }c)*R 	R
 R 
#R Rh O3 O O0 N N N0 Zc Z Z0 YC Y Y0 
 #$AsmA }c)*A 	A
 !A A 
#A AF Ss S S< ^# ^ ^0 RS R R> ] ] ]0 ^# ^ ^: 
S 
 
4 ] ] ]> 
3 
 
ri   r   )r   r   rI  htmlr   typingr   r   r   r   r   r	   r
   r   telegram._chatr   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._passport.passportdatar$   telegram._payment.invoicer%   #telegram._payment.successfulpaymentr&   telegram._pollr'   !telegram._proximityalerttriggeredr(   r1  r)   telegram._sharedr*   r+   r,   telegram._storyr-   telegram._telegramobjectr.   telegram._userr/   telegram._utils.argumentparsingr0   telegram._utils.datetimer1   r2   telegram._utils.defaultvaluer3   r4   telegram._utils.typesr5   r6   r7   r8   r9   r:   telegram._utils.warningsr;   #telegram._utils.warnings_transitionr<   r=   telegram._videochatr>   r?   r@   rA   telegram._webappdatarB   telegram._writeaccessallowedrC   telegram.constantsrD   rE   rF   telegram.helpersrG   telegram.warningsrH   telegramrI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   rl   r   r   r_   ri   rj   <module>r&     s  ( I  	  Y Y Y   / ' + - - / + ' ' / '  & F ; Q 1 8 - A  E + @ @ ! 3  > Q C  *  , ; J J , 3    *&9 &|3~ |3~2 D@F
& @F
ri   