Конструктор клавіатури#

Конструктор клавіатури допомагає динамічно генерувати розмітку

Примітка

Зауважте, що якщо у вас є статична розмітка, найкраще визначити її явно, а не використовувати конструктор, але якщо у вас є конфігурація динамічної розмітки, сміливо використовуйте конструктор на свій розсуд.

Приклад використання#

For example you want to generate inline keyboard with 10 buttons

builder = InlineKeyboardBuilder()

for index in range(1, 11):
    builder.button(text=f"Set {index}", callback_data=f"set:{index}")

then adjust this buttons to some grid, for example first line will have 3 buttons, the next lines will have 2 buttons

builder.adjust(3, 2)

also you can attach another builder to this one

another_builder = InlineKeyboardBuilder(...)...  # Another builder with some buttons
builder.attach(another_builder)

or you can attach some already generated markup

markup = InlineKeyboardMarkup(inline_keyboard=[...])  # Some markup
builder.attach(InlineKeyboardBuilder.from_markup(markup))

and finally you can export this markup to use it in your message

await message.answer("Some text here", reply_markup=builder.as_markup())

Reply keyboard builder has the same interface

Попередження

Note that you can’t attach reply keyboard builder to inline keyboard builder and vice versa

Клавіатура під повідомленням(Inline Keyboard)#

class aiogram.utils.keyboard.InlineKeyboardBuilder(markup: List[List[InlineKeyboardButton]] | None = None)[source]#

Конструктор клавіатури під повідомленням успадковує всі методи від універсального конструктора

button(text: str, url: str | None = None, login_url: LoginUrl | None = None, callback_data: str | CallbackData | None = None, switch_inline_query: str | None = None, switch_inline_query_current_chat: str | None = None, callback_game: CallbackGame | None = None, pay: bool | None = None, **kwargs: Any) aiogram.utils.keyboard.InlineKeyboardBuilder[source]

Додавання нової кнопки до розмітки

as_markup() aiogram.types.inline_keyboard_markup.InlineKeyboardMarkup[source]

Створення InlineKeyboardMarkup

__init__(markup: List[List[InlineKeyboardButton]] | None = None) None[source]#
add(*buttons: ButtonType) KeyboardBuilder[ButtonType]#

Додавання однієї або кількох кнопок до розмітки.

Параметри:

buttons

Повертає:

adjust(*sizes: int, repeat: bool = False) KeyboardBuilder[ButtonType]#

Налаштування раніше доданих кнопок до певних розмірів рядків.

By default, when the sum of passed sizes is lower than buttons count the last one size will be used for tail of the markup. If repeat=True is passed - all sizes will be cycled when available more buttons count than all sizes

Параметри:
  • sizes

  • repeat

Повертає:

property buttons: Generator[ButtonType, None, None]#

Отримання плоского списку усіх кнопок

Повертає:

copy() InlineKeyboardBuilder[source]#

Робить повну копію поточного конструктора з розміткою

Повертає:

export() List[List[ButtonType]]#

Експортує налаштовану розмітку як список списків кнопок

>>> builder = KeyboardBuilder(button_type=InlineKeyboardButton)
>>> ... # Add buttons to builder
>>> markup = InlineKeyboardMarkup(inline_keyboard=builder.export())
Повертає:

classmethod from_markup(markup: InlineKeyboardMarkup) InlineKeyboardBuilder[source]#

Create builder from existing markup

Параметри:

markup

Повертає:

row(*buttons: ButtonType, width: int | None = None) KeyboardBuilder[ButtonType]#

Додає рядок у розмітку

Коли передано занадто багато кнопок, вони будуть розділені на багато рядків

Параметри:
  • buttons

  • width

Повертає:

Клавіатура відповідей#

class aiogram.utils.keyboard.ReplyKeyboardBuilder(markup: List[List[KeyboardButton]] | None = None)[source]#

Конструктор клавіатури відповідей успадковує всі методи від універсального конструктора

button(text: str, request_contact: bool | None = None, request_location: bool | None = None, request_poll: KeyboardButtonPollType | None = None, **kwargs: Any) aiogram.utils.keyboard.ReplyKeyboardBuilder[source]

Додавання нової кнопки до розмітки

as_markup() aiogram.types.reply_keyboard_markup.ReplyKeyboardMarkup[source]

Створення ReplyKeyboardMarkup

__init__(markup: List[List[KeyboardButton]] | None = None) None[source]#
add(*buttons: ButtonType) KeyboardBuilder[ButtonType]#

Додавання однієї або кількох кнопок до розмітки.

Параметри:

buttons

Повертає:

adjust(*sizes: int, repeat: bool = False) KeyboardBuilder[ButtonType]#

Налаштування раніше доданих кнопок до певних розмірів рядків.

By default, when the sum of passed sizes is lower than buttons count the last one size will be used for tail of the markup. If repeat=True is passed - all sizes will be cycled when available more buttons count than all sizes

Параметри:
  • sizes

  • repeat

Повертає:

property buttons: Generator[ButtonType, None, None]#

Отримання плоского списку усіх кнопок

Повертає:

copy() ReplyKeyboardBuilder[source]#

Робить повну копію поточного конструктора з розміткою

Повертає:

export() List[List[ButtonType]]#

Експортує налаштовану розмітку як список списків кнопок

>>> builder = KeyboardBuilder(button_type=InlineKeyboardButton)
>>> ... # Add buttons to builder
>>> markup = InlineKeyboardMarkup(inline_keyboard=builder.export())
Повертає:

classmethod from_markup(markup: ReplyKeyboardMarkup) ReplyKeyboardBuilder[source]#

Create builder from existing markup

Параметри:

markup

Повертає:

row(*buttons: ButtonType, width: int | None = None) KeyboardBuilder[ButtonType]#

Додає рядок у розмітку

Коли передано занадто багато кнопок, вони будуть розділені на багато рядків

Параметри:
  • buttons

  • width

Повертає: