Webhook vs Polling¶
Рекомендация MAX
Получение обновлений с помощью Long Polling ограничено по скорости и сроку хранения событий — этот способ не подходит для production-окружения. Рекомендуется на всех этапах работы использовать Webhook.
Polling¶
Параметры:
bot— экземпляр ботаskip_updates— пропускать старые события (по умолчаниюFalse)
Плюсы:
- Простая настройка
- Не требует публичного URL
- Подходит для разработки
Минусы:
- Постоянное подключение к API
- Не подходит для production (ограничения по скорости и хранению событий)
Ограничения Long Polling (с 11.05.2026)
На стороне API MAX действуют следующие ограничения на использование Long Polling:
- Максимальное количество запросов — 2 RPS (запроса в секунду).
- Таймаут запроса — 30 секунд.
- Максимальный размер батча — 100 событий.
- TTL событий — 24 часа (события старше этого периода удаляются).
Для корректной работы чат-бота рекомендуется перейти на схему с Webhook.
Webhook¶
async def main():
webhook_url = 'https://ваш-домен.рф/webhook' # <-- укажите свой
await bot.subscribe_webhook(url=webhook_url)
await dp.handle_webhook(bot, host='0.0.0.0', port=8080, path='/webhook')
Параметры:
bot— экземпляр ботаhost— хост сервера (по умолчанию'0.0.0.0')port— порт сервера (по умолчанию8080)path— URL-путь для маршрута вебхука (по умолчанию'/')secret— секрет для проверки заголовкаX-Max-Bot-Api-Secret**kwargs— дополнительные параметры для запуска веб-сервера
Плюсы:
- Эффективнее для больших нагрузок
- События приходят мгновенно
- Меньше нагрузка на API
Минусы:
- Требует публичный URL
- Нужна настройка сервера
Требования безопасности (с 25.05.2026)
Для повышения безопасности прекращается поддержка получения вебхуков по HTTP,
а также самоподписных сертификатов. Используйте HTTPS и сертификаты,
выданные доверенным центром сертификации. Подробнее о требованиях
безопасности — в описании POST /subscriptions
(метод subscribe_webhook).
Важно
Если у бота есть подписки на Webhook, start_polling предупредит об этом в логах.
Удалите подписки через await bot.delete_webhook().