"""Shared handler helpers (e.g. async admin check).""" import asyncio import duty_teller.config as config from duty_teller.db.repository import is_admin_for_telegram_user from duty_teller.db.session import session_scope async def is_admin_async(telegram_user_id: int) -> bool: """Check if Telegram user is admin (username or phone). Runs DB check in executor. Args: telegram_user_id: Telegram user id. Returns: True if user is in ADMIN_USERNAMES or their stored phone is in ADMIN_PHONES. """ def _check() -> bool: with session_scope(config.DATABASE_URL) as session: return is_admin_for_telegram_user(session, telegram_user_id) return await asyncio.get_running_loop().run_in_executor(None, _check)