Ë
    †jc@  ã                   ór   — d 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  G d	„ d
e
«      Zy)zNThis module contains an object that represents a Telegram ReplyKeyboardMarkup.é    )ÚSequence)ÚFinal)Ú	constants)ÚKeyboardButton)ÚTelegramObject)Úcheck_keyboard_type)ÚJSONDictc                   ó  ‡ — e Zd ZU dZdZ	 	 	 	 	 dddœdeeeez        dedz  dedz  dedz  d	edz  d
edz  de	dz  fˆ fd„Z
e	 	 	 	 	 ddeez  dededed	edz  d
edz  dedd fd„«       Ze	 	 	 	 	 ddeeez     dededed	edz  d
edz  dedd fd„«       Ze	 	 	 	 	 ddeeez     dededed	edz  d
edz  dedd fd„«       Zej"                  j$                  Zee   ed<   	 ej"                  j,                  Zee   ed<   ˆ xZS )ÚReplyKeyboardMarkupa™  This object represents a custom keyboard with reply options. Not supported in channels and
    for messages sent on behalf of a Telegram Business account.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their size of :attr:`keyboard` and all the buttons are equal.

    .. figure:: https://core.telegram.org/file/464001950/1191a/2RwpmgU-swU.123554/b5        0478c124d5914c23
        :align: center

        A reply keyboard with reply options.

    .. seealso::
        Another kind of keyboard would be the :class:`telegram.InlineKeyboardMarkup`.

    Examples:
        * Example usage: A user requests to change the bot's language, bot replies to the request
          with a keyboard to select the new language. Other users in the group don't see
          the keyboard.
        * :any:`Conversation Bot <examples.conversationbot>`
        * :any:`Conversation Bot 2 <examples.conversationbot2>`

    Args:
        keyboard (Sequence[Sequence[:obj:`str` | :class:`telegram.KeyboardButton`]]): Array of
            button rows, each represented by an Array of :class:`telegram.KeyboardButton` objects.
        resize_keyboard (:obj:`bool`, optional): Requests clients to resize the keyboard vertically
            for optimal fit (e.g., make the keyboard smaller if there are just two rows of
            buttons). Defaults to :obj:`False`, in which case the custom keyboard is always of the
            same height as the app's standard keyboard.
        one_time_keyboard (:obj:`bool`, optional): Requests clients to hide the keyboard as soon as
            it's been used. The keyboard will still be available, but clients will automatically
            display the usual letter-keyboard in the chat - the user can press a special button in
            the input field to see the custom keyboard again. Defaults to :obj:`False`.
        selective (:obj:`bool`, optional): Use this parameter if you want to show the keyboard to
            specific users only. Targets:

            1) Users that are @mentioned in the :attr:`~telegram.Message.text` of the
               :class:`telegram.Message` object.
            2) If the bot's message is a reply to a message in the same chat and forum topic,
                sender of the original message.

            Defaults to :obj:`False`.

        input_field_placeholder (:obj:`str`, optional): The placeholder to be shown in the input
            field when the keyboard is active;
            :tg-const:`telegram.ReplyKeyboardMarkup.MIN_INPUT_FIELD_PLACEHOLDER`-
            :tg-const:`telegram.ReplyKeyboardMarkup.MAX_INPUT_FIELD_PLACEHOLDER`
            characters.

            .. versionadded:: 13.7
        is_persistent (:obj:`bool`, optional): Requests clients to always show the keyboard when
            the regular keyboard is hidden. Defaults to :obj:`False`, in which case the custom
            keyboard can be hidden and opened with a keyboard icon.

            .. versionadded:: 20.0

    Attributes:
        keyboard (tuple[tuple[:class:`telegram.KeyboardButton`]]): Array of button rows,
            each represented by an Array of :class:`telegram.KeyboardButton` objects.
        resize_keyboard (:obj:`bool`): Optional. Requests clients to resize the keyboard vertically
            for optimal fit (e.g., make the keyboard smaller if there are just two rows of
            buttons). Defaults to :obj:`False`, in which case the custom keyboard is always of the
            same height as the app's standard keyboard.
        one_time_keyboard (:obj:`bool`): Optional. Requests clients to hide the keyboard as soon as
            it's been used. The keyboard will still be available, but clients will automatically
            display the usual letter-keyboard in the chat - the user can press a special button in
            the input field to see the custom keyboard again. Defaults to :obj:`False`.
        selective (:obj:`bool`): Optional. Show the keyboard to specific users only.
            Targets:

            1) Users that are @mentioned in the :attr:`~telegram.Message.text` of the
               :class:`telegram.Message` object.
            2) If the bot's message is a reply to a message in the same chat and forum topic,
                sender of the original message.

            Defaults to :obj:`False`.

        input_field_placeholder (:obj:`str`): Optional. The placeholder to be shown in the input
            field when the keyboard is active;
            :tg-const:`telegram.ReplyKeyboardMarkup.MIN_INPUT_FIELD_PLACEHOLDER`-
            :tg-const:`telegram.ReplyKeyboardMarkup.MAX_INPUT_FIELD_PLACEHOLDER`
            characters.

            .. versionadded:: 13.7
        is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard when
            the regular keyboard is hidden. If :obj:`False`, the custom keyboard can be hidden and
            opened with a keyboard icon.

            .. versionadded:: 20.0

    )Úinput_field_placeholderÚis_persistentÚkeyboardÚone_time_keyboardÚresize_keyboardÚ	selectiveN©Ú
api_kwargsr   r   r   r   r   r   r   c                ó
  •— t         ‰| �  |¬«       t        |«      st        d«      ‚t	        d„ |D «       «      | _        || _        || _        || _        || _	        || _
        | j
                  f| _        | j                  «        y )Nr   zXThe parameter `keyboard` should be a sequence of sequences of strings or KeyboardButtonsc              3   ó@   K  — | ]  }t        d „ |D «       «      –— Œ y­w)c              3   óV   K  — | ]!  }t        |t        «      rt        |«      n|–— Œ# y ­w)N)Ú
isinstanceÚstrr   )Ú.0Úbuttons     ú\/var/www/html/datingFans/myenv/lib/python3.12/site-packages/telegram/_replykeyboardmarkup.pyú	<genexpr>z9ReplyKeyboardMarkup.__init__.<locals>.<genexpr>.<genexpr>™   s$   è ø€ ÒbÐTZ¬J°v¼sÔ,C”. Ô(ÈÓOÑbùs   ‚')N)Útuple)r   Úrows     r   r   z/ReplyKeyboardMarkup.__init__.<locals>.<genexpr>˜   s&   è ø€ ò F
àô ÑbÐ^aÔb×bñF
ùs   ‚)ÚsuperÚ__init__r   Ú
ValueErrorr   r   r   r   r   r   r   Ú	_id_attrsÚ_freeze)	Úselfr   r   r   r   r   r   r   Ú	__class__s	           €r   r    zReplyKeyboardMarkup.__init__…   s�   ø€ ô 	‰Ñ JÐÔ/Ü" 8Ô,Üð-óð ô AFñ F
àôF
ó A
ˆŒð -<ˆÔØ.?ˆÔØ&/ˆŒØ3JˆÔ$Ø*7ˆÔàŸ-™-Ð)ˆŒà�‰�ó    r   ÚkwargsÚreturnc           	      ó$   —  | |ggf|||||dœ|¤ŽS )a¶  Shortcut for::

            ReplyKeyboardMarkup([[button]], **kwargs)

        Return a ReplyKeyboardMarkup from a single KeyboardButton.

        Args:
            button (:class:`telegram.KeyboardButton` | :obj:`str`): The button to use in
                the markup.
            resize_keyboard (:obj:`bool`, optional): Requests clients to resize the keyboard
                vertically for optimal fit (e.g., make the keyboard smaller if there are just two
                rows of buttons). Defaults to :obj:`False`, in which case the custom keyboard is
                always of the same height as the app's standard keyboard.
            one_time_keyboard (:obj:`bool`, optional): Requests clients to hide the keyboard as
                soon as it's been used. The keyboard will still be available, but clients will
                automatically display the usual letter-keyboard in the chat - the user can press
                a special button in the input field to see the custom keyboard again.
                Defaults to :obj:`False`.
            selective (:obj:`bool`, optional): Use this parameter if you want to show the keyboard
                to specific users only. Targets:

                1) Users that are @mentioned in the text of the Message object.
                2) If the bot's message is a reply to a message in the same chat and forum topic,
                    sender of the original message.

                Defaults to :obj:`False`.

            input_field_placeholder (:obj:`str`): Optional. The placeholder shown in the input
                field when the reply is active.

                .. versionadded:: 13.7
            is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard
                when the regular keyboard is hidden. Defaults to :obj:`False`, in which case the
                custom keyboard can be hidden and opened with a keyboard icon.

                .. versionadded:: 20.0
        ©r   r   r   r   r   © )Úclsr   r   r   r   r   r   r'   s           r   Úfrom_buttonzReplyKeyboardMarkup.from_button¨   s7   € ñ` ØˆXˆJð
à+Ø/ØØ$;Ø'ñ
ð ñ
ð 	
r&   Ú
button_rowc           	      ó"   —  | |gf|||||dœ|¤ŽS )a  Shortcut for::

            ReplyKeyboardMarkup([button_row], **kwargs)

        Return a ReplyKeyboardMarkup from a single row of KeyboardButtons.

        Args:
            button_row (Sequence[:class:`telegram.KeyboardButton` | :obj:`str`]): The button to
                use in the markup.

                .. versionchanged:: 20.0
                    |sequenceargs|
            resize_keyboard (:obj:`bool`, optional): Requests clients to resize the keyboard
                vertically for optimal fit (e.g., make the keyboard smaller if there are just two
                rows of buttons). Defaults to :obj:`False`, in which case the custom keyboard is
                always of the same height as the app's standard keyboard.
            one_time_keyboard (:obj:`bool`, optional): Requests clients to hide the keyboard as
                soon as it's been used. The keyboard will still be available, but clients will
                automatically display the usual letter-keyboard in the chat - the user can press
                a special button in the input field to see the custom keyboard again.
                Defaults to :obj:`False`.
            selective (:obj:`bool`, optional): Use this parameter if you want to show the keyboard
                to specific users only. Targets:

                1) Users that are @mentioned in the text of the Message object.
                2) If the bot's message is a reply to a message in the same chat and forum topic,
                    sender of the original message.

                Defaults to :obj:`False`.

            input_field_placeholder (:obj:`str`): Optional. The placeholder shown in the input
                field when the reply is active.

                .. versionadded:: 13.7
            is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard
                when the regular keyboard is hidden. Defaults to :obj:`False`, in which case the
                custom keyboard can be hidden and opened with a keyboard icon.

                .. versionadded:: 20.0

        r*   r+   )r,   r.   r   r   r   r   r   r'   s           r   Úfrom_rowzReplyKeyboardMarkup.from_rowâ   s5   € ñh ØˆLð
à+Ø/ØØ$;Ø'ñ
ð ñ
ð 	
r&   Úbutton_columnc           	      óJ   — |D �cg c]  }|g‘Œ }	} | |	f|||||dœ|¤ŽS c c}w )a<  Shortcut for::

            ReplyKeyboardMarkup([[button] for button in button_column], **kwargs)

        Return a ReplyKeyboardMarkup from a single column of KeyboardButtons.

        Args:
            button_column (Sequence[:class:`telegram.KeyboardButton` | :obj:`str`]): The button
                to use in the markup.

                .. versionchanged:: 20.0
                    |sequenceargs|
            resize_keyboard (:obj:`bool`, optional): Requests clients to resize the keyboard
                vertically for optimal fit (e.g., make the keyboard smaller if there are just two
                rows of buttons). Defaults to :obj:`False`, in which case the custom keyboard is
                always of the same height as the app's standard keyboard.
            one_time_keyboard (:obj:`bool`, optional): Requests clients to hide the keyboard as
                soon as it's been used. The keyboard will still be available, but clients will
                automatically display the usual letter-keyboard in the chat - the user can press
                a special button in the input field to see the custom keyboard again.
                Defaults to :obj:`False`.
            selective (:obj:`bool`, optional): Use this parameter if you want to show the keyboard
                to specific users only. Targets:

                1) Users that are @mentioned in the text of the Message object.
                2) If the bot's message is a reply to a message in the same chat and forum topic,
                    sender of the original message.

                Defaults to :obj:`False`.

            input_field_placeholder (:obj:`str`): Optional. The placeholder shown in the input
                field when the reply is active.

                .. versionadded:: 13.7
            is_persistent (:obj:`bool`): Optional. Requests clients to always show the keyboard
                when the regular keyboard is hidden. Defaults to :obj:`False`, in which case the
                custom keyboard can be hidden and opened with a keyboard icon.

                .. versionadded:: 20.0

        r*   r+   )
r,   r1   r   r   r   r   r   r'   r   Úbutton_grids
             r   Úfrom_columnzReplyKeyboardMarkup.from_column   sM   € ðh /<Ö< F˜’xÐ<ˆÐ<ÙØð
à+Ø/ØØ$;Ø'ñ
ð ñ
ð 	
ùò =s   …
 ÚMIN_INPUT_FIELD_PLACEHOLDERÚMAX_INPUT_FIELD_PLACEHOLDER)NNNNN)FFFNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r   r   Úboolr	   r    ÚclassmethodÚobjectr-   r0   r4   r   Ú
ReplyLimitr5   r   ÚintÚ__annotations__r6   Ú__classcell__)r%   s   @r   r   r      sn  ø… ñZðx€Ið (,Ø)-Ø!%Ø.2Ø%)ð!ð '+ò!à˜8 C¨.Ñ$8Ñ9Ñ:ð!ð  ™ð!ð   $™;ð	!ð
 ˜$‘;ð!ð "% t¡ð!ð ˜d‘{ð!ð ˜t‘Oõ!ðF ð !&Ø"'ØØ.2Ø%)ñ7
à Ñ$ð7
ð ð7
ð  ð	7
ð
 ð7
ð "% t¡ð7
ð ˜d‘{ð7
ð ð7
ð 
ò7
ó ð7
ðr ð !&Ø"'ØØ.2Ø%)ñ;
à˜S >Ñ1Ñ2ð;
ð ð;
ð  ð	;
ð
 ð;
ð "% t¡ð;
ð ˜d‘{ð;
ð ð;
ð 
ò;
ó ð;
ðz ð !&Ø"'ØØ.2Ø%)ñ<
à  nÑ 4Ñ5ð<
ð ð<
ð  ð	<
ð
 ð<
ð "% t¡ð<
ð ˜d‘{ð<
ð ð<
ð 
ò<
ó ð<
ð| /8×.BÑ.B×.^Ñ.^Ð  s¡Ó^ðð /8×.BÑ.B×.^Ñ.^Ð  s¡Ó^ór&   r   N)r:   Úcollections.abcr   Útypingr   Útelegramr   Útelegram._keyboardbuttonr   Útelegram._telegramobjectr   Útelegram._utils.markupr   Útelegram._utils.typesr	   r   r+   r&   r   ú<module>rJ      s.   ðñ& Uå $Ý å Ý 3Ý 3Ý 6Ý *ôI˜.õ Ir&   