from aiogram.dispatcher.middlewares.base import BaseMiddleware from aiogram.types import TelegramObject import time class AntiSpamMiddleware(BaseMiddleware): def __init__(self, rate_limit=1): super().__init__() self.rate_limit = rate_limit self.users = {} async def __call__(self, handler, event: TelegramObject, data: dict): user_id = None # Определяем user_id для события if hasattr(event, "from_user") and event.from_user: user_id = event.from_user.id if user_id: now = time.time() last_time = self.users.get(user_id) if last_time and now - last_time < self.rate_limit: # Если сообщение отправлено слишком быстро, игнорируем return self.users[user_id] = now # Если прошло достаточно времени, продолжаем обработку return await handler(event, data)