Как защитить Telegram-бота от спама: пишем антифлуд-систему на Python
Антифлуд-мидлварь для Telegram бота: защита от спама
Почему флуд — это проблема для Telegram-ботов?
Флуд (от англ. flood — «потоп») — это лавина однотипных или бессмысленных сообщений, которая:
- Затрудняет работу бота — сервер не справляется с нагрузкой.
- Раздражает пользователей — чат превращается в помойку.
- Может привести к бану — Telegram блокирует ботов за подозрительную активность.
В этой статье покажу, как создать легковесную систему защиты от флуда всего в 50 строк кода.
Как работает антифлуд-фильтр?
AntiFloodMiddleware — это «прослойка» между пользователем и ботом, которая:
- ✔ Считает сообщения от каждого юзера
- ✔ Блокирует спамеров автоматически
- ✔ Отправляет предупреждения
- ✔ Гибко настраивается под любые задачи
Пример настройки:
Разрешаем не более 3 сообщений в 5 секунд
middleware = AntiFloodMiddleware(limit=3, interval=5.0)
Разбираем код по шагам
1. Инициализация
Храним данные о сообщениях в словаре:
self.user_messages = defaultdict(list)
# {user_id: [timestamp1, timestamp2...]}
2. Фильтрация событий
Пропускаем не-сообщения (например, колбэки):
if not event.message or not hasattr(event.message, 'from_user'):
return await handler(event, data)
3. Логика ограничений
Удаляем устаревшие сообщения и проверяем лимит:
# Оставляем только свежие сообщения (за последние N секунд)
self.user_messages[user_id] = [t for t in self.user_messages[user_id]
if time.time() - t < self.interval]
# Если лимит превышен — блокируем
if len(self.user_messages[user_id]) > self.limit:
await event.answer("⚠️ Слишком часто! Подождите...")
return None
5 причин внедрить эту систему
- Защита от ботов — никаких авто-кликеров.
- Экономия ресурсов — снижение нагрузки на сервер.
- Гибкие правила — можно настроить под любой сценарий.
- Прозрачность — все события логируются.
- Простота — интеграция за 10 минут.
Где применять?
- Чат-боты с ограниченными ресурсами
- Публичные боты в крупных чатах
- Сервисы с платными запросами
🔗 Готовое решение: GitHub-репозиторий с кодом
Почему это лучше других решений?
- Не требует БД — работает на оперативной памяти.
- Не мешает юзерам — мягкие предупреждения вместо бана.
- Открытый код — можно адаптировать под любой фреймворк.
Хотите бота с защитой от флуда «под ключ»?
Команда ELSE разрабатывает Telegram-ботов с интегрированной антиспам-системой:
- ✔ Готовые решения за 3-5 дней
- ✔ Настройка лимитов под ваши задачи
- ✔ Поддержка и масштабирование
1 комментарий