Удаление клавиатуры у сообщения через PuzzleBot API

Иногда после обработки заявки или выполнения действия необходимо убрать клавиатуру из уже отправленного сообщения. Для этого используется метод tg.editMessageReplyMarkup. Ниже найдете подробную инструкцию

Автор статьи Антоний Павлов - разработчик Telegram-ботов и мини-приложений

Запрос

После выполнения запроса клавиатура будет удалена из указанного сообщения

https://api.puzzlebot.top/?token={{token_puzzlebot}}&method=tg.editMessageReplyMarkup&chat_id=-{{chat_id}}&message_id={{message_id}}&reply_markup=()

Параметры, которые используются в запросе

  1. token_puzzlebot - это API-токен вашего бота. Получить его можно в:

Настройки → Интеграции → Входящие запросы → Сгенерировать API-токен

Рекомендуется сохранить токен в глобальную переменную и использовать её во всех запросах. Например: {{token_puzzlebot}}

2. chat_id - это ID чата, в котором находится сообщение. Получить его можно из ссылки на сообщение в самом чате

Например: https://t.me/c/2039518651/8020/22961
Из ссылки берем: 2039518651
Для использования в API необходимо добавить префикс -100: -1002039518651
Именно это значение используется в параметре chat_id

3. message_id - это ID конкретного сообщения, у которого нужно удалить клавиатуру. 

Например: https://t.me/c/2039518651/8020/22961
ID сообщения: 22961
Именно это значение необходимо передать в параметре message_id

Автоматическое получение ID сообщения

В PuzzleBot доступны системные переменные:

LAST_BOT_MESSAGE_ID_****** LAST_USER_MESSAGE_ID_******

Часто требуется заранее определить ID следующего сообщения, которое будет отправлено ботом. Это удобно, если нужно записать ID сообщения прямо в кнопку этого же сообщения, чтобы позже по нажатию удалить клавиатуру.

Используйте формулу:

if(LAST_BOT_MESSAGE_ID_****** > LAST_USER_MESSAGE_ID_******, LAST_BOT_MESSAGE_ID_******, LAST_USER_MESSAGE_ID_******)+1

Как работает формула:

  1. Сравнивает последний ID сообщения бота и пользователя

  2. Выбирает больший ID

  3. Прибавляет 1

  4. Возвращает ID следующего сообщения

Пример использования

Запрос на удаление клавиатуры:

https://api.puzzlebot.top/?token=ВАШ_ТОКЕН&method=tg.editMessageReplyMarkup&chat_id=-1002039518651&message_id=22961&reply_markup=()

После выполнения запроса:

  • сообщение останется в чате

  • клавиатура будет удалена

  • пользователь больше не сможет нажимать кнопки в этом сообщении

Наиболее частые сценарии использования:

  • обработка заявок

  • закрытие тикетов

  • подтверждение действий пользователя

  • отключение старых кнопок после выбора варианта

  • предотвращение повторного нажатия на кнопку

Такой подход позволяет избежать повторной обработки одного и того же действия и делает интерфейс бота более понятным для пользователя

Была ли страница полезна?