L i@zdZddlmZddlmZmZmZddlmZddl m Z ddl m Z ddl mZddlmZGd d e Zy ) zNThis module contains an object that represents a Telegram ReplyKeyboardMarkup.)Sequence)FinalOptionalUnion) constants)KeyboardButton)TelegramObject)check_keyboard_type)JSONDictceZdZUdZdZ ddddeeeeefde e de e de e d e ed e e d e e ffd Z e dd eeefde de de d e ed e e deddfdZe ddeeeefde de de d e ed e e deddfdZe ddeeeefde de de d e ed e e deddfdZej&j(Zeeed< ej&j0Zeeed<xZS)ReplyKeyboardMarkupaThis 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 ` * :any:`Conversation Bot 2 ` 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_persistentkeyboardone_time_keyboardresize_keyboard selectiveN api_kwargsrrrrrrrc t||t|s tdt d|D|_||_||_||_||_ ||_ |j f|_ |jy)NrzXThe parameter `keyboard` should be a sequence of sequences of strings or KeyboardButtonsc3@K|]}td|Dyw)c3VK|]!}t|tr t|n|#yw)N) isinstancestrr).0buttons c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/telegram/_replykeyboardmarkup.py z9ReplyKeyboardMarkup.__init__...s$bTZJvs,C.(Obs')N)tuple)rrows rrz/ReplyKeyboardMarkup.__init__..s&F  b^ab bF s) super__init__r ValueErrorrrrrrrr _id_attrs_freeze) selfrrrrrrr __class__s rr"zReplyKeyboardMarkup.__init__s J/"8,-  AFF F A  0?1B)26M$-:--) rkwargsreturnc $||ggf|||||d|S)aShortcut 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 rrrrr)clsrrrrrrr)s r from_buttonzReplyKeyboardMarkup.from_buttons7`XJ +/$;'    r( button_rowc "||gf|||||d|S)aShortcut 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.r0rrrrrr)s rfrom_rowzReplyKeyboardMarkup.from_rows5h L +/$;'    r( button_columnc J|Dcgc]}|g} }|| f|||||d|Scc}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.r3rrrrrr)r button_grids r from_columnzReplyKeyboardMarkup.from_column sMh/<?@!"$!$D> ! D> ! "*# ! ~!X&!F!&"'15(,7 nc)*7 7  7  7 "*# 7  ~7 7  7 7 r!&"'15(,; U3#678; ;  ;  ; "*# ;  ~; ;  ; ; z!&"'15(,< c>&9 :;< <  <  < "*# <  ~< <  < < |/8.B.B.^.^s^/8.B.B.^.^s^r(r N)r<collections.abcrtypingrrrtelegramrtelegram._keyboardbuttonrtelegram._telegramobjectr telegram._utils.markupr telegram._utils.typesr r r-r(rrLs1&U$))336*I.Ir(