MAX Bot API и Telegram Bot API: чем отличаются

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

MAX Bot API устроен похоже на Telegram Bot API: бот отправляет HTTP-запросы, получает события через вебхук или long polling, отвечает сообщениями с кнопками. Но детали отличаются, и именно на них уходит время при переносе. Ниже сравнение по документации dev.max.ru и открытой OpenAPI-схеме MAX.

Адрес и авторизация

TelegramMAX
Адрес APIapi.telegram.org/bot<token>/<method>platform-api2.max.ru/<resource>
ТокенВ адресе запросаВ заголовке Authorization
Стиль методовОдин метод на действие: sendMessageREST: POST /messages, PUT /messages
СертификатСтандартные центрыЦепочка Минцифры, её нужно добавить в доверенные

Сообщения

TelegramMAX
Длина текста4 096 символов4 000 символов
ФорматированиеMarkdownV2, HTMLMarkdown, HTML
Ответ на сообщениеreply_parameterslink с типом reply
ПересылкаforwardMessagelink с типом forward
Без звукаdisable_notificationnotify: false
Спойлеры, свои эмодзиЕстьНет

Кнопки

В MAX только inline-клавиатура под сообщением: до 210 кнопок, до 30 рядов, до 7 кнопок в ряду. Кнопок link, open_app, request_contact и request_geo_location — не больше трёх в ряду. Подробнее о типах кнопок — в статье Кнопки в боте MAX.

TelegramMAX
callback_data, до 64 байтcallback, payload до 1 024 символов
urllink, до 2 048 символов
web_appopen_app
copy_textclipboard
Обычная клавиатура KeyboardButtonНет, замена — кнопка message
request_contact, request_locationrequest_contact, request_geo_location
switch_inline_query, payНет

События

В Telegram все события приходят как Update с разными полями. В MAX у каждого события свой тип update_type.

Telegram UpdateMAX update_type
messagemessage_created
edited_messagemessage_edited
callback_querymessage_callback
/start с меткойbot_started с payload до 128 символов
my_chat_memberbot_added, bot_removed, bot_stopped, bot_admin_permissions_changed
chat_memberuser_added, user_removed
inline_query, poll, message_reactionНет

Файлы

В MAX файл сначала загружается через POST /uploads, потом его токен прикрепляется к сообщению. Лимиты на загрузку: изображение до 50 МБ, видео до 250 МБ, аудио до 256 МБ, файл до 4 ГБ. Аудио, файл, контакт и стикер должны быть единственным вложением в сообщении, а фото и видео можно отправлять альбомом.

Вебхук и long polling

Оба способа есть: POST /subscriptions для вебхука и GET /updates для long polling. Но в бою MAX требует вебхук на HTTPS с портом 443, и пока подписка активна, long polling молча ничего не получает. Подробно — в статье Вебхук для бота в MAX.

Чего в MAX нет совсем

В TelegramЧто делатьКак
Клавиатура под полем вводаПокажет те же кнопки под сообщением. Нажатие отправит боту тот же текст, как в TelegramАналог
ОпросыСоберёт опрос на кнопках, сам посчитает голоса и обновит результатАналог
GIF, голосовые, кружкиОтправит как видео и аудиоАналог
Спойлеры и свои эмодзиПокажет как обычный текстАналог
Реакции и кубикПропустит. Бот получит ok: true и не упадётПропуск
Стикеры из TelegramПропустит или заменит на эмодзи, который вы выберетеПропуск
Темы в группахОтправит сообщение в общий чатПропуск
Inline-режим, игры, звёздыВернёт понятную ошибку в формате TelegramОшибка
ПлатежиПеределаем на оплату по ссылке через вашу платёжную систему, например ЮKassa или CloudPaymentsПод ключ
Мини-приложенияКнопка откроет приложение. Само приложение адаптируем под MAXПод ключ

Шлюз BotHop закрывает эти различия: бот говорит на Telegram Bot API, а шлюз переводит всё в MAX. Для бота меняется только адрес API, api.bothop.ru вместо api.telegram.org.

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

Какой адрес у MAX Bot API?

Документация MAX рекомендует `platform-api2.max.ru`. Токен передаётся в заголовке `Authorization`, а не в адресе запроса.

Какой лимит на длину сообщения в MAX?

4 000 символов. В Telegram — 4 096.

Есть ли в MAX обычная клавиатура под полем ввода?

Нет, только inline-клавиатура под сообщением. Её кнопка типа message отправляет боту текст, поэтому обычную клавиатуру можно заменить ею.