
    ՟f@                     v    d 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  G d d	e      Zy
)zNThis module contains an object that represents a Telegram ReplyKeyboardMarkup.    )FinalOptionalSequenceTupleUnion)	constants)KeyboardButton)TelegramObject)check_keyboard_type)JSONDictc                       e Zd ZU dZdZ	 	 	 	 	 ddddeeeeef         de	e
   de	e
   de	e
   d	e	e   d
e	e
   de	e   f fdZe	 	 	 	 	 ddeeef   de
de
de
d	e	e   d
e	e
   dedd fd       Ze	 	 	 	 	 ddeeeef      de
de
de
d	e	e   d
e	e
   dedd fd       Ze	 	 	 	 	 ddeeeef      de
de
de
d	e	e   d
e	e
   dedd fd       Zej&                  j(                  Zee   ed<   	 ej&                  j0                  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     X/var/www/cvtools/html/venv/lib/python3.12/site-packages/telegram/_replykeyboardmarkup.py	<genexpr>z9ReplyKeyboardMarkup.__init__.<locals>.<genexpr>.<genexpr>   s$     bTZJvs,C.(Obs   ')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
 0?1B)26M$-:--)    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    ` XJ
+/$;'
 
 	
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/   r1   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/   r4   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   r	   r   boolr   r#   classmethodobjectr0   r3   r7   r   
ReplyLimitr8   r   int__annotations__r9   __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)r=   typingr   r   r   r   r   telegramr   telegram._keyboardbuttonr	   telegram._telegramobjectr
   telegram._utils.markupr   telegram._utils.typesr   r   r.   r)   r   <module>rL      s.   & U : :  3 3 6 *I. Ir)   