aboutsummaryrefslogtreecommitdiff
path: root/handlers/middleware.py
diff options
context:
space:
mode:
Diffstat (limited to 'handlers/middleware.py')
-rw-r--r--handlers/middleware.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/handlers/middleware.py b/handlers/middleware.py
index 87a117a..376f4a2 100644
--- a/handlers/middleware.py
+++ b/handlers/middleware.py
@@ -5,7 +5,9 @@ from aiogram.types import CallbackQuery, Message, TelegramObject
5from sqlalchemy.ext.asyncio import AsyncSession 5from sqlalchemy.ext.asyncio import AsyncSession
6 6
7from database import sessions 7from database import sessions
8from libs.user import set_user_cache
8from models import User 9from models import User
10from models.user import UserCache
9 11
10 12
11class InjectSessionMiddleware(BaseMiddleware): 13class InjectSessionMiddleware(BaseMiddleware):
@@ -54,3 +56,25 @@ class UserAccessMiddleware(BaseMiddleware):
54 data["user"] = user 56 data["user"] = user
55 57
56 return await handler(event, data) 58 return await handler(event, data)
59
60
61class UserCacheMiddleware(BaseMiddleware):
62 async def __call__(
63 self,
64 handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]],
65 event: TelegramObject,
66 data: dict[str, Any],
67 ) -> Any:
68 if not isinstance(event, (Message, CallbackQuery)):
69 raise TypeError(
70 f"UserAccessMiddleware doesn't support event with type: {type(event).__name__}",
71 event,
72 )
73
74 if isinstance(event, Message):
75 user_cache = UserCache.from_chat(event.chat)
76 else:
77 user_cache = UserCache.from_user(event.from_user)
78
79 await set_user_cache(user_cache)
80 return await handler(event, data)