Telegram Bot API: Бот без своего сервера с HTTPS: long polling

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

Для бота на домашнем компьютере, в локальной сети или в скрипте — без публичного адреса и сертификата.

  1. Убедись, что вебхук не установлен (иначе getUpdates вернёт ошибку).
  2. В цикле вызывай POST /bot{token}/getUpdates с timeout = 30 (длинный опрос: запрос ждёт новых событий до 30 секунд) и offset.
  3. После каждого ответа ставь offset = update_id последнего полученного обновления + 1 — так Telegram поймёт, что предыдущие обработаны, и не пришлёт их снова.
  4. На каждое сообщение отвечай через POST /bot{token}/sendMessage.
import requests

API = "https://api.telegram.org/bot<токен>"
offset = 0
while True:
    r = requests.post(f"{API}/getUpdates", json={"offset": offset, "timeout": 30, "allowed_updates": ["message"]}, timeout=40).json()
    for upd in r.get("result", []):
        offset = upd["update_id"] + 1
        msg = upd.get("message")
        if msg and "text" in msg:
            requests.post(f"{API}/sendMessage", json={"chat_id": msg["chat"]["id"], "text": f"Вы написали: {msg['text']}"})

Базовые URL

Авторизация

Тип: API-ключ

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

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

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

POST /bot{token}/getUpdates — Получение обновлений (long polling)

Возвращает массив объектов Update. Не работает, пока установлен вебхук.

Параметр Где Тип Обяз. Описание
token path string да Токен бота
offset body integer нет ID первого обновления; на 1 больше последнего полученного — подтверждает предыдущие
limit body integer нет Число обновлений, 1–100, по умолчанию 100
timeout body integer нет Таймаут long polling в секундах, по умолчанию 0
allowed_updates body array нет Типы обновлений, например ["message", "edited_channel_post", "callback_query"]

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