Кнопки в боте MAX: семь типов и чем заменить клавиатуру Telegram

Руководство2 мин чтения

Кнопки — это то, на чём держится почти любой бот для бизнеса: меню, выбор услуги, подтверждение заказа. В MAX кнопки устроены похоже на Telegram, но есть одно большое отличие: нет обычной клавиатуры под полем ввода.

Семь типов кнопок

ТипЧто делаетАналог в Telegram
callbackПрисылает боту событие message_callback с вашим payloadcallback_data
linkОткрывает ссылку, до 2 048 символовurl
messageОтправляет боту заранее заданный текстОбычная клавиатура
request_contactЗапрашивает телефон, привязанный к аккаунту MAXrequest_contact
request_geo_locationЗапрашивает геопозициюrequest_location
open_appОткрывает мини-приложение в чате с ботомweb_app
clipboardКопирует текст в буфер обменаcopy_text

Лимиты

  • До 210 кнопок в 30 рядах и до 7 кнопок в ряду.
  • Кнопок link, open_app, request_contact и request_geo_location — до трёх в ряду.
  • Текст кнопки — от 1 до 128 символов, длинный обрезается.
  • Payload кнопки callback — до 1 024 символов. В Telegram callback_data ограничен 64 байтами, так что запас больше.
  • Кнопки в ряду одной ширины, их текст выравнивается по центру.

Чем заменить обычную клавиатуру

В Telegram многие боты показывают меню обычной клавиатурой под полем ввода: нажатие отправляет текст «Меню» или «Мои заказы», и бот реагирует на этот текст. В MAX такой клавиатуры нет, но есть кнопка message, которая делает то же самое: отправляет боту заданный текст. Поэтому обычную клавиатуру можно показать inline-кнопками под сообщением, а логика бота не изменится.

Шлюз BotHop делает эту замену сам: бот отправляет ReplyKeyboardMarkup, а пользователь в MAX видит те же кнопки под сообщением. Нажатие приходит боту тем же текстом, что и в Telegram.

Ответ на нажатие

На нажатие кнопки callback бот отвечает через POST /answers. Можно показать одноразовое уведомление или заменить исходное сообщение целиком. В Telegram для этого два разных метода, answerCallbackQuery и editMessageText.

О чём помнить

  • Кнопки не пересылаются вместе с сообщением в другой чат.
  • Кнопка request_contact работает только в чате с этим ботом. Ответ содержит hash, по которому можно проверить, что номер настоящий.
  • Кнопок оплаты и switch_inline_query в MAX нет.

Частые вопросы

Сколько кнопок можно добавить в сообщение MAX?

До 210 кнопок в 30 рядах, до 7 кнопок в ряду. Кнопок link, open_app, request_contact и request_geo_location — до трёх в ряду.

Пересылаются ли кнопки вместе с сообщением?

Нет. Если переслать сообщение бота с кнопками в другой чат, кнопки не перешлются.

Как получить нажатие на кнопку?

Нажатие на кнопку callback приходит боту событием `message_callback`. Ответить можно через `POST /answers`: показать уведомление или заменить сообщение.