Перейти к содержанию
Innovialabs

Ограничения Telegram Bot API: лимиты сообщений, файлов и запросов

Основы3 мин

Коротко

Telegram рекомендует не чаще 1 сообщения в секунду в один чат, не больше 20 в минуту в группу и около 30 в секунду суммарно; файлы бот скачивает до 20 МБ и загружает до 50 МБ, текст — до 4096 символов, а при превышении частоты приходит ошибка 429 с retry_after.

Главные лимиты одной таблицей

Telegram публикует ориентиры в официальном Bot FAQ и документации Bot API. Точные пороги могут меняться и зависеть от нагрузки, поэтому воспринимайте их как безопасный потолок, а не гарантию.

Что ограниченоЛимит
Сообщения в один чатне чаще 1 в секунду (короткие всплески допускаются)
Сообщения в одну группуне больше 20 в минуту
Массовая рассылкаоколо 30 сообщений в секунду суммарно
Скачивание файла ботом (getFile)до 20 МБ
Загрузка файла ботомдо 50 МБ, фото — до 10 МБ
Отправка файла по URLфото до 5 МБ, остальное до 20 МБ
Текст сообщения4096 символов
Подпись к медиа1024 символа
callback_data64 байта
Результатов в answerInlineQuery50
Медиа в альбомеот 2 до 10
Хранение необработанных обновленийдо 24 часов

Для рассылок с большей скоростью у Telegram есть платные рассылки за Telegram Stars — параметр allow_paid_broadcast. Условия смотрите в актуальной документации.

Ошибка 429 и retry_after

Когда бот превышает лимит, API отвечает HTTP 429 Too Many Requests. В ответе есть поле parameters.retry_after — сколько секунд нужно подождать.

Правильная реакция:

  1. Остановить отправку в этот чат (или всю очередь, если лимит глобальный).
  2. Подождать ровно retry_after секунд.
  3. Повторить запрос.

Неправильная реакция — сразу повторять в цикле. Это продлевает блокировку и может привести к более жёстким ограничениям.

import asyncio
from aiogram.exceptions import TelegramRetryAfter

async def safe_send(bot, chat_id, text):
    while True:
        try:
            return await bot.send_message(chat_id, text)
        except TelegramRetryAfter as e:
            await asyncio.sleep(e.retry_after)

Как проектировать бота под лимиты

Очередь отправки. Все исходящие сообщения проходят через одну очередь с ограничением скорости: общий лимит в секунду плюс отдельный интервал для каждого чата. Тогда всплеск заказов не превратится в волну ошибок.

Рассылки — отдельным процессом. Массовую отправку запускайте фоновой задачей, которая идёт пачками с паузами и сохраняет прогресс. Если процесс упадёт, рассылка продолжится с места остановки, а не начнётся заново с дублями.

Обработка 403. Пользователи блокируют бота. Ответ 403 Forbidden означает, что писать этому человеку больше нельзя: пометьте его в базе и исключите из следующих рассылок.

Длинные тексты. Делите их на части меньше 4096 символов по границам абзацев, а не посреди слова или разметки. Учитывайте, что подпись к фото ограничена 1024 символами.

Файлы. Загрузив файл один раз, сохраните его file_id и отправляйте повторно по нему — это быстрее и не тратит трафик. Если нужны файлы больше стандартных лимитов, можно поднять собственный Local Bot API Server: он снимает ограничение на скачивание и позволяет загружать файлы до 2000 МБ.

Редактирование вместо новых сообщений. Прогресс, статусы и меню лучше обновлять через editMessageText: меньше сообщений — меньше риск упереться в лимит в одном чате.

Удаление сообщений. Бот может удалять сообщения в группах только в течение 48 часов после отправки, так что автоочистку чата планируйте с этим ограничением.

Частые ошибки

  • Рассылка простым циклом по всей базе без пауз и учёта 429.
  • Отправка нескольких сообщений подряд в ответ на одно действие вместо одного сообщения.
  • Повторная загрузка одного и того же файла вместо file_id.
  • Хранение больших данных в callback_data — лимит 64 байта.
  • Ожидание, что бот скачает видео пользователя на 100 МБ через стандартный API.

Частые вопросы

Скорее всего, сработал лимит на один чат или группу: несколько сообщений подряд одному пользователю или больше 20 в минуту в группу. Ограничивайте частоту не только глобально, но и для каждого чата.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.