maxapi/wiki/keyboard.md

3.2 KiB
Raw Blame History

Есть два способа построения клавиатур для сообщений: через InlineKeyboardBuilder и через pydantic-модели (ButtonsPayload)


Синтаксис создания клавиатуры

Через InlineKeyboardBuilder

from maxapi.utils.inline_keyboard import InlineKeyboardBuilder


@dp.message_created(Command('builder'))
async def builder_process(event: MessageCreated):

    builder = InlineKeyboardBuilder()
    builder.row(
        LinkButton(text="Сайт", url="https://example.com"),
        CallbackButton(text="Нажми меня", payload="some_data"),
    )
    # ... добавляйте новые ряды builder.row(...)
    await event.message.answer(
        text='Вот клавиатура',
        attachments=[builder.as_markup()]
    )

Через pydantic-модели

from maxapi.types import ButtonsPayload


@dp.message_created(Command('payload'))
async def builder_process(event: MessageCreated):

    buttons = [
        [LinkButton(text="Сайт", url="https://example.com")],
        [CallbackButton(text="Callback", payload="some_data")]
    ]
    payload = ButtonsPayload(buttons=buttons).pack()
    await event.message.answer(
        text='Вот клавиатура',
        attachments=[payload]
    )

Типы кнопок

Каждый тип кнопки подходит для разных сценариев. Вот основные из них:

LinkButton

  • Назначение: Переход по ссылке.

  • Пример:

    LinkButton(text="Открыть сайт", url="https://example.com")
    

CallbackButton

  • Назначение: Для обработки нажатий через callback.

  • Пример:

    CallbackButton(text="Нажми меня", payload="my_payload")
    

ChatButton

  • Назначение: Создание нового чата.

  • Пример:

    ChatButton(text="Создать чат", chat_title="Название", chat_description="Описание")
    

RequestGeoLocationButton

  • Назначение: Запрос геолокации у пользователя (на момент публикации этой документации не работает со стороны API MAX).

  • Пример:

    RequestGeoLocationButton(text="Геолокация")
    

MessageButton

  • Назначение: Быстрая отправка сообщения.

  • Пример:

    MessageButton(text="Сообщение")
    

RequestContactButton

  • Назначение: Запросить контакт у пользователя.

  • Пример:

    RequestContactButton(text="Контакт")
    

OpenAppButton

  • Назначение: Открыть встроенное приложение.

  • Пример:

    OpenAppButton(
        text="Приложение",
        web_app="username бота",
        contact_id="Идентификатор бота"
    )
    

Пример тут