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-контента, оценки качества и умного планирования.