Перейти к содержанию

InlineKeyboardBuilder

Утилита для построения inline-клавиатур.

class InlineKeyboardBuilder:
    MAX_WIDTH = 7        # Макс. кнопок в ряду
    MAX_ROWS = 30        # Макс. рядов
    MAX_BUTTONS = 210    # Макс. кнопок всего

Методы для добавления кнопок

Метод Описание
callback(text, payload?, *, callback_data?) Callback-кнопка. Отправляет событие message_callback
link(text, url) Открывает ссылку в новой вкладке
request_contact(text) Запрашивает контакт пользователя
request_geo_location(text, *, quick?) Запрашивает геолокацию. quick=True — без подтверждения
open_app(text, *, web_app?, contact_id?, payload?) Открывает мини-приложение
message(text) Отправляет текст кнопки как сообщение от пользователя
clipboard(text, payload) Копирует payload в буфер обмена

Методы компоновки

Метод Описание
row(*buttons) Начать новый ряд
adjust(*sizes: int) Перераспределить кнопки: adjust(2, 1) → 2 кнопки в 1-м ряду, 1 во 2-м
copy() Создать копию builder
export() -> list[list[Button]] Получить список рядов кнопок
as_markup() -> InlineKeyboardAttachmentRequest Получить объект вложения для API

Пример

from maxgram.utils.keyboard import InlineKeyboardBuilder

builder = InlineKeyboardBuilder()
builder.callback(text="1", payload="n:1")
builder.callback(text="2", payload="n:2")
builder.link(text="Website", url="https://max.ru")
builder.clipboard(text="Copy code", payload="PROMO123")
builder.adjust(2)  # 2 кнопки в ряду

# Отправка через keyboard=
await message.answer("Choose:", keyboard=builder)

prepare_keyboard

from maxgram.utils.keyboard import prepare_keyboard

def prepare_keyboard(
    attachments: list[Any] | None,
    keyboard: InlineKeyboardBuilder | InlineKeyboard | list[list[Button]] | None,
) -> list[Any] | None

Хелпер для конвертации keyboard в формат attachments. Используется внутри message.answer(keyboard=...), bot.send_message(keyboard=...) и т.д.

Исходный файл

maxgram/utils/keyboard.py