Ограничения Telegram Bot API: лимиты запросов и очереди

Вы когда-нибудь сталкивались с тем, что ваш Telegram-бот внезапно перестал отвечать? Не потому что он сломался, а потому что Telegram просто его проигнорировал? Это не ошибка - это лимиты Telegram Bot API. Многие разработчики думают, что бот может слать сообщения без остановки. На практике - нет. Telegram жестко ограничивает, сколько запросов бот может отправить за секунду, минуту и час. И если вы перешагнете эти границы, ваш бот получит блокировку - временно или даже навсегда.

Сколько запросов можно отправлять в секунду?

Telegram Bot API разрешает до 30 запросов в секунду на один бот. Это не 30 сообщений - это 30 API-вызовов. Каждый вызов sendMessage, sendPhoto, editMessageText, getUpdates - это один запрос. Даже если вы отправляете одно сообщение, но делаете это 31 раз за одну секунду, Telegram откажется обрабатывать 31-й запрос. Он вернет ошибку 429 Too Many Requests.

Этот лимит не зависит от количества пользователей. Даже если ваш бот обслуживает 10 000 человек, он все равно не может делать больше 30 запросов в секунду. Это значит, что если вы пытаетесь рассылать уведомления всем пользователям одновременно - вы попадете в ловушку. Даже 1000 пользователей за 30 секунд - это уже 33 запроса в секунду. Превышение.

Что происходит, когда вы превышаете лимит?

Telegram не блокирует бота сразу. Он использует систему очередей и таймаутов. Когда вы отправляете запрос слишком часто, Telegram начинает откладывать ответы. Вместо мгновенного ответа вы получаете задержку в 1-2 секунды. Потом - 5 секунд. Потом - 15. Если вы продолжаете, Telegram начинает возвращать ошибку 429 с заголовком Retry-After, который говорит, через сколько секунд можно повторить запрос.

Если вы игнорируете эти задержки и продолжаете слать запросы каждые 100 мс - Telegram может временно заблокировать бота на 10-30 минут. За несколько таких инцидентов за месяц - бота могут забанить полностью. И да, это не предупреждение. Это автоматическое действие, без писем, без уведомлений. Вы просто перестаете получать ответы.

Какие методы API самые «дорогие»?

Не все API-методы одинаково «нагружают» систему. Некоторые из них требуют больше ресурсов и имеют более жесткие ограничения.

  • sendMessage - самый частый. Допустимо до 30 раз в секунду.
  • sendPhoto, sendVideo - требуют загрузки файлов. Telegram ограничивает их до 15 запросов в секунду, потому что они тяжелее для серверов.
  • getUpdates - используется для получения входящих сообщений. Если вы запрашиваете обновления чаще, чем раз в 5-10 секунд, Telegram может начать возвращать пустые ответы или отключать ваше соединение.
  • setWebhook - можно вызывать только один раз в 10 минут. Повторные вызовы в течение этого времени игнорируются.

Если вы используете бота для отправки изображений или видео - вы не просто ограничены 30 запросами. Вы ограничены 15. Это значит, что даже если вы не превышаете общий лимит, вы можете превысить лимит для конкретного типа запроса.

Очереди и буферизация: как Telegram управляет нагрузкой

Telegram не обрабатывает запросы в порядке их прихода. Он использует внутреннюю очередь, которая работает по принципу «первым пришел - первым обслужен», но с приоритетами. Запросы на отправку текста имеют высший приоритет. Запросы на загрузку медиа - низший. Если очередь переполнена, Telegram начинает отбрасывать запросы на медиа-файлы, чтобы не перегружать сеть.

Это значит, что если вы отправляете 20 текстовых сообщений и 10 фотографий за секунду, Telegram может обработать все 20 текстов, но отбросить 5-7 фотографий. Вы не получите ошибку - просто файлы не отправятся. Это одна из самых коварных проблем: бот выглядит как работает, но часть контента теряется.

Если вы используете бота для рассылки новостей, рекламы или уведомлений - вы должны учитывать это. Не полагайтесь на то, что все сообщения дойдут. Добавьте логирование: записывайте, какие запросы были отправлены, а какие не прошли. Используйте Retry-After заголовок, чтобы автоматически перезапускать неудачные запросы через нужное время.

Сравнение массовой отправки фото и групповой отправки через sendMediaGroup.

Как избежать блокировки: практические советы

Вот что работает на практике:

  1. Всегда используйте задержки. Даже если вы отправляете 25 сообщений в секунду - добавьте 100-200 мс между запросами. Это снижает риск попадания в лимит.
  2. Собирайте сообщения в пакеты. Вместо того чтобы слать 100 отдельных сообщений, используйте sendMediaGroup - можно отправить до 10 медиафайлов за один запрос. Это сэкономит вам 90 запросов.
  3. Используйте вебхуки вместо long polling. Метод getUpdates в цикле - это плохая практика. Он создает лишнюю нагрузку. Настройте вебхук - Telegram сам будет отправлять вам новые сообщения, когда они появляются.
  4. Логируйте ошибки 429. Если вы видите Retry-After: 5, не игнорируйте. Подождите 6 секунд и повторите. Не пытайтесь «переслать сразу».
  5. Не отправляйте одинаковые сообщения массово. Telegram фильтрует спам. Если 1000 пользователей получают одно и то же сообщение - бота могут забанить за спам, даже если вы не превысили лимиты.

Сравнение лимитов: что реально можно сделать

Вот что вы можете сделать за минуту, если соблюдаете правила:

Сравнение лимитов Telegram Bot API
Действие Лимит в секунду Лимит в минуту Рекомендация
Отправка текста 30 1800 Добавьте задержку 35 мс между запросами
Отправка фото/видео 15 900 Используйте sendMediaGroup для групповых отправок
Получение обновлений (getUpdates) 1 60 Перейдите на вебхук
Изменение сообщений 30 1800 Ограничьте редактирование только важными сообщениями
Установка вебхука 1 раз в 10 минут 6 раз в час Не меняйте вебхук без необходимости

Эти цифры - не рекомендации. Это жесткие границы. Превышение - это не «можно обойти». Это «безопасность Telegram».

Что делать, если бот уже заблокирован?

Если ваш бот перестал отвечать, и вы видите ошибку 429 с Retry-After больше 30 секунд - значит, вы уже в зоне риска. Проверьте:

  • Не отправляете ли вы одинаковые сообщения 50+ пользователям за раз?
  • Не используете ли вы getUpdates в цикле с интервалом 100 мс?
  • Не отправляете ли фото/видео чаще, чем 1 раз в 70 мс?

Если вы нашли проблему - остановите бота. Подождите 30 минут. Затем запустите его снова, но с задержками. Если бот не восстановился через 2 часа - попробуйте создать нового бота через @BotFather. Иногда Telegram блокирует именно ID бота, а не IP-адрес. В этом случае новый бот - единственный выход.

Визуализация очередей запросов Telegram с ограничениями и правильными методами обхода.

Когда можно обойти лимиты?

Никогда. Нет легальных способов обойти лимиты Telegram Bot API. Даже если вы используете несколько ботов - Telegram отслеживает их по связанным аккаунтам, IP-адресам и поведению. Если вы запускаете 5 ботов, каждый из которых делает по 25 запросов в секунду - это 125 запросов. Telegram заметит. И заблокирует всех.

Некоторые разработчики используют прокси или VPN, чтобы «скрыть» запросы. Это не работает. Telegram не блокирует по IP. Он блокирует по поведению бота. Даже если вы смените IP - если ваш бот ведет себя как спамер - он будет заблокирован.

Единственный легальный способ - это использовать Telegram Bot API так, как он задуман: медленно, стабильно, с учетом очередей. Это не значит, что вы не можете масштабироваться. Это значит, что вы должны проектировать бота с учетом этих ограничений с самого начала.

Как масштабировать бота без нарушения лимитов

Если у вас больше 10 000 пользователей, и вы хотите отправлять уведомления - вот как это делают профессионалы:

  • Разбейте пользователей на группы по 500-1000 человек.
  • Отправляйте сообщения в каждую группу с интервалом в 1-2 минуты.
  • Используйте очередь задач (например, Redis + Celery) для планирования рассылок.
  • Добавьте случайные задержки между отправками - чтобы не было паттерна «каждые 33 мс».
  • Проверяйте статус доставки через getUpdates и логируйте неудачи.

Такой подход не выглядит как «массовая рассылка». Он выглядит как естественная, постепенная активность. Telegram не блокирует естественные действия. Он блокирует автоматизированный спам.

Что будет, если вы игнорируете лимиты?

В 2025 году Telegram ужесточил правила для ботов, которые массово рассылают рекламу. Боты, которые превышали лимиты и отправляли одинаковые сообщения, получили:

  • Временную блокировку на 24-72 часа (для первых нарушений)
  • Полный запрет на отправку сообщений (для повторных)
  • Удаление из поиска ботов (ботов больше нельзя найти через @BotFather)

Некоторые компании потеряли целые каналы, потому что их боты были забанены. Их клиенты не получали уведомления. Их бизнес пострадал. Это не гипотетическая угроза - это реальные случаи, которые происходят каждый день.

Ваш бот - это не инструмент для обхода правил. Это часть экосистемы Telegram. И как и любой участник, он должен соблюдать правила.

Какой максимальный лимит запросов Telegram Bot API в секунду?

Максимальный лимит - 30 запросов в секунду для большинства методов, таких как sendMessage. Для отправки фото и видео - 15 запросов в секунду. Превышение приводит к ошибке 429 и временной блокировке.

Что делать, если бот получает ошибку 429 Too Many Requests?

Проверьте заголовок Retry-After. Подождите указанное время (например, 5 или 15 секунд) и повторите запрос. Не пытайтесь отправить следующий запрос сразу. Используйте автоматические повторы с экспоненциальной задержкой.

Можно ли обойти лимиты, используя несколько ботов?

Нет. Telegram отслеживает поведение ботов по связанным аккаунтам, IP-адресам и шаблонам отправки. Если вы запускаете несколько ботов с одинаковым поведением - все они будут заблокированы как часть одной спам-сети.

Какой метод API самый «тяжелый» для Telegram?

Отправка фото, видео и файлов (sendPhoto, sendVideo) - самые тяжелые. Их лимит - 15 запросов в секунду. Это связано с нагрузкой на серверы загрузки файлов. Текстовые сообщения легче и имеют лимит 30 запросов в секунду.

Какие инструменты помогают управлять лимитами?

Используйте очереди задач (Redis, RabbitMQ), библиотеки с автоматическими повторами (например, python-telegram-bot с retry-механизмом) и логирование ошибок. Также рекомендуется использовать вебхуки вместо getUpdates для снижения нагрузки.