Добавлен Middleware

This commit is contained in:
2025-06-23 09:49:24 +03:00
parent 8aa9c65fcc
commit 512eb9a4af
9 changed files with 253 additions and 49 deletions

View File

@@ -1,4 +1,4 @@
from typing import Callable
from typing import Callable, List
from magic_filter import F, MagicFilter
@@ -45,7 +45,7 @@ class Handler:
self.update_type: UpdateType = update_type
self.filters = []
self.state: State = None
self.middleware: BaseMiddleware = None
self.middlewares: List[BaseMiddleware] = []
for arg in args:
if isinstance(arg, MagicFilter):
@@ -55,7 +55,7 @@ class Handler:
elif isinstance(arg, Command):
self.filters.insert(0, F.message.body.text.startswith(arg.command))
elif isinstance(arg, BaseMiddleware):
self.middleware = arg
self.middlewares.append(arg)
else:
logger_dp.info(f'Обнаружен неизвестный фильтр `{arg}` при '
f'регистрации функции `{func_event.__name__}`')

View File

@@ -1,6 +1,23 @@
from typing import Any, Dict
from ..types.updates import UpdateUnion
class BaseMiddleware:
def __init__(self):
...
...
async def process_middleware(
self,
result_data_kwargs: Dict[str, Any],
event_object: UpdateUnion
):
kwargs_temp = {'data': result_data_kwargs.copy()}
for key in kwargs_temp.copy().keys():
if not key in self.__call__.__annotations__.keys():
del kwargs_temp[key]
result: Dict[str, Any] = await self(event_object, **kwargs_temp)
return result