diff options
| author | Tolmachev Igor <me@igorek.dev> | 2026-04-20 20:56:35 +0300 |
|---|---|---|
| committer | Tolmachev Igor <me@igorek.dev> | 2026-04-20 20:56:35 +0300 |
| commit | 75e99ca0712a2c09230e5c6f8d093dc526cc717d (patch) | |
| tree | f3f00494364a82b866f093651cb9a08030135c4e /handlers/middleware.py | |
| parent | f186fca0f1aa9bbe5eab7613f229df527b2ab774 (diff) | |
| download | vpn_manager_bot-75e99ca0712a2c09230e5c6f8d093dc526cc717d.tar.gz vpn_manager_bot-75e99ca0712a2c09230e5c6f8d093dc526cc717d.zip | |
Add users command
Diffstat (limited to 'handlers/middleware.py')
| -rw-r--r-- | handlers/middleware.py | 24 |
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 | |||
| 5 | from sqlalchemy.ext.asyncio import AsyncSession | 5 | from sqlalchemy.ext.asyncio import AsyncSession |
| 6 | 6 | ||
| 7 | from database import sessions | 7 | from database import sessions |
| 8 | from libs.user import set_user_cache | ||
| 8 | from models import User | 9 | from models import User |
| 10 | from models.user import UserCache | ||
| 9 | 11 | ||
| 10 | 12 | ||
| 11 | class InjectSessionMiddleware(BaseMiddleware): | 13 | class 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 | |||
| 61 | class 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) | ||
