From 8d62d0d20a07c97fe99e18219e44b81047d0013f Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 30 Jul 2025 09:25:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D1=8B=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20Middleware?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/middleware_for_router/main.py | 17 +++++----- examples/middleware_in_handlers/main.py | 41 +++++++++++++------------ 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/examples/middleware_for_router/main.py b/examples/middleware_for_router/main.py index 730d18c..ca35901 100644 --- a/examples/middleware_for_router/main.py +++ b/examples/middleware_for_router/main.py @@ -1,7 +1,7 @@ import asyncio import logging -from typing import Any, Dict +from typing import Any, Awaitable, Callable, Dict from maxapi import Bot, Dispatcher from maxapi.types import MessageCreated, Command, UpdateUnion @@ -15,14 +15,15 @@ dp = Dispatcher() class CustomDataForRouterMiddleware(BaseMiddleware): async def __call__( - self, - event: UpdateUnion, - data: Dict[str, Any] - ): + self, + handler: Callable[[Any, Dict[str, Any]], Awaitable[Any]], + event_object: UpdateUnion, + data: Dict[str, Any], + ) -> Any: - data['custom_data'] = f'Это ID того кто вызвал команду: {event.from_user.user_id}' - - return data + data['custom_data'] = f'Это ID того кто вызвал команду: {event_object.from_user.user_id}' + result = await handler(event_object, data) + return result @dp.message_created(Command('custom_data')) diff --git a/examples/middleware_in_handlers/main.py b/examples/middleware_in_handlers/main.py index 3a3c3e2..96c54af 100644 --- a/examples/middleware_in_handlers/main.py +++ b/examples/middleware_in_handlers/main.py @@ -1,12 +1,11 @@ import asyncio import logging -from typing import Any, Dict +from typing import Any, Awaitable, Callable, Dict from maxapi import Bot, Dispatcher from maxapi.filters.middleware import BaseMiddleware from maxapi.types import MessageCreated, Command, UpdateUnion -from maxapi.types.command import Command logging.basicConfig(level=logging.INFO) @@ -16,30 +15,34 @@ dp = Dispatcher() class CheckChatTitleMiddleware(BaseMiddleware): async def __call__( - self, - event: UpdateUnion, - ): + self, + handler: Callable[[Any, Dict[str, Any]], Awaitable[Any]], + event_object: UpdateUnion, + data: Dict[str, Any], + ) -> Any: - return event.chat.title == 'MAXApi' + if event_object.chat.title == 'MAXApi': + return await handler(event_object, data) + + +class CustomDataMiddleware(BaseMiddleware): + async def __call__( + self, + handler: Callable[[Any, Dict[str, Any]], Awaitable[Any]], + event_object: UpdateUnion, + data: Dict[str, Any], + ) -> Any: + + data['custom_data'] = f'Это ID того кто вызвал команду: {event_object.from_user.user_id}' + + await handler(event_object, data) @dp.message_created(Command('start'), CheckChatTitleMiddleware()) async def start(event: MessageCreated): await event.message.answer('Это сообщение было отправлено, так как ваш чат называется "MAXApi"!') - - -class CustomDataMiddleware(BaseMiddleware): - async def __call__( - self, - event: UpdateUnion, - data: Dict[str, Any] - ): - - data['custom_data'] = f'Это ID того кто вызвал команду: {event.from_user.user_id}' - - return data - + @dp.message_created(Command('custom_data'), CustomDataMiddleware()) async def custom_data(event: MessageCreated, custom_data: str): await event.message.answer(custom_data)