from datetime import UTC, datetime from pyrogram.types import User from userbot.modules.client import PyroClient from userbot.modules.presence import repository from userbot.modules.raw_json import raw_json from utils.events import notify_bg_event @PyroClient.on_user_status() async def on_user_status(client: PyroClient, user: User) -> None: ctx = client.capture if ctx is None or user.status is None: return at = datetime.now(UTC) status = user.status.name.lower() if ctx.resolve_peer(user.id, is_bot=bool(user.is_bot)).presence: await repository.insert_status( ctx.pool, ctx.account_id, user.id, at, status, user.last_online_date, user.next_offline_date, raw_json(user.raw), ) await notify_bg_event(ctx.pool, "presence", ctx.account_id, chat_id=user.id) await ctx.watches.on_status(user.id, status, at, user.last_online_date) handlers = on_user_status.handlers # ty: ignore[unresolved-attribute]