U
    dd6                     @   s  d 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 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 erddlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 G dd deZ1dS )z?This module contains an object that represents a Telegram User.    )datetime)TYPE_CHECKINGOptionalSequenceTupleUnion)InlineKeyboardButton)
MenuButton)TelegramObject)DEFAULT_NONE)DVInput	FileInputJSONDictODVInputReplyMarkup)mention_html)mention_markdown)	AnimationAudioContactDocumentInlineKeyboardMarkupInputMediaAudioInputMediaDocumentInputMediaPhotoInputMediaVideoLabeledPriceLocationMessageMessageEntity	MessageId	PhotoSizeStickerUserProfilePhotosVenueVideo	VideoNoteVoicec                $       s  e Zd ZdZdZdddeeeeeeeeeeeed fddZ	e
edd	d
Ze
edddZe
ee dddZdeeeeddeeee ee ee ee eed dddZdeedddZdeedddZdeedddZdeedddZefeeeeddeee ee ee ee ee eedddZdeeeedde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%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deddeededdf
ded+eedd,ee d-f 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'd.d/d0Z!edeedfed+eeddedd1eed2  ee eee ee eee ee ee ee eee ee ed& e"d3 d4d5d6Z#ddddeddedededdfded+eedd,ee d7f ee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e ed'd8d9d:Z$deeeeddeeee ee ee ee eed;d<d=Z%e%Z&ddde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d?ee ee ee ee ed'd@dAdBZ'e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'dCdDdEZ(deddeddededdfded+eedd,ee dFf 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e ed'dGdHdIZ)eddeedfeeeeddeee edJee ee eee ee ee ee ed'dKdLdMZ*d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dN eeeeeeeeeeee edJeee+f eeee eee ee eee ee ee ee ed'dO!dPdQZ,ddeddddddeedfdeeeeddReeee eeeeeeee ee edSee ee ee ee ed'dTdUdVZ-dddddeeddededddfded+eedd,ee dWf ee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 ee ed'dXdYdZZ.eddeeddfed+eeddee d[f ee eeee ee eeee ee ee ee ed'd\d]d^Z/ddeddddeddededddfded+eedd,ee d_f eee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 ee ed'd`dadbZ0dddddedddddeedfdeeeeddceeeeeee eeeeeee ee eddee ee ee ee ed'dedfdgZ1ddedddeeddf
ded+eedd,ee dhf eeee eee ee ee ee eee ee ee ee ed'didjdkZ2ddeddeededf
ded+eedd,ee dlf 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'dmdndoZ3d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e4f ee ed& ee eee ee ee ee ed'dpdqdrZ5d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dsdtdudvZ6d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dsdwdxdyZ7eeeeddeeef ee ee ee ee eedzd{d|Z8eeeeddeeef ee ee ee ee eedzd}d~Z9de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:d#ddZ<  Z=S )Usera  This object represents a Telegram user or bot.

    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
        The following are now keyword-only arguments in Bot methods:
        ``location``, ``filename``, ``venue``, ``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.

    Args:
        id (:obj:`int`): Unique identifier for this user or bot.
        is_bot (:obj:`bool`): :obj:`True`, if this user is a bot.
        first_name (:obj:`str`): User's or bot's first name.
        last_name (:obj:`str`, optional): User's or bot's last name.
        username (:obj:`str`, optional): User's or bot's username.
        language_code (:obj:`str`, optional): IETF language tag of the user's language.
        can_join_groups (:obj:`str`, optional): :obj:`True`, if the bot can be invited to groups.
            Returned only in :attr:`telegram.Bot.get_me` requests.
        can_read_all_group_messages (:obj:`str`, optional): :obj:`True`, if privacy mode is
            disabled for the bot. Returned only in :attr:`telegram.Bot.get_me` requests.
        supports_inline_queries (:obj:`str`, optional): :obj:`True`, if the bot supports inline
            queries. Returned only in :attr:`telegram.Bot.get_me` requests.

        is_premium (:obj:`bool`, optional): :obj:`True`, if this user is a Telegram Premium user.

            .. versionadded:: 20.0
        added_to_attachment_menu (:obj:`bool`, optional): :obj:`True`, if this user added
            the bot to the attachment menu.

            .. versionadded:: 20.0
    Attributes:
        id (:obj:`int`): Unique identifier for this user or bot.
        is_bot (:obj:`bool`): :obj:`True`, if this user is a bot.
        first_name (:obj:`str`): User's or bot's first name.
        last_name (:obj:`str`): Optional. User's or bot's last name.
        username (:obj:`str`): Optional. User's or bot's username.
        language_code (:obj:`str`): Optional. IETF language tag of the user's language.
        can_join_groups (:obj:`str`): Optional. :obj:`True`, if the bot can be invited to groups.
            Returned only in :attr:`telegram.Bot.get_me` requests.
        can_read_all_group_messages (:obj:`str`): Optional. :obj:`True`, if privacy mode is
            disabled for the bot. Returned only in :attr:`telegram.Bot.get_me` requests.
        supports_inline_queries (:obj:`str`): Optional. :obj:`True`, if the bot supports inline
            queries. Returned only in :attr:`telegram.Bot.get_me` requests.
        is_premium (:obj:`bool`): Optional. :obj:`True`, if this user is a Telegram
            Premium user.

            .. versionadded:: 20.0
        added_to_attachment_menu (:obj:`bool`): Optional. :obj:`True`, if this user added
            the bot to the attachment menu.

            .. versionadded:: 20.0
    .. |user_chat_id_note| replace:: This shortcuts build on the assumption that :attr:`User.id`
        coincides with the :attr:`Chat.id` of the private chat with the user. This has been the
        case so far, but Telegram does not guarantee that this stays this way.
    )is_botcan_read_all_group_messagesusername
first_name	last_namecan_join_groupssupports_inline_queriesidlanguage_code
is_premiumadded_to_attachment_menuN
api_kwargs)r0   r,   r)   r-   r+   r1   r.   r*   r/   r2   r3   r5   c                   sf   t  j|d || _|| _|| _|| _|| _|| _|| _|| _	|	| _
|
| _|| _| jf| _|   d S )Nr4   )super__init__r0   r,   r)   r-   r+   r1   r.   r*   r/   r2   r3   Z	_id_attrsZ_freeze)selfr0   r,   r)   r-   r+   r1   r.   r*   r/   r2   r3   r5   	__class__ 2/tmp/pip-unpacked-wheel-e3anp165/telegram/_user.pyr7      s    
zUser.__init__)returnc                 C   s   | j rd| j  S | jS )z:obj:`str`: Convenience property. If available, returns the user's :attr:`username`
        prefixed with "@". If :attr:`username` is not available, returns :attr:`full_name`.
        @)r+   	full_namer8   r;   r;   r<   name   s    z	User.namec                 C   s   | j r| j d| j  S | jS )z:obj:`str`: Convenience property. The user's :attr:`first_name`, followed by (if
        available) :attr:`last_name`.
         )r-   r,   r@   r;   r;   r<   r?      s    zUser.full_namec                 C   s   | j rd| j  S dS )zu:obj:`str`: Convenience property. If :attr:`username` is available, returns a t.me link
        of the user.
        zhttps://t.me/N)r+   r@   r;   r;   r<   link   s    z	User.link)read_timeoutwrite_timeoutconnect_timeoutpool_timeoutr5   r#   )offsetlimitrD   rE   rF   rG   r5   r=   c             
      s&   |   j| j|||||||dI dH S )zShortcut for::

             await bot.get_user_profile_photos(update.effective_user.id, *args, **kwargs)

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

        )user_idrH   rI   rD   rE   rF   rG   r5   N)get_botZget_user_profile_photosr0   )r8   rH   rI   rD   rE   rF   rG   r5   r;   r;   r<   get_profile_photos   s    zUser.get_profile_photos)rA   r=   c                 C   s   |rt | j|S t | j| j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.

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

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

        helpers_mention_markdownr0   r?   r8   rA   r;   r;   r<   r      s    zUser.mention_markdownc                 C   s&   |rt | j|ddS t | j| jddS )z
        Args:
            name (:obj:`str`): The name used as a link for the user. Defaults to :attr:`full_name`.

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

           )versionrM   rO   r;   r;   r<   mention_markdown_v2   s    	zUser.mention_markdown_v2c                 C   s   |rt | j|S t | j| jS )z
        Args:
            name (:obj:`str`): The name used as a link for the user. Defaults to :attr:`full_name`.

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

        )helpers_mention_htmlr0   r?   rO   r;   r;   r<   r      s    	zUser.mention_htmlc                 C   s   t |p
| jd| j dS )a{  Shortcut for::

            InlineKeyboardButton(text=name, url=f"tg://user?id={update.effective_user.id}")

        .. versionadded:: 13.9

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

        Returns:
            :class:`telegram.InlineKeyboardButton`: InlineButton with url set to the user mention
        ztg://user?id=)texturl)r   r?   r0   rO   r;   r;   r<   mention_button  s    zUser.mention_button)
message_iddisable_notificationrD   rE   rF   rG   r5   r=   c             
      s&   |   j| j|||||||dI dH S )aW  Shortcut for::

              await bot.pin_chat_message(chat_id=update.effective_user.id, *args, **kwargs)

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

        Note:
            |user_chat_id_note|

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

        )chat_idrW   rX   rD   rE   rF   rG   r5   N)rK   Zpin_chat_messager0   )r8   rW   rX   rD   rE   rF   rG   r5   r;   r;   r<   pin_message  s    zUser.pin_message)rW   rD   rE   rF   rG   r5   r=   c             	      s$   |   j| j||||||dI dH S )a[  Shortcut for::

              await bot.unpin_chat_message(chat_id=update.effective_user.id, *args, **kwargs)

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

        Note:
            |user_chat_id_note|

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

        )rY   rD   rE   rF   rG   r5   rW   N)rK   Zunpin_chat_messager0   )r8   rW   rD   rE   rF   rG   r5   r;   r;   r<   unpin_message=  s    zUser.unpin_message)rD   rE   rF   rG   r5   r=   c                   s"   |   j| j|||||dI dH S )am  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        rY   rD   rE   rF   rG   r5   N)rK   Zunpin_all_chat_messagesr0   r8   rD   rE   rF   rG   r5   r;   r;   r<   unpin_all_messages^  s    zUser.unpin_all_messagesr   r   )rT   
parse_modedisable_web_page_previewrX   reply_to_message_idreply_markupallow_sending_without_replyentitiesprotect_contentmessage_thread_idrD   rE   rF   rG   r5   r=   c                   s6   |   j| j|||||||||	|
|||||dI dH S )ae  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   rT   r_   r`   rX   ra   rb   rc   rd   re   rf   rD   rE   rF   rG   r5   N)rK   send_messager0   )r8   rT   r_   r`   rX   ra   rb   rc   rd   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   rg   ~  s$     zUser.send_message   )filenamerD   rE   rF   rG   r5   r!   )photocaptionrX   ra   rb   r_   rc   caption_entitiesre   rf   has_spoilerri   rD   rE   rF   rG   r5   r=   c                   s:   |   j| j||||||||||	|
||||||dI dH S )aa  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   rj   rk   rX   ra   rb   r_   rc   rl   ri   re   rf   rD   rE   rF   rG   r5   rm   N)rK   
send_photor0   )r8   rj   rk   rX   ra   rb   r_   rc   rl   re   rf   rm   ri   rD   rE   rF   rG   r5   r;   r;   r<   rn     s(    "zUser.send_photo)rD   rE   rF   rG   r5   rk   r_   rl   )r   r   r   r   )r   .)mediarX   ra   rc   re   rf   rD   rE   rF   rG   r5   rk   r_   rl   r=   c                   s4   |   j| j||||||	|
|||||||dI dH S )a  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   ro   rX   ra   rD   rE   rF   rG   r5   rc   re   rf   rk   r_   rl   N)rK   send_media_groupr0   )r8   ro   rX   ra   rc   re   rf   rD   rE   rF   rG   r5   rk   r_   rl   r;   r;   r<   rp     s"    "zUser.send_media_groupr   )audioduration	performertitlerk   rX   ra   rb   r_   thumbrc   rl   re   rf   	thumbnailri   rD   rE   rF   rG   r5   r=   c                   sB   |   j| j|||||||||	|
|||||||||||dI dH S )aa  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   rq   rr   rs   rt   rk   rX   ra   rb   r_   ru   rc   rl   ri   re   rf   rD   rE   rF   rG   r5   rv   N)rK   
send_audior0   )r8   rq   rr   rs   rt   rk   rX   ra   rb   r_   ru   rc   rl   re   rf   rv   ri   rD   rE   rF   rG   r5   r;   r;   r<   rw     s0    &zUser.send_audio)actionrf   rD   rE   rF   rG   r5   r=   c             
      s&   |   j| j|||||||dI dH S )a5  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

        Returns:
            :obj:`True`: On success.

        )rY   rx   rf   rD   rE   rF   rG   r5   N)rK   send_chat_actionr0   )r8   rx   rf   rD   rE   rF   rG   r5   r;   r;   r<   ry   [  s    zUser.send_chat_action)contactrD   rE   rF   rG   r5   r   )phone_numberr,   r-   rX   ra   rb   vcardrc   re   rf   rz   rD   rE   rF   rG   r5   r=   c                   s8   |   j| j|||||||||||||||	|
dI dH S )ae  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r{   r,   r-   rX   ra   rb   rD   rE   rF   rG   rz   r|   r5   rc   re   rf   N)rK   send_contactr0   )r8   r{   r,   r-   rX   ra   rb   r|   rc   re   rf   rz   rD   rE   rF   rG   r5   r;   r;   r<   r}     s&    !zUser.send_contact)rX   ra   rb   emojirc   re   rf   rD   rE   rF   rG   r5   r=   c                   s0   |   j| j|||||	|
||||||dI dH S )a_  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   rX   ra   rb   rD   rE   rF   rG   r~   r5   rc   re   rf   N)rK   	send_dicer0   )r8   rX   ra   rb   r~   rc   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   r     s    zUser.send_dicer   )documentrk   rX   ra   rb   r_   ru   disable_content_type_detectionrc   rl   re   rf   rv   ri   rD   rE   rF   rG   r5   r=   c                   s>   |   j| j||||||||||||||||	|
||dI dH S )ag  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   ri   rk   rX   ra   rb   rD   rE   rF   rG   r_   ru   rv   r5   r   rc   rl   re   rf   N)rK   send_documentr0   )r8   r   rk   rX   ra   rb   r_   ru   r   rc   rl   re   rf   rv   ri   rD   rE   rF   rG   r5   r;   r;   r<   r     s,    $zUser.send_documentr   )game_short_namerX   ra   rb   rc   re   rf   rD   rE   rF   rG   r5   r=   c                   s0   |   j| j||||||	|
|||||dI dH S )a_  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rX   ra   rb   rD   rE   rF   rG   r5   rc   re   rf   N)rK   	send_gamer0   )r8   r   rX   ra   rb   rc   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   r     s    zUser.send_gamer   )!rt   description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_flexiblerX   ra   rb   provider_datasend_phone_number_to_providersend_email_to_providerrc   max_tip_amountsuggested_tip_amountsre   rf   rD   rE   rF   rG   r5   r=   c          !   #      sX   |   j| j|||||||||	|
||||||||||||||||| |||||d!I dH S )aM  Shortcut for::

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

        Note:
            |user_chat_id_note|

        .. 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.

        )!rY   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   ra   rb   r   r   r   rD   rE   rF   rG   r5   rc   r   r   re   rf   N)rK   send_invoicer0   )!r8   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   ra   rb   r   r   r   rc   r   r   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   r   K  sF    ;zUser.send_invoice)locationrD   rE   rF   rG   r5   r   )latitude	longituderX   ra   rb   live_periodhorizontal_accuracyheadingproximity_alert_radiusrc   re   rf   r   rD   rE   rF   rG   r5   r=   c                   s<   |   j| j|||||||||||||||	|
||dI dH S )ag  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   r   rX   ra   rb   rD   rE   rF   rG   r   r   r5   r   r   r   rc   re   rf   N)rK   send_locationr0   )r8   r   r   rX   ra   rb   r   r   r   r   rc   re   rf   r   rD   rE   rF   rG   r5   r;   r;   r<   r     s*    #zUser.send_locationr   )	animationrr   widthheightru   rk   r_   rX   ra   rb   rc   rl   re   rf   rm   rv   ri   rD   rE   rF   rG   r5   r=   c                   sD   |   j| j|||||||||	|
||||||||||||dI dH S )ai  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rr   r   r   ru   rk   r_   rX   ra   rb   rD   rE   rF   rG   r5   rc   rl   ri   re   rf   rm   rv   N)rK   send_animationr0   )r8   r   rr   r   r   ru   rk   r_   rX   ra   rb   rc   rl   re   rf   rm   rv   ri   rD   rE   rF   rG   r5   r;   r;   r<   r     s2    'zUser.send_animationr"   )stickerrX   ra   rb   rc   re   rf   r~   rD   rE   rF   rG   r5   r=   c	                   s2   |   j| j|||||	|
|||||||dI dH S )ae  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rX   ra   rb   rD   rE   rF   rG   r5   rc   re   rf   r~   N)rK   send_stickerr0   )r8   r   rX   ra   rb   rc   re   rf   r~   rD   rE   rF   rG   r5   r;   r;   r<   r   $  s     zUser.send_stickerr%   )videorr   rk   rX   ra   rb   r   r   r_   supports_streamingru   rc   rl   re   rf   rm   rv   ri   rD   rE   rF   rG   r5   r=   c                   sF   |   j| j|||||||||||||	|
|||||||||dI dH S )aa  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rr   rk   rX   ra   rb   rD   rE   rF   rG   r   r   r_   r   ru   rv   r5   rc   rl   ri   re   rf   rm   N)rK   
send_videor0   )r8   r   rr   rk   rX   ra   rb   r   r   r_   r   ru   rc   rl   re   rf   rm   rv   ri   rD   rE   rF   rG   r5   r;   r;   r<   r   S  s4    (zUser.send_video)venuerD   rE   rF   rG   r5   r$   )r   r   rt   addressfoursquare_idrX   ra   rb   foursquare_typegoogle_place_idgoogle_place_typerc   re   rf   r   rD   rE   rF   rG   r5   r=   c                   s@   |   j| j||||||||||||||	||
||||dI dH S )aa  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   r   rt   r   r   rX   ra   rb   rD   rE   rF   rG   r   r   r5   r   r   rc   re   rf   N)rK   
send_venuer0   )r8   r   r   rt   r   r   rX   ra   rb   r   r   r   rc   re   rf   r   rD   rE   rF   rG   r5   r;   r;   r<   r     s.    %zUser.send_venuer&   )
video_noterr   lengthrX   ra   rb   ru   rc   re   rf   rv   ri   rD   rE   rF   rG   r5   r=   c                   s:   |   j| j|||||||||||||||	|
|dI dH S )ak  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rr   r   rX   ra   rb   rD   rE   rF   rG   ru   r5   rc   ri   re   rf   rv   N)rK   send_video_noter0   )r8   r   rr   r   rX   ra   rb   ru   rc   re   rf   rv   ri   rD   rE   rF   rG   r5   r;   r;   r<   r     s(    "zUser.send_video_noter'   )voicerr   rk   rX   ra   rb   r_   rc   rl   re   rf   ri   rD   rE   rF   rG   r5   r=   c                   s:   |   j| j||||||||||||||	||
|dI dH S )aa  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rr   rk   rX   ra   rb   rD   rE   rF   rG   r_   r5   rc   rl   ri   re   rf   N)rK   
send_voicer0   )r8   r   rr   rk   rX   ra   rb   r_   rc   rl   re   rf   ri   rD   rE   rF   rG   r5   r;   r;   r<   r   
  s(    "zUser.send_voice)questionoptionsis_anonymoustypeallows_multiple_answerscorrect_option_id	is_closedrX   ra   rb   explanationexplanation_parse_modeopen_period
close_daterc   explanation_entitiesre   rf   rD   rE   rF   rG   r5   r=   c                   sF   |   j| j|||||||||	|
|||||||||||||dI dH S )a_  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   r   r   r   r   r   r   rX   ra   rb   rD   rE   rF   rG   r   r   r   r   r5   rc   r   re   rf   N)rK   	send_pollr0   )r8   r   r   r   r   r   r   r   rX   ra   rb   r   r   r   r   rc   r   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   r   A  s4    (zUser.send_pollr    )from_chat_idrW   rk   r_   rl   rX   ra   rc   rb   re   rf   rD   rE   rF   rG   r5   r=   c                   s8   |   j| j|||||||||	||||||
|dI dH S )am  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )rY   r   rW   rk   r_   rl   rX   ra   rc   rb   rD   rE   rF   rG   r5   re   rf   NrK   copy_messager0   )r8   r   rW   rk   r_   rl   rX   ra   rc   rb   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   	send_copy  s&    !zUser.send_copy)rY   rW   rk   r_   rl   rX   ra   rc   rb   re   rf   rD   rE   rF   rG   r5   r=   c                   s8   |   j| j|||||||||	||||||
|dI dH S )ar  Shortcut for::

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

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

        Note:
            |user_chat_id_note|

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

        )r   rY   rW   rk   r_   rl   rX   ra   rc   rb   rD   rE   rF   rG   r5   re   rf   Nr   )r8   rY   rW   rk   r_   rl   rX   ra   rc   rb   re   rf   rD   rE   rF   rG   r5   r;   r;   r<   r     s&    !zUser.copy_message)rY   rD   rE   rF   rG   r5   r=   c             	      s$   |   j| j||||||dI dH S )a  Shortcut for::

             await bot.approve_chat_join_request(user_id=update.effective_user.id, *args, **kwargs)

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

        Note:
            |user_chat_id_note|

        .. versionadded:: 13.8

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

        rJ   rY   rD   rE   rF   rG   r5   N)rK   Zapprove_chat_join_requestr0   r8   rY   rD   rE   rF   rG   r5   r;   r;   r<   approve_join_request  s    zUser.approve_join_requestc             	      s$   |   j| j||||||dI dH S )a  Shortcut for::

             await bot.decline_chat_join_request(user_id=update.effective_user.id, *args, **kwargs)

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

        Note:
            |user_chat_id_note|

        .. versionadded:: 13.8

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

        r   N)rK   Zdecline_chat_join_requestr0   r   r;   r;   r<   decline_join_request  s    zUser.decline_join_request)menu_buttonrD   rE   rF   rG   r5   r=   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`.

        .. seealso:: :meth:`get_menu_button`

        Note:
            |user_chat_id_note|

        .. versionadded:: 20.0

        Returns:
            :obj:`bool`: On success, :obj:`True` is returned.
        )rY   r   rD   rE   rF   rG   r5   N)rK   Zset_chat_menu_buttonr0   )r8   r   rD   rE   rF   rG   r5   r;   r;   r<   set_menu_button6  s    zUser.set_menu_buttonc                   s"   |   j| j|||||dI dH S )a  Shortcut for::

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

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

        .. seealso:: :meth:`set_menu_button`

        Note:
            |user_chat_id_note|

        .. versionadded:: 20.0

        Returns:
            :class:`telegram.MenuButton`: On success, the current menu button is returned.
        r\   N)rK   Zget_chat_menu_buttonr0   r]   r;   r;   r<   get_menu_button[  s    zUser.get_menu_button)NNNNNNNN)NN)N)N)N)N)N)N)N)>__name__
__module____qualname____doc__	__slots__intstrboolr   r7   propertyrA   r?   r   rC   r   r   floatrL   r   rR   r   r   rV   rZ   r[   r^   r   r   r   rg   r   r   rn   r   rp   rw   ry   Zsend_actionr}   r   r   r   objectr   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   __classcell__r;   r;   r9   r<   r(   :   s(  :        #
  % $#6
<7
B #7
0
>
5
a<
D
2
E@
:
;
G
9
9
(
& (r(   N)2r   r   typingr   r   r   r   r   Z%telegram._inline.inlinekeyboardbuttonr   Ztelegram._menubuttonr	   Ztelegram._telegramobjectr
   Ztelegram._utils.defaultvaluer   Ztelegram._utils.typesr   r   r   r   r   Ztelegram.helpersr   rS   r   rN   Ztelegramr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r;   r;   r;   r<   <module>   s   \