Telegram Bot API: Принимать сообщения через вебхук

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

Бот на сервере с HTTPS: Telegram сам присылает каждое сообщение пользователю на твой адрес.

  1. Установи вебхук: POST /bot{token}/setWebhook с url (HTTPS, порты 443, 80, 88 или 8443) и secret_token — случайной строкой.
  2. Telegram присылает на url POST-запрос с объектом Update и заголовком X-Telegram-Bot-Api-Secret-Token. Сверяй заголовок с secret_token, чтобы отбрасывать чужие запросы.
  3. Отвечай 200 сразу: при другом коде Telegram повторяет запрос. Ответ пользователю отправляй отдельным вызовом POST /bot{token}/sendMessage с chat_id из update.message.chat.id.
  4. Пока вебхук установлен, getUpdates не работает. Чтобы вернуться к long polling, вызови setWebhook с пустым url.
curl -X POST "https://api.telegram.org/bot$TOKEN/setWebhook" \
  -H 'Content-Type: application/json' \
  -d '{
        "url": "https://example.ru/tg/webhook",
        "secret_token": "s3cr3t_Random_42",
        "allowed_updates": ["message", "callback_query"],
        "drop_pending_updates": true
      }'

Базовые URL

Авторизация

Тип: API-ключ

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

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

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

POST /bot{token}/setWebhook — Установка вебхука

Telegram отправляет на URL HTTPS POST с JSON-объектом Update; при ответе не 2XX повторяет запрос.

Параметр Где Тип Обяз. Описание
token path string да Токен бота
url body string да HTTPS URL для обновлений; пустая строка удаляет вебхук
certificate body file нет Публичный ключ для самоподписанного сертификата
ip_address body string нет Фиксированный IP для отправки вебхуков
max_connections body integer нет Одновременных соединений, 1–100, по умолчанию 40
allowed_updates body array нет Типы обновлений
drop_pending_updates body boolean нет Сбросить накопленные обновления
secret_token body string нет 1–256 символов A-Z, a-z, 0-9, _, -; приходит в заголовке X-Telegram-Bot-Api-Secret-Token

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 нет Бизнес-подключение, от имени которого отправляем

Нюансы

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


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