diff --git a/apps/telegram-bot/commands.py b/apps/telegram-bot/commands.py index 6faa2cb..eed7b09 100644 --- a/apps/telegram-bot/commands.py +++ b/apps/telegram-bot/commands.py @@ -771,16 +771,15 @@ async def cmd_recover(update: Update, ctx: ContextTypes.DEFAULT_TYPE) -> None: await update.message.reply_text("\n".join(response_lines)) -def _find_user_id_by_username(room_id: int, username: str) -> int | None: - """Find user_id by username from bounty creators in the room.""" - bounties = BOUNTY_SERVICE.list_bounties(room_id) - for bounty in bounties: - if ( - bounty.created_by_username - and bounty.created_by_username.lower() == username.lower() - ): - return bounty.created_by_user_id - return None +async def _find_user_id_by_username( + ctx: ContextTypes.DEFAULT_TYPE, username: str +) -> int | None: + """Find user_id by username using Telegram API.""" + try: + chat = await ctx.bot.get_chat(f"@{username}") + return chat.id + except Exception: + return None def _find_username_by_user_id(room_id: int, user_id: int) -> str | None: @@ -845,7 +844,7 @@ async def cmd_admin(update: Update, ctx: ContextTypes.DEFAULT_TYPE) -> None: await update.message.reply_text("⛔ Only admins can perform this action.") return - target_user_id = _find_user_id_by_username(room_id, username) + target_user_id = await _find_user_id_by_username(ctx, username) if target_user_id is None: await update.message.reply_text(f"⛔ User @{username} not found.")