Telegram Bot API: getUpdates, вебхук и проверка бота
Бот получает обновления одним из двух способов: забирает их сам через getUpdates или ждет, пока Telegram отправит их на его адрес через вебхук. Включить оба способа сразу нельзя, и это частая причина пустого getUpdates.

Содержание6 разделов
Как устроен запрос
Каждый запрос к Bot API идет по HTTPS на адрес https://api.telegram.org/bot<токен>/<метод>. Подойдут GET и POST. Параметры передают в строке запроса, формой или в JSON. Токен выдает @BotFather.
Проверить токен проще всего методом getMe: в ответе будет имя бота. В проверке Telegram-бота это одна кнопка, запрос уходит с нашего сервера, VPN не нужен.
getUpdates
getUpdates отдает накопленные обновления: новые сообщения, нажатия кнопок, вступления в чаты. Telegram хранит их до 24 часов.
Чтобы подтвердить обработанные обновления, передайте offset больше последнего полученного update_id. Пока вы этого не сделаете, те же обновления будут приходить снова.
Параметр limit задает, сколько обновлений придет за раз: от 1 до 100. timeout больше нуля включает длинный опрос: Telegram держит соединение, пока не появится обновление. С timeout 0 опрос короткий.
Вебхук
С вебхуком Telegram сам отправляет каждое обновление на ваш адрес. Адрес задают методом setWebhook. Нужны HTTPS и один из портов: 443, 80, 88 или 8443.
Чтобы отличать запросы Telegram от чужих, задайте secret_token: Telegram положит его в заголовок X-Telegram-Bot-Api-Secret-Token. max_connections ограничивает число одновременных запросов к вашему серверу: от 1 до 100, по умолчанию 40.
Метод getWebhookInfo показывает текущий адрес, число обновлений в очереди (pending_update_count) и последнюю ошибку доставки (last_error_message). Если бот молчит, начните с этого метода.
Почему getUpdates пустой
Пока у бота стоит вебхук, getUpdates не работает: Telegram отвечает ошибкой 409 Conflict. Снимите вебхук методом deleteWebhook, и обновления снова можно забирать вручную. Параметр drop_pending_updates решает, выбросить ли при этом накопленную очередь.
Вторая причина: обновления уже забрал ваш же бот. Если его код работает на сервере и опрашивает getUpdates, он подтверждает обновления раньше, чем вы успеете их посмотреть.
Свой сервер Bot API
Исходный код сервера Bot API открыт: репозиторий tdlib/telegram-bot-api на GitHub. На своем сервере бот загружает файлы до 2000 МБ и скачивает без ограничений на размер.
Бот и AI-агент
Управлять ботом из Claude Code или Cursor можно через MCP: Telegram API MCP дает агенту методы Bot API. Чтобы переписываться с самим агентом из Telegram, посмотрите Claude-to-IM.
Вопросы и ответы
Можно ли использовать getUpdates и вебхук одновременно?
Нет. Пока стоит вебхук, getUpdates возвращает ошибку. Выберите один способ.
Как долго Telegram хранит обновления?
До 24 часов. Если бот не забрал обновление за это время, оно пропадет.
Какие порты подходят для вебхука?
443, 80, 88 и 8443. Адрес должен работать по HTTPS.


