Как защитить Telegram-бота от спама: пишем антифлуд-систему на Python

Антифлуд-мидлварь для Telegram бота: защита от спама
Антифлуд-мидлварь для 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 причин внедрить эту систему

  1. Защита от ботов — никаких авто-кликеров.
  2. Экономия ресурсов — снижение нагрузки на сервер.
  3. Гибкие правила — можно настроить под любой сценарий.
  4. Прозрачность — все события логируются.
  5. Простота — интеграция за 10 минут.

Где применять?

  • Чат-боты с ограниченными ресурсами
  • Публичные боты в крупных чатах
  • Сервисы с платными запросами

🔗 Готовое решение: GitHub-репозиторий с кодом

Почему это лучше других решений?

  • Не требует БД — работает на оперативной памяти.
  • Не мешает юзерам — мягкие предупреждения вместо бана.
  • Открытый код — можно адаптировать под любой фреймворк.

Хотите бота с защитой от флуда «под ключ»?

Команда ELSE разрабатывает Telegram-ботов с интегрированной антиспам-системой:

  • ✔ Готовые решения за 3-5 дней
  • ✔ Настройка лимитов под ваши задачи
  • ✔ Поддержка и масштабирование
1
1 комментарий