from aiogram import Dispatcher from configs import ImportantID from .logging_mdw import LoggingMiddleware from .msg_mdw import MessageCounterMiddleware from .spam_mdw import RateLimitMiddleware from .subscription_mdw import SubscriptionMiddleware from .error_mdw import ErrorHandlingMiddleware from .time_mdw import TimingMiddleware __all__ = [ LoggingMiddleware, SubscriptionMiddleware, RateLimitMiddleware, ErrorHandlingMiddleware, TimingMiddleware, MessageCounterMiddleware, ] def setup_middlewares(dp: Dispatcher, bot, channel_ids: list[int | str] = None) -> None: """ Регистрирует все middleware в диспетчере. """ channel_ids = channel_ids or [] # Middleware для ВСЕХ событий (update level) middlewares_updates: list = [ TimingMiddleware(), # Замер времени LoggingMiddleware(), # Логирование ErrorHandlingMiddleware(admin_ids=ImportantID.ADMIN_ID), # Обработка ошибок ] # Middleware только для СООБЩЕНИЙ (message level) middlewares_msg: list = [ #RateLimitMiddleware(rate_limit=3, time_period=5.0), # Антифлуд #SubscriptionMiddleware(bot=bot, channel_ids=channel_ids), # Проверка подписки MessageCounterMiddleware(), # Подсчет сообщений ] # Регистрируем middleware для всех событий for middleware in middlewares_updates: dp.update.middleware(middleware) # Регистрируем middleware только для сообщений for middleware in middlewares_msg: dp.message.middleware(middleware)