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 /libs/user.py | |
| parent | f186fca0f1aa9bbe5eab7613f229df527b2ab774 (diff) | |
| download | vpn_manager_bot-75e99ca0712a2c09230e5c6f8d093dc526cc717d.tar.gz vpn_manager_bot-75e99ca0712a2c09230e5c6f8d093dc526cc717d.zip | |
Add users command
Diffstat (limited to 'libs/user.py')
| -rw-r--r-- | libs/user.py | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/libs/user.py b/libs/user.py index b201ce9..d145da6 100644 --- a/libs/user.py +++ b/libs/user.py | |||
| @@ -1,5 +1,29 @@ | |||
| 1 | from aiogram.types import Chat, User | 1 | from aiogram import Bot |
| 2 | 2 | ||
| 3 | from models import UserCache | ||
| 4 | from shared import redis_users | ||
| 3 | 5 | ||
| 4 | def mention(user: User | Chat) -> str: | 6 | |
| 5 | return f'<a href="tg://user?id={user.id}">{user.full_name}</a>' | 7 | async def set_user_cache(user_cache: UserCache) -> None: |
| 8 | await redis_users.set( | ||
| 9 | str(user_cache.id), | ||
| 10 | user_cache.model_dump_json( | ||
| 11 | exclude_defaults=True, | ||
| 12 | exclude_none=True, | ||
| 13 | ), | ||
| 14 | ) | ||
| 15 | |||
| 16 | |||
| 17 | async def get_user_cache(user_id: int) -> UserCache | None: | ||
| 18 | user_cache = await redis_users.get(str(user_id)) | ||
| 19 | if user_cache is None: | ||
| 20 | return None | ||
| 21 | return UserCache.model_validate_json(user_cache) | ||
| 22 | |||
| 23 | |||
| 24 | async def load_user_cache(bot: Bot, user_id: int) -> UserCache: | ||
| 25 | user_cache = await get_user_cache(user_id) | ||
| 26 | if user_cache is None: | ||
| 27 | user_cache = UserCache.from_chat(await bot.get_chat(user_id)) | ||
| 28 | await set_user_cache(user_cache) | ||
| 29 | return user_cache | ||
