from telebot import types from utils.command import * @bot.inline_handler(lambda query: is_admin(query.from_user.id)) def handle_inline_query(query): command = f"python3 {CLI_PATH} list-users" result = run_cli_command(command) try: users = json.loads(result) except json.JSONDecodeError: bot.answer_inline_query(query.id, results=[], switch_pm_text="Error retrieving users.", switch_pm_user_id=query.from_user.id) return query_text = query.query.lower().replace('\\_', '_') results = [] if query_text == "block": for user in users: if user.get('blocked', False): username = user['username'] title = f"{username} (Blocked)" description = f"Traffic Limit: {user.get('max_download_bytes', 0) / (1024 ** 3):.2f} GB, Expiration Days: {user.get('expiration_days', 'N/A')}" message_content = ( f"Name: {username}\n" f"Traffic limit: {user.get('max_download_bytes', 0) / (1024 ** 3):.2f} GB\n" f"Days: {user.get('expiration_days', 'N/A')}\n" f"Account Creation: {user.get('account_creation_date', 'N/A')}\n" f"Blocked: {user.get('blocked', False)}" ) results.append(types.InlineQueryResultArticle( id=username, title=title, description=description, input_message_content=types.InputTextMessageContent(message_text=message_content) )) else: for user in users: username = user['username'] if query_text in username.lower(): title = f"{username}" description = f"Traffic Limit: {user.get('max_download_bytes', 0) / (1024 ** 3):.2f} GB, Expiration Days: {user.get('expiration_days', 'N/A')}" message_content = ( f"Name: {username}\n" f"Traffic limit: {user.get('max_download_bytes', 0) / (1024 ** 3):.2f} GB\n" f"Days: {user.get('expiration_days', 'N/A')}\n" f"Account Creation: {user.get('account_creation_date', 'N/A')}\n" f"Blocked: {user.get('blocked', False)}" ) results.append(types.InlineQueryResultArticle( id=username, title=title, description=description, input_message_content=types.InputTextMessageContent(message_text=message_content) )) bot.answer_inline_query(query.id, results, cache_time=0)