U
    dd                    @   sr  d Z ddlmZ ddlmZ ddlmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ddl%m'Z( ddl%m)Z* er^ddlm+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA G dd deZBdS )z?This module contains an object that represents a Telegram Chat.    )datetime)escape)TYPE_CHECKINGClassVarOptionalSequenceTupleUnion)	constants)ChatLocation)ChatPermissions)	ChatPhoto)
ForumTopic)
MenuButton)TelegramObject)enum)parse_sequence_arg)DEFAULT_NONE)DVInput	FileInputJSONDictODVInputReplyMarkup)escape_markdown)mention_html)mention_markdown)	AnimationAudioBotChatInviteLink
ChatMemberContactDocumentInlineKeyboardMarkupInputMediaAudioInputMediaDocumentInputMediaPhotoInputMediaVideoLabeledPriceLocationMessageMessageEntity	MessageId	PhotoSizeStickerVenueVideo	VideoNoteVoicec                $       sr  e Zd ZU dZdZejjZee	 e
d< ejjZee	 e
d< ejjZee	 e
d< ejjZee	 e
d< ejjZee	 e
d< ddd	ee	e	e	e	e	ee	e	d
ee	eee	eeeeeeeeeee	 e	eeed fddZeee	 dddZeee	 dddZeee	 dddZeee ded  d fddZde	e	dddZde	e	dddZde	e	dddZ e!e!e!e!dd e"e# e"e# e"e# e"e# eed!d"d#Z$e!e!e!e!dd e"e# e"e# e"e# e"e# ee%d$ d!d%d&Z&e!e!e!e!dd e"e# e"e# e"e# e"e# eed!d'd(Z'e!e!e!e!dd e(e	ef e"e# e"e# e"e# e"e# ed)d*d+d,Z)de!e!e!e!dd e(e	ef ee(ee*f e"e# e"e# e"e# e"e# eed-	d.d/Z+e!e!e!e!dd ee"e# e"e# e"e# e"e# eed0d1d2Z,e!e!e!e!dd e(e	ef e"e# e"e# e"e# e"e# eed3d4d5Z-e!e!e!e!dd ee"e# e"e# e"e# e"e# eed0d6d7Z.e!e!e!e!dd e(e	ef e"e# e"e# e"e# e"e# eed3d8d9Z/de!e!e!e!dd e(e	ef ee"e# e"e# e"e# e"e# eed:d;d<Z0de!e!e!e!dd e(e	ef eeeeeeeeeeeee"e# e"e# e"e# e"e# eed=d>d?Z1de!e!e!e!dd e(e	ef ee(ee*f ee"e# e"e# e"e# e"e# eed@
dAdBZ2de!e!e!e!dd eee"e# e"e# e"e# e"e# eedCdDdEZ3e!e!e!e!dd e(ee	f e	e"e# e"e# e"e# e"e# eedFdGdHZ4e!dIe!e!dd e5e"e# e"e# e"e# e"e# eedJdKdLZ6e!e!e!e!dd e"e# e"e# e"e# e"e# eed!dMdNZ7e!e!e!e!dd e	e"e# e"e# e"e# e"e# eedOdPdQZ8de!e!e!e!dd e	e"e# e"e# e"e# e"e# eedRdSdTZ9e!fe!e!e!e!dd ee"e e"e# e"e# e"e# e"e# eedUdVdWZ:de!e!e!e!dd ee"e# e"e# e"e# e"e# eedXdYdZZ;e!e!e!e!dd e"e# e"e# e"e# e"e# eed!d[d\Z<e!e!e!dde!de!df	e!e!e!e!dd e	e"e	 e"e e=e ee>e"e ed] e"e ee"e# e"e# e"e# e"e# ed
d^d_d`Z?e!de!e!dfe!dIe!e!dde!ddaee(db  e"e ee"e e"e ee"e# e"e# e"e# e"e# eee	 e"e	 ed] e%dc dddedfZ@de!e!e!e!dd e	ee"e# e"e# e"e# e"e# eedgdhdiZAeAZBde!dde!e!de!ddf
de!dIe!e!ddje(e5dkf e	e=e ee>e"e	 e"e ed] e"e eee	e"e# e"e# e"e# e"e# ed
dldmdnZCddde!ddde!e!df
de!e!e!e!ddoe	e	e	e=e ee>e	e"e e"e edpe"e# e"e# e"e# e"e# ed
dqdrdsZDdddde!dde!de!de!ddfde!dIe!e!ddje(e5dtf ee	e	e	e=e ee>e"e	 e5e"e ed] e"e ee5e	e"e# e"e# e"e# e"e# ed
dudvdwZEde!dde!dde!de!ddfde!dIe!e!ddje(e5dxf e	e=e ee>e"e	 e5ee"e ed] e"e ee5e	e"e# e"e# e"e# e"e# ed
dydzd{ZFe!ddde!e!dfe!e!e!e!dd e"e ee>e	e"e e"e ee"e# e"e# e"e# e"e# ed
d|d}d~ZGe!dde!e!dfe!e!e!e!dd e	e=e ede"e e"e ee"e# e"e# e"e# e"e# ed
dddZHdddddddddde!ddddde!dde!dfe!e!e!e!dd e	e	e	e	e	ed e	e	eeeeeeeee=e ede(e	eIf eee"e eee e"e ee"e# e"e# e"e# e"e# ed
d!ddZJdde!dddddde!e!dfde!e!e!e!dde#e#e=e ee>ee#eee"e e"e ede"e# e"e# e"e# e"e# ed
dddZKddddde!e!dde!de!dddfde!dIe!e!ddje(e5df eeee5e	e"e	 e=e ee>e"e ed] e"e eee5e	e"e# e"e# e"e# e"e# ed
dddZLe!dde!e!ddfe!dIe!e!dd e(e5df e=e ee>e"e e"e ee	e"e# e"e# e"e# e"e# ed
dddZMddddde!ddddde!e!dfde!e!e!e!dde#e#e	e	e	e=e ee>e	e	e	e"e e"e ede"e# e"e# e"e# e"e# ed
dddZNdde!dddde!dde!de!dddfde!dIe!e!ddje(e5df ee	e=e ee>eee"e	 ee5e"e ed] e"e eee5e	e"e# e"e# e"e# e"e# ed
dddZOdde!ddde!e!ddf
de!dIe!e!ddje(e5df eee=e ee>e5e"e e"e ee5e	e"e# e"e# e"e# e"e# ed
dddZPdde!dde!e!de!df
de!dIe!e!ddje(e5df ee	e=e ee>e"e	 e"e ed] e"e ee	e"e# e"e# e"e# e"e# ed
dddZQddddde!ddde!dde!de!dfe!e!e!e!dd e	ee	 ee	eeee"e ee>e	e"e	 ee(ee*f e"e ed] e"e ee"e# e"e# e"e# e"e# ed
dddZRde!de!de!de!df	e!e!e!e!dd e(e	ef ee	e"e	 ed] e=e ee=e e>e"e ee"e# e"e# e"e# e"e# eddddZSde!de!de!de!df	e!e!e!e!dd e(ee	f ee	e"e	 ed] e=e ee=e e>e"e ee"e# e"e# e"e# e"e# eddddZTe!e!dfe!e!e!e!dd e(e	ef ee=e e"e ee"e# e"e# e"e# e"e# ed
dddZUe!e!dfe!e!e!e!dd e(ee	f ee=e e"e ee"e# e"e# e"e# e"e# ed
dddZVe!e!e!e!dd e"e# e"e# e"e# e"e# ee	d!ddZWde!e!e!e!dd e(ee*f ee	ee"e# e"e# e"e# e"e# edd
ddZXde!e!e!e!dd e(e	df e(ee*f ee	ee"e# e"e# e"e# e"e# eddddZYe!e!e!e!dd e(e	df e"e# e"e# e"e# e"e# eddddZZe!e!e!e!dd ee"e# e"e# e"e# e"e# eed*ddZ[e!e!e!e!dd ee"e# e"e# e"e# e"e# eed*ddĄZ\de!e!e!e!dd e]e"e# e"e# e"e# e"e# eedŜddǄZ^de!e!e!e!dd e	ee	e"e# e"e# e"e# e"e# ee_dȜ	ddʄZ`de!e!e!e!dd ee	e	e"e# e"e# e"e# e"e# eed˜	dd̈́Zae!e!e!e!dd ee"e# e"e# e"e# e"e# eedΜddЄZbe!e!e!e!dd ee"e# e"e# e"e# e"e# eedΜdd҄Zce!e!e!e!dd ee"e# e"e# e"e# e"e# eedΜddԄZde!e!e!e!dd ee"e# e"e# e"e# e"e# eedΜddքZee!e!e!e!dd e	e"e# e"e# e"e# e"e# eedלddلZfe!e!e!e!dd e"e# e"e# e"e# e"e# eed!ddۄZge!e!e!e!dd e"e# e"e# e"e# e"e# eed!dd݄Zhe!e!e!e!dd e"e# e"e# e"e# e"e# eed!dd߄Zie!e!e!e!dd e"e# e"e# e"e# e"e# eed!ddZje!e!e!e!dd e"e# e"e# e"e# e"e# ee]d!ddZk  ZlS )Chatad1  This object represents a chat.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`id` is equal.

    .. versionchanged:: 20.0

        * Removed the deprecated methods ``kick_member`` and ``get_members_count``.
        * The following are now keyword-only arguments in Bot methods:
          ``location``, ``filename``, ``contact``, ``{read, write, connect, pool}_timeout``,
          ``api_kwargs``. Use a named argument for those,
          and notice that some positional arguments changed position as a result.

    .. versionchanged:: 20.0
        Removed the attribute ``all_members_are_administrators``. As long as Telegram provides
        this field for backwards compatibility, it is available through
        :attr:`~telegram.TelegramObject.api_kwargs`.

    Args:
        id (:obj:`int`): Unique identifier for this chat. This number may be greater than 32 bits
            and some programming languages may have difficulty/silent defects in interpreting it.
            But it is smaller than 52 bits, so a signed 64-bit integer or double-precision float
            type are safe for storing this identifier.
        type (:obj:`str`): Type of chat, can be either :attr:`PRIVATE`, :attr:`GROUP`,
            :attr:`SUPERGROUP` or :attr:`CHANNEL`.
        title (:obj:`str`, optional): Title, for supergroups, channels and group chats.
        username (:obj:`str`, optional): Username, for private chats, supergroups and channels if
            available.
        first_name (:obj:`str`, optional): First name of the other party in a private chat.
        last_name (:obj:`str`, optional): Last name of the other party in a private chat.
        photo (:class:`telegram.ChatPhoto`, optional): Chat photo.
            Returned only in :meth:`telegram.Bot.get_chat`.
        bio (:obj:`str`, optional): Bio of the other party in a private chat. Returned only in
            :meth:`telegram.Bot.get_chat`.
        has_private_forwards (:obj:`bool`, optional): :obj:`True`, if privacy settings of the other
            party in the private chat allows to use ``tg://user?id=<user_id>`` links only in chats
            with the user. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 13.9
        description (:obj:`str`, optional): Description, for groups, supergroups and channel chats.
            Returned only in :meth:`telegram.Bot.get_chat`.
        invite_link (:obj:`str`, optional): Primary invite link, for groups, supergroups and
            channel. Returned only in :meth:`telegram.Bot.get_chat`.
        pinned_message (:class:`telegram.Message`, optional): The most recent pinned message
            (by sending date). Returned only in :meth:`telegram.Bot.get_chat`.
        permissions (:class:`telegram.ChatPermissions`): Optional. Default chat member permissions,
            for groups and supergroups. Returned only in :meth:`telegram.Bot.get_chat`.
        slow_mode_delay (:obj:`int`, optional): For supergroups, the minimum allowed delay between
            consecutive messages sent by each unprivileged user.
            Returned only in :meth:`telegram.Bot.get_chat`.
        message_auto_delete_time (:obj:`int`, optional): The time after which all messages sent to
            the chat will be automatically deleted; in seconds. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 13.4
        has_protected_content (:obj:`bool`, optional): :obj:`True`, if messages from the chat can't
            be forwarded to other chats. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 13.9

        sticker_set_name (:obj:`str`, optional): For supergroups, name of group sticker set.
            Returned only in :meth:`telegram.Bot.get_chat`.
        can_set_sticker_set (:obj:`bool`, optional): :obj:`True`, if the bot can change group the
            sticker set. Returned only in :meth:`telegram.Bot.get_chat`.
        linked_chat_id (:obj:`int`, optional): Unique identifier for the linked chat, i.e. the
            discussion group identifier for a channel and vice versa; for supergroups and channel
            chats. Returned only in :meth:`telegram.Bot.get_chat`.
        location (:class:`telegram.ChatLocation`, optional): For supergroups, the location to which
            the supergroup is connected. Returned only in :meth:`telegram.Bot.get_chat`.
        join_to_send_messages (:obj:`bool`, optional): :obj:`True`, if users need to join the
            supergroup before they can send messages. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        join_by_request (:obj:`bool`, optional): :obj:`True`, if all users directly joining the
            supergroup need to be approved by supergroup administrators. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        has_restricted_voice_and_video_messages (:obj:`bool`, optional): :obj:`True`, if the
            privacy settings of the other party restrict sending voice and video note messages
            in the private chat. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        is_forum (:obj:`bool`, optional): :obj:`True`, if the supergroup chat is a forum
            (has topics_ enabled).

            .. versionadded:: 20.0
        active_usernames (Sequence[:obj:`str`], optional):  If set, the list of all `active chat
            usernames <https://telegram.org/blog/topics-in-groups-collectible-usernames            #collectible-usernames>`_; for private chats, supergroups and channels. Returned
            only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        emoji_status_custom_emoji_id (:obj:`str`, optional): Custom emoji identifier of emoji
            status of the other party in a private chat. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        has_aggressive_anti_spam_enabled (:obj:`bool`, optional): :obj:`True`, if aggressive
            anti-spam checks are enabled in the supergroup. The field is only available to chat
            administrators. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        has_hidden_members (:obj:`bool`, optional): :obj:`True`, if non-administrators can only
            get the list of bots and administrators in the chat. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0

    Attributes:
        id (:obj:`int`): Unique identifier for this chat. This number may be greater than 32 bits
            and some programming languages may have difficulty/silent defects in interpreting it.
            But it is smaller than 52 bits, so a signed 64-bit integer or double-precision float
            type are safe for storing this identifier.
        type (:obj:`str`): Type of chat, can be either :attr:`PRIVATE`, :attr:`GROUP`,
            :attr:`SUPERGROUP` or :attr:`CHANNEL`.
        title (:obj:`str`): Optional. Title, for supergroups, channels and group chats.
        username (:obj:`str`): Optional. Username, for private chats, supergroups and channels if
            available.
        first_name (:obj:`str`): Optional. First name of the other party in a private chat.
        last_name (:obj:`str`): Optional. Last name of the other party in a private chat.
        photo (:class:`telegram.ChatPhoto`): Optional. Chat photo.
            Returned only in :meth:`telegram.Bot.get_chat`.
        bio (:obj:`str`): Optional. Bio of the other party in a private chat. Returned only in
            :meth:`telegram.Bot.get_chat`.
        has_private_forwards (:obj:`bool`): Optional. :obj:`True`, if privacy settings of the other
            party in the private chat allows to use ``tg://user?id=<user_id>`` links only in chats
            with the user. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 13.9
        description (:obj:`str`): Optional. Description, for groups, supergroups and channel chats.
            Returned only in :meth:`telegram.Bot.get_chat`.
        invite_link (:obj:`str`): Optional. Primary invite link, for groups, supergroups and
            channel. Returned only in :meth:`telegram.Bot.get_chat`.
        pinned_message (:class:`telegram.Message`): Optional. The most recent pinned message
            (by sending date). Returned only in :meth:`telegram.Bot.get_chat`.
        permissions (:class:`telegram.ChatPermissions`): Optional. Default chat member permissions,
            for groups and supergroups. Returned only in :meth:`telegram.Bot.get_chat`.
        slow_mode_delay (:obj:`int`): Optional. For supergroups, the minimum allowed delay between
            consecutive messages sent by each unprivileged user. Returned only in
            :meth:`telegram.Bot.get_chat`.
        message_auto_delete_time (:obj:`int`): Optional. The time after which all messages sent to
            the chat will be automatically deleted; in seconds. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 13.4
        has_protected_content (:obj:`bool`): Optional. :obj:`True`, if messages from the chat can't
            be forwarded to other chats. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 13.9
        sticker_set_name (:obj:`str`): Optional. For supergroups, name of Group sticker set.
            Returned only in :meth:`telegram.Bot.get_chat`.
        can_set_sticker_set (:obj:`bool`): Optional. :obj:`True`, if the bot can change group the
            sticker set. Returned only in :meth:`telegram.Bot.get_chat`.
        linked_chat_id (:obj:`int`): Optional. Unique identifier for the linked chat, i.e. the
            discussion group identifier for a channel and vice versa; for supergroups and channel
            chats. Returned only in :meth:`telegram.Bot.get_chat`.
        location (:class:`telegram.ChatLocation`): Optional. For supergroups, the location to which
            the supergroup is connected. Returned only in :meth:`telegram.Bot.get_chat`.
        join_to_send_messages (:obj:`bool`): Optional. :obj:`True`, if users need to join
            the supergroup before they can send messages. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        join_by_request (:obj:`bool`): Optional. :obj:`True`, if all users directly
            joining the supergroup need to be approved by supergroup administrators. Returned only
            in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        has_restricted_voice_and_video_messages (:obj:`bool`): Optional. :obj:`True`, if the
            privacy settings of the other party restrict sending voice and video note messages
            in the private chat. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        is_forum (:obj:`bool`): Optional. :obj:`True`, if the supergroup chat is a forum
            (has topics_ enabled).

            .. versionadded:: 20.0
        active_usernames (Tuple[:obj:`str`]): Optional. If set, the list of all `active chat
            usernames <https://telegram.org/blog/topics-in-groups-collectible-usernames            #collectible-usernames>`_; for private chats, supergroups and channels. Returned
            only in :meth:`telegram.Bot.get_chat`.
            This list is empty if the chat has no active usernames or this chat instance was not
            obtained via :meth:`~telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        emoji_status_custom_emoji_id (:obj:`str`): Optional. Custom emoji identifier of emoji
            status of the other party in a private chat. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        has_aggressive_anti_spam_enabled (:obj:`bool`): Optional. :obj:`True`, if aggressive
            anti-spam checks are enabled in the supergroup. The field is only available to chat
            administrators. Returned only in :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0
        has_hidden_members (:obj:`bool`): Optional. :obj:`True`, if non-administrators can only
            get the list of bots and administrators in the chat. Returned only in
            :meth:`telegram.Bot.get_chat`.

            .. versionadded:: 20.0

    .. _topics: https://telegram.org/blog/topics-in-groups-collectible-usernames#topics-in-groups
    )bioidtype	last_namesticker_set_nameslow_mode_delaylocation
first_namepermissionsinvite_linkpinned_messagedescriptioncan_set_sticker_setusernametitlephotolinked_chat_idmessage_auto_delete_timehas_protected_contenthas_private_forwardsjoin_to_send_messagesjoin_by_request'has_restricted_voice_and_video_messagesis_forumactive_usernamesemoji_status_custom_emoji_idhas_hidden_members has_aggressive_anti_spam_enabledSENDERPRIVATEGROUP
SUPERGROUPCHANNELN
api_kwargsr*   )r5   r6   rB   rA   r;   r7   rC   r?   r=   r>   r<   r8   r@   r9   r4   rD   r:   rE   rG   rF   rH   rI   rJ   rK   rL   rM   rO   rN   rV   c                   s   t  j|d || _ttj||| _|| _|| _	|| _
|| _|| _|| _|| _|| _|	| _|
| _|| _|| _|d k	r~t|nd | _|| _|| _|| _|| _|| _|| _|| _|| _|| _t|| _ || _!|| _"|| _#| jf| _$| %  d S )NrU   )&super__init__r5   r   
get_memberr
   ChatTyper6   rB   rA   r;   r7   rC   r4   rG   r?   r=   r>   r<   r9   intrE   rF   r8   r@   rD   r:   rH   rI   rJ   rK   r   rL   rM   rO   rN   Z	_id_attrsZ_freeze)selfr5   r6   rB   rA   r;   r7   rC   r?   r=   r>   r<   r8   r@   r9   r4   rD   r:   rE   rG   rF   rH   rI   rJ   rK   rL   rM   rO   rN   rV   	__class__ 2/tmp/pip-unpacked-wheel-e3anp165/telegram/_chat.pyrX   @  sB    !

zChat.__init__)returnc                 C   s$   | j dk	r| j S | jdk	r | jS dS )z
        :obj:`str`: Convenience property. Gives :attr:`title` if not :obj:`None`,
        else :attr:`full_name` if not :obj:`None`.

        .. versionadded:: 20.1
        N)rB   	full_namer\   r_   r_   r`   effective_name  s
    

zChat.effective_namec                 C   s(   | j s
dS | jr"| j  d| j S | j S )aK  
        :obj:`str`: Convenience property. If :attr:`first_name` is not :obj:`None`, gives
        :attr:`first_name` followed by (if available) :attr:`last_name`.

        Note:
            :attr:`full_name` will always be :obj:`None`, if the chat is a (super)group or
            channel.

        .. versionadded:: 13.2
        N )r;   r7   rc   r_   r_   r`   rb     s
    zChat.full_namec                 C   s   | j rd| j  S dS )zw:obj:`str`: Convenience property. If the chat has a :attr:`username`, returns a t.me
        link of the chat.
        zhttps://t.me/N)rA   rc   r_   r_   r`   link  s    z	Chat.linkr   )databotra   c                    s   |  |}|sdS t|d||d< ddlm} ||d||d< t|d||d< t|d||d< i }d|kr|d|d< t	 j
|||d	S )
z,See :meth:`telegram.TelegramObject.de_json`.NrC   r   )r*   r>   r<   r:   Zall_members_are_administrators)rg   rh   rV   )Z_parse_datar   de_jsongettelegramr*   r   r   poprW   Z_de_json)clsrg   rh   r*   rV   r]   r_   r`   ri     s    
zChat.de_json)namera   c                 C   s   | j | jkr8|rt| j|S | jr0t| j| jS td| jrz|rVd| d| j dS | jrrd| j d| j dS tdtddS )a  
        Note:
            :tg-const:`telegram.constants.ParseMode.MARKDOWN` is a legacy mode, retained by
            Telegram for backward compatibility. You should use :meth:`mention_markdown_v2`
            instead.

        .. versionadded:: 20.0

        Args:
            name (:obj:`str`): The name used as a link for the chat. Defaults to :attr:`full_name`.

        Returns:
            :obj:`str`: The inline mention for the chat as markdown (version 1).

        Raises:
            :exc:`TypeError`: If the chat is a private chat and neither the :paramref:`name`
                nor the :attr:`first_name` is set, then throw an :exc:`TypeError`.
                If the chat is a public chat and neither the :paramref:`name` nor the :attr:`title`
                is set, then throw an :exc:`TypeError`. If chat is a private group chat, then
                throw an :exc:`TypeError`.

        =Can not create a mention to a private chat without first name[]()7Can not create a mention to a public chat without title0Can not create a mention to a private group chatN)	r6   rQ   helpers_mention_markdownr5   rb   	TypeErrorrA   rf   rB   r\   rn   r_   r_   r`   r     s    zChat.mention_markdownc                 C   s   | j | jkr@|r t| j|ddS | jr8t| j| jddS td| jr|rfdt|dd d| j dS | j	rdt| j	dd d| j dS tdtdd	S )
a  
        .. versionadded:: 20.0

        Args:
            name (:obj:`str`): The name used as a link for the chat. Defaults to :attr:`full_name`.

        Returns:
            :obj:`str`: The inline mention for the chat as markdown (version 2).

        Raises:
            :exc:`TypeError`: If the chat is a private chat and neither the :paramref:`name`
                nor the :attr:`first_name` is set, then throw an :exc:`TypeError`.
                If the chat is a public chat and neither the :paramref:`name` nor the :attr:`title`
                is set, then throw an :exc:`TypeError`. If chat is a private group chat, then
                throw an :exc:`TypeError`.

           )versionro   rp   rq   rr   rs   rt   N)
r6   rQ   ru   r5   rb   rv   rA   r   rf   rB   rw   r_   r_   r`   mention_markdown_v2  s    zChat.mention_markdown_v2c                 C   s   | j | jkr8|rt| j|S | jr0t| j| jS td| jr|rZd| j dt| dS | j	rzd| j dt| j	 dS tdtddS )a  
        .. versionadded:: 20.0

        Args:
            name (:obj:`str`): The name used as a link for the chat. Defaults to :attr:`full_name`.

        Returns:
            :obj:`str`: The inline mention for the chat as HTML.

        Raises:
            :exc:`TypeError`: If the chat is a private chat and neither the :paramref:`name`
                nor the :attr:`first_name` is set, then throw an :exc:`TypeError`.
                If the chat is a public chat and neither the :paramref:`name` nor the :attr:`title`
                is set, then throw an :exc:`TypeError`. If chat is a private group chat, then
                throw an :exc:`TypeError`.

        ro   z	<a href="z">z</a>rs   rt   N)
r6   rQ   helpers_mention_htmlr5   rb   rv   rA   rf   r   rB   rw   r_   r_   r`   r     s    zChat.mention_html)read_timeoutwrite_timeoutconnect_timeoutpool_timeoutrV   )r|   r}   r~   r   rV   ra   c                   s"   |   j| j|||||dI dH S )a  Shortcut for::

             await bot.leave_chat(update.effective_chat.id, *args, **kwargs)

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

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

        chat_idr|   r}   r~   r   rV   N)get_botZ
leave_chatr5   r\   r|   r}   r~   r   rV   r_   r_   r`   leave0  s    z
Chat.leave)r    .c                   s"   |   j| j|||||dI dH S )a]  Shortcut for::

             await bot.get_chat_administrators(update.effective_chat.id, *args, **kwargs)

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

        Returns:
            Tuple[:class:`telegram.ChatMember`]: A tuple of administrators in a chat. An Array of
            :class:`telegram.ChatMember` objects that contains information about all
            chat administrators except other bots. If the chat is a group or a supergroup
            and no administrators were appointed, only the creator will be returned.

        r   N)r   Zget_chat_administratorsr5   r   r_   r_   r`   get_administratorsL  s    zChat.get_administratorsc                   s"   |   j| j|||||dI dH S )a	  Shortcut for::

             await bot.get_chat_member_count(update.effective_chat.id, *args, **kwargs)

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

        Returns:
            :obj:`int`
        r   N)r   Zget_chat_member_countr5   r   r_   r_   r`   get_member_countl  s    zChat.get_member_countr    )user_idr|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )a  Shortcut for::

             await bot.get_chat_member(update.effective_chat.id, *args, **kwargs)

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

        Returns:
            :class:`telegram.ChatMember`

        r   r   r|   r}   r~   r   rV   N)r   Zget_chat_memberr5   r\   r   r|   r}   r~   r   rV   r_   r_   r`   rY     s    zChat.get_member)	r   revoke_messages
until_dater|   r}   r~   r   rV   ra   c          	         s(   |   j| j||||||||d	I dH S )a$  Shortcut for::

             await bot.ban_chat_member(update.effective_chat.id, *args, **kwargs)

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

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        )	r   r   r|   r}   r~   r   r   rV   r   N)r   Zban_chat_memberr5   )	r\   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   
ban_member  s    zChat.ban_member)sender_chat_idr|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )aW  Shortcut for::

             await bot.ban_chat_sender_chat(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.9

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

        r   r   r|   r}   r~   r   rV   Nr   Zban_chat_sender_chatr5   r\   r   r|   r}   r~   r   rV   r_   r_   r`   ban_sender_chat  s    zChat.ban_sender_chat)r   r|   r}   r~   r   rV   ra   c             	      s$   |   j|| j|||||dI dH S )a~  Shortcut for::

             await bot.ban_chat_sender_chat(
                 sender_chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 13.9

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

        r   Nr   r\   r   r|   r}   r~   r   rV   r_   r_   r`   ban_chat  s    zChat.ban_chatc             	      s$   |   j| j||||||dI dH S )a[  Shortcut for::

             await bot.unban_chat_sender_chat(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.9

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

        r   Nr   Zunban_chat_sender_chatr5   r   r_   r_   r`   unban_sender_chat  s    zChat.unban_sender_chatc             	      s$   |   j|| j|||||dI dH S )a  Shortcut for::

             await bot.unban_chat_sender_chat(
                 sender_chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 13.9

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

        r   Nr   r   r_   r_   r`   
unban_chat-  s    zChat.unban_chat)r   only_if_bannedr|   r}   r~   r   rV   ra   c             
      s&   |   j| j|||||||dI dH S )a!  Shortcut for::

             await bot.unban_chat_member(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r|   r}   r~   r   rV   r   N)r   Zunban_chat_memberr5   )r\   r   r   r|   r}   r~   r   rV   r_   r_   r`   unban_memberP  s    zChat.unban_member)r   can_change_infocan_post_messagescan_edit_messagescan_delete_messagescan_invite_userscan_restrict_memberscan_pin_messagescan_promote_membersis_anonymouscan_manage_chatcan_manage_video_chatscan_manage_topicsr|   r}   r~   r   rV   ra   c                   s<   |   j| j|||||||||	||||||
|||dI dH S )a)  Shortcut for::

             await bot.promote_chat_member(update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.2
        .. versionchanged:: 20.0
           The argument ``can_manage_voice_chats`` was renamed to
           :paramref:`~telegram.Bot.promote_chat_member.can_manage_video_chats` in accordance to
           Bot API 6.0.

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

        )r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   r   r   r   N)r   Zpromote_chat_memberr5   )r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   promote_memberp  s*    'zChat.promote_member)
r   r<   r    use_independent_chat_permissionsr|   r}   r~   r   rV   ra   c          
         s*   |   j| j|||||||||	d
I dH S )a  Shortcut for::

             await bot.restrict_chat_member(update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.2

        .. versionadded:: 20.1
            Added :paramref:`~telegram.Bot.restrict_chat_member.use_independent_chat_permissions`.

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

        )
r   r   r<   r   r   r|   r}   r~   r   rV   N)r   Zrestrict_chat_memberr5   )
r\   r   r<   r   r   r|   r}   r~   r   rV   r_   r_   r`   restrict_member  s    zChat.restrict_member)r<   r   r|   r}   r~   r   rV   ra   c             
      s&   |   j| j|||||||dI dH S )a  Shortcut for::

             await bot.set_chat_permissions(update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 20.1
            Added :paramref:`~telegram.Bot.set_chat_permissions.use_independent_chat_permissions`.

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

        )r   r<   r   r|   r}   r~   r   rV   N)r   Zset_chat_permissionsr5   )r\   r<   r   r|   r}   r~   r   rV   r_   r_   r`   set_permissions  s    zChat.set_permissions)r   custom_titler|   r}   r~   r   rV   ra   c             
      s&   |   j| j|||||||dI dH S )am  Shortcut for::

             await bot.set_chat_administrator_custom_title(
                 update.effective_chat.id, *args, **kwargs
             )

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

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

        )r   r   r   r|   r}   r~   r   rV   N)r   Z#set_chat_administrator_custom_titler5   )r\   r   r   r|   r}   r~   r   rV   r_   r_   r`   set_administrator_custom_title  s    z#Chat.set_administrator_custom_title   )rC   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )ak  Shortcut for::

             await bot.set_chat_photo(
                 chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

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

        )r   rC   r|   r}   r~   r   rV   N)r   Zset_chat_photor5   )r\   rC   r|   r}   r~   r   rV   r_   r_   r`   	set_photo  s    zChat.set_photoc                   s"   |   j| j|||||dI dH S )aq  Shortcut for::

             await bot.delete_chat_photo(
                 chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

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

        r   N)r   Zdelete_chat_photor5   r   r_   r_   r`   delete_photoA  s    zChat.delete_photo)rB   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )ak  Shortcut for::

             await bot.set_chat_title(
                 chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

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

        )r   rB   r|   r}   r~   r   rV   N)r   Zset_chat_titler5   )r\   rB   r|   r}   r~   r   rV   r_   r_   r`   	set_titleb  s    zChat.set_title)r?   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )aw  Shortcut for::

             await bot.set_chat_description(
                 chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

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

        )r   r?   r|   r}   r~   r   rV   N)r   Zset_chat_descriptionr5   )r\   r?   r|   r}   r~   r   rV   r_   r_   r`   set_description  s    zChat.set_description)
message_iddisable_notificationr|   r}   r~   r   rV   ra   c             
      s&   |   j| j|||||||dI dH S )a0  Shortcut for::

              await bot.pin_chat_message(chat_id=update.effective_chat.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   r   r   r|   r}   r~   r   rV   N)r   Zpin_chat_messager5   )r\   r   r   r|   r}   r~   r   rV   r_   r_   r`   pin_message  s    zChat.pin_message)r   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )a4  Shortcut for::

              await bot.unpin_chat_message(chat_id=update.effective_chat.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.

        )r   r|   r}   r~   r   rV   r   N)r   Zunpin_chat_messager5   )r\   r   r|   r}   r~   r   rV   r_   r_   r`   unpin_message  s    zChat.unpin_messagec                   s"   |   j| j|||||dI dH S )a>  Shortcut for::

              await bot.unpin_all_chat_messages(chat_id=update.effective_chat.id, *args, **kwargs)

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

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

        r   N)r   Zunpin_all_chat_messagesr5   r   r_   r_   r`   unpin_all_messages  s    zChat.unpin_all_messagesr+   )text
parse_modedisable_web_page_previewr   reply_to_message_idreply_markupallow_sending_without_replyentitiesprotect_contentmessage_thread_idr|   r}   r~   r   rV   ra   c                   s6   |   j| j|||||||||	|
|||||dI dH S )a6  Shortcut for::

             await bot.send_message(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   N)r   send_messager5   )r\   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s$    zChat.send_message)r|   r}   r~   r   rV   captionr   caption_entities)r$   r%   r&   r'   )r*   .)mediar   r   r   r   r   r|   r}   r~   r   rV   r   r   r   ra   c                   s4   |   j| j||||||	|
|||||||dI dH S )as  Shortcut for::

             await bot.send_media_group(update.effective_chat.id, *args, **kwargs)

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

        Returns:
            Tuple[:class:`telegram.Message`]: On success, a tuple of :class:`~telegram.Message`
            instances that were sent is returned.

        )r   r   r   r   r|   r}   r~   r   rV   r   r   r   r   r   r   N)r   send_media_groupr5   )r\   r   r   r   r   r   r   r|   r}   r~   r   rV   r   r   r   r_   r_   r`   r   5  s"    zChat.send_media_group)actionr   r|   r}   r~   r   rV   ra   c             
      s&   |   j| j|||||||dI dH S )a  Shortcut for::

             await bot.send_chat_action(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r|   r}   r~   r   rV   N)r   send_chat_actionr5   )r\   r   r   r|   r}   r~   r   rV   r_   r_   r`   r   f  s    zChat.send_chat_action)filenamer|   r}   r~   r   rV   r-   )rC   r   r   r   r   r   r   r   r   r   has_spoilerr   r|   r}   r~   r   rV   ra   c                   s:   |   j| j||||||||||	|
||||||dI dH S )a2  Shortcut for::

             await bot.send_photo(update.effective_chat.id, *args, **kwargs)

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

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

        )r   rC   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   N)r   
send_photor5   )r\   rC   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s(    zChat.send_photo)contactr|   r}   r~   r   rV   r!   )phone_numberr;   r7   r   r   r   vcardr   r   r   r   r|   r}   r~   r   rV   ra   c                   s8   |   j| j|||||||||||||||	|
dI dH S )a6  Shortcut for::

             await bot.send_contact(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r;   r7   r   r   r   r|   r}   r~   r   r   r   rV   r   r   r   N)r   send_contactr5   )r\   r   r;   r7   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s&    zChat.send_contactr   )audioduration	performerrB   r   r   r   r   r   thumbr   r   r   r   	thumbnailr   r|   r}   r~   r   rV   ra   c                   sB   |   j| j|||||||||	|
|||||||||||dI dH S )a2  Shortcut for::

             await bot.send_audio(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   N)r   
send_audior5   )r\   r   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s0    #zChat.send_audior"   )documentr   r   r   r   r   r   disable_content_type_detectionr   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s>   |   j| j||||||||||||||||	|
||dI dH S )a8  Shortcut for::

             await bot.send_document(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r   r   r   r|   r}   r~   r   r   r   r   rV   r   r   r   r   r   N)r   send_documentr5   )r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r   +  s,    !zChat.send_document)r   r   r   emojir   r   r   r|   r}   r~   r   rV   ra   c                   s0   |   j| j|||||	|
||||||dI dH S )a0  Shortcut for::

             await bot.send_dice(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r|   r}   r~   r   r   rV   r   r   r   N)r   	send_dicer5   )r\   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r   c  s    zChat.send_dicer#   )game_short_namer   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s0   |   j| j||||||	|
|||||dI dH S )a0  Shortcut for::

             await bot.send_game(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r   r|   r}   r~   r   rV   r   r   r   N)r   	send_gamer5   )r\   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s    zChat.send_gamer(   )!rB   r?   payloadprovider_tokencurrencypricesstart_parameter	photo_url
photo_sizephoto_widthphoto_height	need_nameneed_phone_number
need_emailneed_shipping_addressis_flexibler   r   r   provider_datasend_phone_number_to_providersend_email_to_providerr   max_tip_amountsuggested_tip_amountsr   r   r|   r}   r~   r   rV   ra   c          !   #      sX   |   j| j|||||||||	|
||||||||||||||||| |||||d!I dH S )a  Shortcut for::

             await bot.send_invoice(update.effective_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.

        .. versionchanged:: 13.5
            As of Bot API 5.2, the parameter
            :paramref:`start_parameter <telegram.Bot.send_invoice.start_parameter>` is optional.

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

        )!r   rB   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   r   r   r   r   N)r   send_invoicer5   )!r\   rB   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     sF    8zChat.send_invoice)r:   r|   r}   r~   r   rV   r)   )latitude	longituder   r   r   live_periodhorizontal_accuracyheadingproximity_alert_radiusr   r   r   r:   r|   r}   r~   r   rV   ra   c                   s<   |   j| j|||||||||||||||	|
||dI dH S )a8  Shortcut for::

             await bot.send_location(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r   r   r|   r}   r~   r   r:   r   rV   r   r   r   r   r   r   N)r   send_locationr5   )r\   r   r   r   r   r   r   r   r   r   r   r   r   r:   r|   r}   r~   r   rV   r_   r_   r`   r     s*     zChat.send_locationr   )	animationr   widthheightr   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   sD   |   j| j|||||||||	|
||||||||||||dI dH S )a:  Shortcut for::

             await bot.send_animation(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   r   r   r   r   r   r   N)r   send_animationr5   )r\   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r   I  s2    $zChat.send_animationr.   )stickerr   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c	                   s2   |   j| j|||||	|
|||||||dI dH S )a6  Shortcut for::

             await bot.send_sticker(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   r   r   r|   r}   r~   r   rV   r   r   r   r   N)r   send_stickerr5   )r\   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s     zChat.send_sticker)venuer|   r}   r~   r   rV   r/   )r   r   rB   addressfoursquare_idr   r   r   foursquare_typegoogle_place_idgoogle_place_typer   r   r   r   r|   r}   r~   r   rV   ra   c                   s@   |   j| j||||||||||||||	||
||||dI dH S )a2  Shortcut for::

             await bot.send_venue(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r   r   rB   r   r   r   r   r   r|   r}   r~   r   r   r   rV   r   r   r   r   r   N)r   
send_venuer5   )r\   r   r   rB   r   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r     s.    "zChat.send_venuer0   )videor   r   r   r   r   r   r   r   supports_streamingr   r   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   sF   |   j| j|||||||||||||	|
|||||||||dI dH S )a2  Shortcut for::

             await bot.send_video(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r  r   r   r   r   r   r|   r}   r~   r   r   r   r   r  r   r   rV   r   r   r   r   r   r   N)r   
send_videor5   )r\   r  r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r    s4    %zChat.send_videor1   )
video_noter   lengthr   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s:   |   j| j||||||||||||||||	|
dI dH S )a<  Shortcut for::

             await bot.send_video_note(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r  r   r  r   r   r   r|   r}   r~   r   r   r   rV   r   r   r   r   N)r   send_video_noter5   )r\   r  r   r  r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r  -  s(    zChat.send_video_noter2   )voicer   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s:   |   j| j||||||||||||||	||
|dI dH S )a2  Shortcut for::

             await bot.send_voice(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r  r   r   r   r   r   r|   r}   r~   r   r   rV   r   r   r   r   r   N)r   
send_voicer5   )r\   r  r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r  a  s(    zChat.send_voice)questionoptionsr   r6   allows_multiple_answerscorrect_option_id	is_closedr   r   r   explanationexplanation_parse_modeopen_period
close_dater   explanation_entitiesr   r   r|   r}   r~   r   rV   ra   c                   sF   |   j| j|||||||||	|
|||||||||||||dI dH S )a0  Shortcut for::

             await bot.send_poll(update.effective_chat.id, *args, **kwargs)

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

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

        )r   r	  r
  r   r6   r  r  r  r   r   r   r|   r}   r~   r   r  r  r  r  rV   r   r  r   r   N)r   	send_pollr5   )r\   r	  r
  r   r6   r  r  r  r   r   r   r  r  r  r  r   r  r   r   r|   r}   r~   r   rV   r_   r_   r`   r    s4    %zChat.send_pollr,   )from_chat_idr   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s8   |   j| j|||||||||	||||||
|dI dH S )a>  Shortcut for::

             await bot.copy_message(chat_id=update.effective_chat.id, *args, **kwargs)

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

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

        )r   r  r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   r   Nr   copy_messager5   )r\   r  r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   	send_copy  s&    zChat.send_copy)r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s8   |   j| j|||||||||	||||||
|dI dH S )aC  Shortcut for::

             await bot.copy_message(from_chat_id=update.effective_chat.id, *args, **kwargs)

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

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

        )r  r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r   r   Nr  )r\   r   r   r   r   r   r   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   r  	  s&    zChat.copy_message)r  r   r   r   r   r|   r}   r~   r   rV   ra   c                   s,   |   j| j|||||||	|
||dI dH S )a  Shortcut for::

             await bot.forward_message(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. seealso:: :meth:`forward_to`

        .. versionadded:: 20.0

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

        )r   r  r   r   r|   r}   r~   r   rV   r   r   Nr   Zforward_messager5   )r\   r  r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   forward_from9	  s    zChat.forward_from)r   r   r   r   r   r|   r}   r~   r   rV   ra   c                   s,   |   j| j|||||||	|
||dI dH S )a  Shortcut for::

             await bot.forward_message(from_chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. seealso:: :meth:`forward_from`

        .. versionadded:: 20.0

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

        )r  r   r   r   r|   r}   r~   r   rV   r   r   Nr  )r\   r   r   r   r   r   r|   r}   r~   r   rV   r_   r_   r`   
forward_toc	  s    zChat.forward_toc                   s"   |   j| j|||||dI dH S )aS  Shortcut for::

             await bot.export_chat_invite_link(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.4

        Returns:
            :obj:`str`: New invite link on success.

        r   N)r   Zexport_chat_invite_linkr5   r   r_   r_   r`   export_invite_link	  s    zChat.export_invite_linkr   )
expire_datemember_limitrn   creates_join_requestr|   r}   r~   r   rV   ra   c          
         s*   |   j| j|||||||	||d
I dH S )a  Shortcut for::

             await bot.create_chat_invite_link(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.4

        .. versionchanged:: 13.8
           Edited signature according to the changes of
           :meth:`telegram.Bot.create_chat_invite_link`.

        Returns:
            :class:`telegram.ChatInviteLink`

        )
r   r  r  r|   r}   r~   r   rV   rn   r  N)r   Zcreate_chat_invite_linkr5   )
r\   r  r  rn   r  r|   r}   r~   r   rV   r_   r_   r`   create_invite_link	  s    zChat.create_invite_link)r=   r  r  rn   r  r|   r}   r~   r   rV   ra   c                   s,   |   j| j|||||||	|
||dI dH S )a  Shortcut for::

             await bot.edit_chat_invite_link(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.4

        .. versionchanged:: 13.8
           Edited signature according to the changes of :meth:`telegram.Bot.edit_chat_invite_link`.

        Returns:
            :class:`telegram.ChatInviteLink`

        )r   r=   r  r  r|   r}   r~   r   rV   rn   r  N)r   Zedit_chat_invite_linkr5   )r\   r=   r  r  rn   r  r|   r}   r~   r   rV   r_   r_   r`   edit_invite_link	  s    zChat.edit_invite_link)r=   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )aL  Shortcut for::

             await bot.revoke_chat_invite_link(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.4

        Returns:
            :class:`telegram.ChatInviteLink`

        )r   r=   r|   r}   r~   r   rV   N)r   Zrevoke_chat_invite_linkr5   )r\   r=   r|   r}   r~   r   rV   r_   r_   r`   revoke_invite_link
  s    zChat.revoke_invite_linkc             	      s$   |   j| j||||||dI dH S )aa  Shortcut for::

             await bot.approve_chat_join_request(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.8

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

        r   N)r   Zapprove_chat_join_requestr5   r   r_   r_   r`   approve_join_request$
  s    zChat.approve_join_requestc             	      s$   |   j| j||||||dI dH S )aa  Shortcut for::

             await bot.decline_chat_join_request(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 13.8

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

        r   N)r   Zdecline_chat_join_requestr5   r   r_   r_   r`   decline_join_requestE
  s    zChat.decline_join_request)menu_buttonr|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )a  Shortcut for::

             await bot.set_chat_menu_button(chat_id=update.effective_chat.id, *args, **kwargs)

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

        Caution:
            Can only work, if the chat is a private chat.

        .. seealso:: :meth:`get_menu_button`

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        )r   r$  r|   r}   r~   r   rV   N)r   Zset_chat_menu_buttonr5   )r\   r$  r|   r}   r~   r   rV   r_   r_   r`   set_menu_buttonf
  s    zChat.set_menu_button)	rn   
icon_coloricon_custom_emoji_idr|   r}   r~   r   rV   ra   c          	         s(   |   j| j||||||||d	I dH S )a=  Shortcut for::

             await bot.create_forum_topic(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 20.0

        Returns:
            :class:`telegram.ForumTopic`
        )	r   rn   r&  r'  r|   r}   r~   r   rV   N)r   create_forum_topicr5   )	r\   rn   r&  r'  r|   r}   r~   r   rV   r_   r_   r`   r(  
  s    zChat.create_forum_topic)	r   rn   r'  r|   r}   r~   r   rV   ra   c          	         s(   |   j| j||||||||d	I dH S )aN  Shortcut for::

             await bot.edit_forum_topic(chat_id=update.effective_chat.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   rn   r'  r|   r}   r~   r   rV   N)r   edit_forum_topicr5   )	r\   r   rn   r'  r|   r}   r~   r   rV   r_   r_   r`   r)  
  s    zChat.edit_forum_topic)r   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )aP  Shortcut for::

             await bot.close_forum_topic(chat_id=update.effective_chat.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   r|   r}   r~   r   rV   N)r   close_forum_topicr5   r\   r   r|   r}   r~   r   rV   r_   r_   r`   r+  
  s    zChat.close_forum_topicc             	      s$   |   j| j||||||dI dH S )aR  Shortcut for::

             await bot.reopen_forum_topic(chat_id=update.effective_chat.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_topicr5   r,  r_   r_   r`   r-  
  s    zChat.reopen_forum_topicc             	      s$   |   j| j||||||dI dH S )aR  Shortcut for::

             await bot.delete_forum_topic(chat_id=update.effective_chat.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_topicr5   r,  r_   r_   r`   r.    s    zChat.delete_forum_topicc             	      s$   |   j| j||||||dI dH S )az  Shortcut for::

             await bot.unpin_all_forum_topic_messages(chat_id=update.effective_chat.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_messagesr5   r,  r_   r_   r`   r/  3  s    z#Chat.unpin_all_forum_topic_messages)rn   r|   r}   r~   r   rV   ra   c             	      s$   |   j| j||||||dI dH S )a}  Shortcut for::

             await bot.edit_general_forum_topic(
                chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        )r   rn   r|   r}   r~   r   rV   N)r   edit_general_forum_topicr5   )r\   rn   r|   r}   r~   r   rV   r_   r_   r`   r0  T  s    zChat.edit_general_forum_topicc                   s"   |   j| j|||||dI dH S )a`  Shortcut for::

             await bot.close_general_forum_topic(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        r   N)r   close_general_forum_topicr5   r   r_   r_   r`   r1  v  s    zChat.close_general_forum_topicc                   s"   |   j| j|||||dI dH S )a  Shortcut for::

             await bot.reopen_general_forum_topic(
                chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        r   N)r   reopen_general_forum_topicr5   r   r_   r_   r`   r2    s    zChat.reopen_general_forum_topicc                   s"   |   j| j|||||dI dH S )a^  Shortcut for::

             await bot.hide_general_forum_topic(chat_id=update.effective_chat.id, *args, **kwargs)

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

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        r   N)r   hide_general_forum_topicr5   r   r_   r_   r`   r3    s    zChat.hide_general_forum_topicc                   s"   |   j| j|||||dI dH S )a  Shortcut for::

             await bot.unhide_general_forum_topic (
                chat_id=update.effective_chat.id, *args, **kwargs
             )

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

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        r   N)r   unhide_general_forum_topicr5   r   r_   r_   r`   r4    s    zChat.unhide_general_forum_topicc                   s"   |   j| j|||||dI dH S )a  Shortcut for::

             await bot.get_chat_menu_button(chat_id=update.effective_chat.id, *args, **kwargs)

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

        Caution:
            Can only work, if the chat is a private chat.

        .. seealso:: :meth:`set_menu_button`

        .. versionadded:: 20.0

        Returns:
            :class:`telegram.MenuButton`: On success, the current menu button is returned.
        r   N)r   Zget_chat_menu_buttonr5   r   r_   r_   r`   get_menu_button  s    zChat.get_menu_button)NNNNNNNNNNNNNNNNNNNNNNNNNN)N)N)N)NN)N)NNNNNNNNNNNN)NN)N)N)N)N)NNNN)NNNN)N)NN)NN)m__name__
__module____qualname____doc__	__slots__r
   rZ   rP   r   str__annotations__rQ   rR   rS   rT   r[   r   r   boolr   r   r   rX   propertyr   rd   rb   rf   classmethodri   r   rz   r   r   r   floatr   r   r   r   r	   rY   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsend_actionr   r   r   r   r   r   objectr   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r   r%  r   r(  r)  r+  r-  r.  r/  r0  r1  r2  r3  r4  r5  __classcell__r_   r_   r]   r`   r3   D   s  
 O                          I % ## 
!  

&%
'%
& 
#            
A  

- )
'&%% &# " 54  
65
?
:
-
2
^9
A
.=
C
7
8
D
6
6
.
-!    
.    

0
%%# (  '  ($$$%%!#!#r3   N)Cr9  r   htmlr   typingr   r   r   r   r   r	   rk   r
   Ztelegram._chatlocationr   Ztelegram._chatpermissionsr   Ztelegram._files.chatphotor   Ztelegram._forumtopicr   Ztelegram._menubuttonr   Ztelegram._telegramobjectr   Ztelegram._utilsr   Ztelegram._utils.argumentparsingr   Ztelegram._utils.defaultvaluer   Ztelegram._utils.typesr   r   r   r   r   Ztelegram.helpersr   r   r{   r   ru   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r_   r_   r_   r`   <module>   s(    d