from aiogram import Bot from models import UserCache from shared import redis_users async def set_user_cache(user_cache: UserCache) -> None: await redis_users.set( str(user_cache.id), user_cache.model_dump_json( exclude_defaults=True, exclude_none=True, ), ) async def get_user_cache(user_id: int) -> UserCache | None: user_cache = await redis_users.get(str(user_id)) if user_cache is None: return None return UserCache.model_validate_json(user_cache) async def load_user_cache(bot: Bot, user_id: int) -> UserCache: user_cache = await get_user_cache(user_id) if user_cache is None: user_cache = UserCache.from_chat(await bot.get_chat(user_id)) await set_user_cache(user_cache) return user_cache