diff --git a/src/parser_bot/api/routes.py b/src/parser_bot/api/routes.py index 474a98a..812efbb 100644 --- a/src/parser_bot/api/routes.py +++ b/src/parser_bot/api/routes.py @@ -23,6 +23,7 @@ router = APIRouter() class AuthStatus(BaseModel): authorized: bool username: str | None = None + display_name: str | None = None phone: str | None = None @@ -73,10 +74,13 @@ async def _require_channel_scope( @router.get("/auth/status", response_model=AuthStatus, dependencies=[Depends(require_admin)]) async def auth_status() -> AuthStatus: - username = await tg.current_username() + authorized = await tg.is_authorized() + username = await tg.current_username() if authorized else None + display_name = await tg.current_display_name() if authorized else None return AuthStatus( - authorized=username is not None, + authorized=authorized, username=username, + display_name=display_name, phone=settings.tg_phone, ) diff --git a/src/parser_bot/telegram/client.py b/src/parser_bot/telegram/client.py index 8de20ab..31b6332 100644 --- a/src/parser_bot/telegram/client.py +++ b/src/parser_bot/telegram/client.py @@ -202,7 +202,19 @@ async def current_username() -> str | None: me = await client.get_me() if me is None: return None - return me.username or str(me.id) + return me.username + + +async def current_display_name() -> str | None: + client = await start_client() + if not await client.is_user_authorized(): + return None + me = await client.get_me() + if me is None: + return None + parts = [getattr(me, "first_name", None), getattr(me, "last_name", None)] + name = " ".join(part for part in parts if part).strip() + return name or me.username or None _pending_phone_code_hash: str | None = None