Флуд (от англ. flood — «потоп») — это лавина однотипных или бессмысленных сообщений, которая: В этой статье покажу, как создать легковесную систему защиты от флуда всего в 50 строк кода. AntiFloodMiddleware — это «прослойка» между пользователем и ботом, которая:
✔ Считает сообщения от каждого юзера
✔ Блокирует спамеров автоматически
✔ Отправляет предупреждения
✔ Гибко настраивается под любые задачи Пример настройки: # Разрешаем не более 3 сообщений в 5 секунд
middleware = AntiFloodMiddleware(limit=3, interval=5.0) Храним данные о сообщениях в словаре: self.user_messages = defaultdict(list) # {user_id: [timestamp1, timestamp2...]} Пропускаем не-сообщения (например, колбэки): if not event.message or not hasattr(event.message, 'from_user'):
return await handler(event, data) Удаляем устаревшие сообщения и проверяем лимит: # Оставляем только свежие сообщения (за последние N секунд)
self.user_messages[user_id] = [t for t in self.user_messages[user_id]
if ti