Перейти к основному содержимому

Callback-запрос

Callback-запрос — это обновление, которое Telegram отправляет боту, когда пользователь нажимает callback-кнопку на инлайн-клавиатуре. Обновление содержит строку данных, которую бот задал кнопке, и бот обязан на него ответить. Callback-кнопка, в отличие от кнопки со ссылкой, не открывает адрес: она просит бота выполнить действие.

Что содержит callback-запрос

Объект Bot API под названием CallbackQuery имеет уникальный идентификатор, пользователя, нажавшего кнопку, и поле data со строкой, которую бот прикрепил к этой кнопке. Если кнопка стоит на сообщении, отправленном ботом, обновление также содержит это сообщение. Поле data — единственный способ для бота узнать, какую кнопку нажали, поэтому каждую строку данных нужно выбирать внимательно.

Лимит 64 байта для данных кнопки

Поле callback_data инлайн-кнопки должно содержать от 1 до 64 байтов. Лимит задан в байтах, а не в символах, поэтому кириллическая буква в UTF-8 занимает два байта, и короткая русская или украинская надпись быстро исчерпывает запас. Не кладите в строку данных всю запись. Храните запись на сервере, а в кнопку кладите короткий ключ, например название действия и числовой идентификатор.

Почему бот обязан ответить

После нажатия callback-кнопки клиент Telegram показывает индикатор загрузки, пока бот не вызовет метод answerCallbackQuery. Документация Bot API требует вызывать его, даже когда пользователю не нужно сообщение. Метод принимает необязательный текст длиной от 0 до 200 символов, флаг show_alert, который показывает окно-оповещение вместо небольшого уведомления вверху чата, и cache_time, который по умолчанию равен 0 секунд.

Callback-кнопки и каналы

Callback-запрос приходит боту, поэтому кнопке этого типа нужен работающий бот, который обрабатывает обновление и хранит собственное состояние. Кнопке, которая лишь открывает страницу, это не нужно: используйте кнопку со ссылкой, она не отправляет боту никаких обновлений. Проверяйте тип каждой кнопки, прежде чем добавить её в запланированный пост, и держите токен бота в секрете, потому что любой, у кого есть токен, может читать обновления этого бота.

Связанные функции

Примените эти понятия на практике

Автоматизируйте публикацию в Telegram с помощью AI-контента, оценки качества и умного планирования.