Telegram Bot API: Кнопки под сообщением и обработка нажатий

Сценарий из mcp-everything. Актуально на 2026-10-24.

Inline-кнопки: «Подтвердить заказ», «Отменить», выбор варианта — без ввода текста.

  1. Отправь сообщение с кнопками: POST /bot{token}/sendMessage с reply_markup = inline_keyboard. У каждой кнопки — text и callback_data (до 64 байт): по ней ты поймёшь, что нажали.
  2. Нажатие приходит как update с callback_query: в нём id, data (твоя callback_data) и message, к которому была кнопка.
  3. Обязательно ответь на нажатие: POST /bot{token}/answerCallbackQuery с callback_query_id — иначе у пользователя будет крутиться индикатор загрузки. В text можно показать короткое уведомление.
  4. Обнови исходное сообщение: POST /bot{token}/editMessageText с chat_id, message_id и новым текстом (и новыми кнопками или без них).
# Сообщение с кнопками
curl -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" \
  -H 'Content-Type: application/json' \
  -d '{
        "chat_id": 123456789,
        "text": "Заказ №1042 на 15 000 ₽. Подтвердить?",
        "reply_markup": {"inline_keyboard": [[
          {"text": "✅ Подтвердить", "callback_data": "order:1042:ok"},
          {"text": "❌ Отменить", "callback_data": "order:1042:cancel"}
        ]]}
      }'

# После нажатия: убрать «часики» и поменять текст
curl -X POST "https://api.telegram.org/bot$TOKEN/answerCallbackQuery" \
  -H 'Content-Type: application/json' -d '{"callback_query_id": "<id>", "text": "Заказ подтверждён"}'
curl -X POST "https://api.telegram.org/bot$TOKEN/editMessageText" \
  -H 'Content-Type: application/json' -d '{"chat_id": 123456789, "message_id": 512, "text": "Заказ №1042 подтверждён ✅"}'

Базовые URL

Авторизация

Тип: API-ключ

Токен бота (выдаёт @BotFather) передаётся в пути запроса после bot.

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe

Методы сценария

POST /bot{token}/sendMessage — Отправка текстового сообщения

Возвращает отправленный Message.

Параметр Где Тип Обяз. Описание
token path string да Токен бота
chat_id body integer/string да ID чата или @username канала/супергруппы
text body string да Текст, 1–4096 символов после разбора сущностей
parse_mode body string нет Режим форматирования (Markdown-стиль или HTML)
entities body array нет Сущности текста вместо parse_mode
message_thread_id body integer нет ID темы форума
link_preview_options body object нет Настройки превью ссылок
disable_notification body boolean нет Отправить без звука
protect_content body boolean нет Запретить пересылку и сохранение
reply_parameters body object нет Сообщение, на которое отвечаем
reply_markup body object нет Inline-клавиатура, обычная клавиатура, её удаление или ForceReply
business_connection_id body string нет Бизнес-подключение, от имени которого отправляем

POST /bot{token}/answerCallbackQuery — Ответ на нажатие inline-кнопки

Показывает уведомление или алерт; возвращает True.

Параметр Где Тип Обяз. Описание
token path string да Токен бота
callback_query_id body string да ID callback-запроса
text body string нет Текст уведомления, 0–200 символов
show_alert body boolean нет Показать алерт вместо уведомления, по умолчанию false
url body string нет URL для открытия (игра или t.me/your_bot?start=XXXX)
cache_time body integer нет Время кэширования ответа на клиенте, секунд; по умолчанию 0

POST /bot{token}/editMessageText — Редактирование текста сообщения

Возвращает отредактированный Message или True для inline-сообщений.

Параметр Где Тип Обяз. Описание
token path string да Токен бота
chat_id body integer/string нет Обязателен, если нет inline_message_id
message_id body integer нет Обязателен, если нет inline_message_id
inline_message_id body string нет Обязателен, если нет chat_id и message_id
text body string нет Новый текст, 1–4096 символов; обязателен, если нет rich_message
parse_mode body string нет Режим форматирования
link_preview_options body object нет Настройки превью ссылок
reply_markup body object нет Inline-клавиатура

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://core.telegram.org/bots/api Вся интеграция одним документом: https://mcp-everything.ru/integrations/telegram-bot-api.md