from pyrogram import filters from pyrogram.types import Message, InlineKeyboardMarkup, InlineKeyboardButton from DragMusic import app @app.on_message(filters.command("id") & filters.group) async def id_handler(client, message: Message): group_id = message.chat.id user = None show_group_id = False # Case 1: If replying to a message with a user if message.reply_to_message and message.reply_to_message.from_user: user = message.reply_to_message.from_user # Case 2: If user is mentioned with @username elif len(message.command) > 1: username = message.command[1].replace("@", "") try: user = await client.get_users(username) except Exception: return await message.reply_text("Invalid username or user not found.") # Case 3: If no reply or mention, show command sender + group ID else: user = message.from_user show_group_id = True user_id = user.id name = user.first_name or "Unknown" if show_group_id: text = ( f"User: {name}\n" f"User ID: {user_id}\n" f"Group ID: {group_id}" ) buttons = [ [ InlineKeyboardButton("User ID", copy_text=str(user_id)), InlineKeyboardButton("Group ID", copy_text=str(group_id)), ] ] else: text = f"User: {name}\nUser ID: {user_id}" buttons = [ [InlineKeyboardButton("User ID", copy_text=str(user_id))] ] await message.reply( text, reply_markup=InlineKeyboardMarkup(buttons) )