
    Yi@                     z    S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr   " S	 S
\5      rg)zNThis module contains an object that represents a Telegram ReplyKeyboardMarkup.    )Sequence)FinalOptionalUnion)	constants)KeyboardButton)TelegramObject)check_keyboard_type)JSONDictc                   0  ^  \ rS rSr% SrSr     SSS.S\\\\\	4         S\
\   S\
\   S	\
\   S
\
\   S\
\   S\
\   4U 4S jjjjr\     SS\\	\4   S\S\S	\S
\
\   S\
\   S\SS 4S jj5       r\     SS\\\\	4      S\S\S	\S
\
\   S\
\   S\SS 4S jj5       r\     SS\\\\	4      S\S\S	\S
\
\   S\
\   S\SS 4S jj5       r\R(                  R*                  r\\   \S'    \R(                  R2                  r\\   \S'   SrU =r$ )ReplyKeyboardMarkup   a}  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U ]  US9  [        U5      (       d  [        S5      e[	        S U 5       5      U l        X l        X0l        X@l        XPl	        X`l
        U R
                  4U l        U R                  5         g )Nr   zXThe parameter `keyboard` should be a sequence of sequences of strings or KeyboardButtonsc              3   F   #    U  H  n[        S  U 5       5      v   M     g7f)c              3   f   #    U  H'  n[        U[        5      (       a  [        U5      OUv   M)     g 7f)N)
isinstancestrr   ).0buttons     H/app/.venv/lib/python3.13/site-packages/telegram/_replykeyboardmarkup.py	<genexpr>9ReplyKeyboardMarkup.__init__.<locals>.<genexpr>.<genexpr>   s)     b^aTZJvs,C,C.(O^as   /1N)tuple)r   rows     r   r   /ReplyKeyboardMarkup.__init__.<locals>.<genexpr>   s'      F
 b^abbb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%   ReplyKeyboardMarkup.__init__   s     	J/"8,,-  AF F
F
 A
 0?1B)26M$-:--)    r   kwargsreturnc           	      $    U " U//4UUUUUS.UD6$ )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_buttonReplyKeyboardMarkup.from_button   s7    ` XJ
+/$;'
 
 	
r,   
button_rowc           	      "    U " U/4UUUUUS.UD6$ )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

r0   r1   )r2   r5   r   r   r   r   r   r-   s           r   from_rowReplyKeyboardMarkup.from_row   s5    h L
+/$;'
 
 	
r,   button_columnc           	      N    U Vs/ s H  o/PM     n	nU " U	4UUUUUS.UD6$ s  snf )aL  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

r0   r1   )
r2   r9   r   r   r   r   r   r-   r   button_grids
             r   from_columnReplyKeyboardMarkup.from_column   sL    h /<<mFxm<
+/$;'
 
 	
 =s   "MIN_INPUT_FIELD_PLACEHOLDERMAX_INPUT_FIELD_PLACEHOLDER)r'   r   r   r   r   r   r   )NNNNN)FFFNN)__name__
__module____qualname____firstlineno____doc__	__slots__r   r   r   r   r   boolr   r%   classmethodobjectr3   r7   r<   r   
ReplyLimitr>   r   int__annotations__r?   __static_attributes____classcell__)r*   s   @r   r   r      s   ZxI +/,0$(15(,! *.!8E#~*=$>?@! "$! $D>	!
 D>! "*#!  ~! X&! !F  !&"'15(,7
nc)*7
 7
  	7

 7
 "*#7
  ~7
 7
 
7
 7
r  !&"'15(,;
U3#678;
 ;
  	;

 ;
 "*#;
  ~;
 ;
 
;
 ;
z  !&"'15(,<
c>&9 :;<
 <
  	<

 <
 "*#<
  ~<
 <
 
<
 <
| /8.B.B.^.^s^ /8.B.B.^.^s^r,   r   N)rD   collections.abcr   typingr   r   r   telegramr   telegram._keyboardbuttonr   telegram._telegramobjectr	   telegram._utils.markupr
   telegram._utils.typesr   r   r1   r,   r   <module>rU      s1   & U $ ) )  3 3 6 *I. Ir,   