import re from db import User, Video # noqa: F401 from db.models.user import UserSettings from fast_depends import Depends, inject # noqa: F401 from pyrogram.types import CallbackQuery, Message from utils.i18n import i18n async def get_user(msg: Message) -> User: user = await User.find_one(User.user_id == msg.from_user.id) if user is None: language = msg.from_user.language_code if language not in i18n.available_locales: language = "en" user = User(user_id=msg.from_user.id, settings=UserSettings(language=language)) await user.insert() if not msg.text: return user if r := re.search(r"^/start referral_(?P\d+)$", msg.text): user_id: int = int(r.group("id")) if user_id != user.user_id: from_user = await User.find_one(User.user_id == user_id) if from_user: user.invited_by = from_user from_user.points += 3 await from_user.save() await user.save() return user async def get_user_query(query: CallbackQuery) -> User: return await User.find_one(User.user_id == query.from_user.id)