Files
Blitz-Proxy/core/scripts/telegrambot/utils/search.py
2025-09-08 23:39:26 +03:30

56 lines
2.7 KiB
Python

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)