diff --git a/aiogram/dispatcher/middlewares.py b/aiogram/dispatcher/middlewares.py index d86f5453..85c7ef2d 100644 --- a/aiogram/dispatcher/middlewares.py +++ b/aiogram/dispatcher/middlewares.py @@ -5,7 +5,16 @@ log = logging.getLogger('aiogram.Middleware') class MiddlewareManager: + """ + Middlewares manager. Works only with dispatcher. + """ + def __init__(self, dispatcher): + """ + Init + + :param dispatcher: instance of Dispatcher + """ self.dispatcher = dispatcher self.loop = dispatcher.loop self.bot = dispatcher.bot @@ -40,24 +49,51 @@ class MiddlewareManager: class BaseMiddleware: + """ + Base class for middleware. + + All methods on the middle always must be coroutines and name starts with "on_" like "on_process_message". + """ + def __init__(self): self._configured = False self._manager = None @property def manager(self) -> MiddlewareManager: + """ + Instance of MiddlewareManager + """ if self._manager is None: raise RuntimeError('Middleware is not configured!') return self._manager def setup(self, manager): + """ + Mark middleware as configured + + :param manager: + :return: + """ self._manager = manager self._configured = True - def is_configured(self): + def is_configured(self) -> bool: + """ + Check middleware is configured + + :return: + """ return self._configured async def trigger(self, action, args): + """ + Trigger action. + + :param action: + :param args: + :return: + """ handler_name = f"on_{action}" handler = getattr(self, handler_name, None) if not handler: