diff --git a/handlers/admin/clusters/clusters_handler.py b/handlers/admin/clusters/clusters_handler.py
index 0132fbbd..504ce1ec 100644
--- a/handlers/admin/clusters/clusters_handler.py
+++ b/handlers/admin/clusters/clusters_handler.py
@@ -274,7 +274,6 @@ async def handle_cluster_availability(
callback_query: types.CallbackQuery, callback_data: AdminClusterCallback, session: Any
):
cluster_name = callback_data.data
-
servers = await get_servers(session)
cluster_servers = servers.get(cluster_name, [])
@@ -286,25 +285,28 @@ async def handle_cluster_availability(
f"🖥️ Проверка доступности серверов для кластера {cluster_name}.\n\n"
"Это может занять до 1 минуты, пожалуйста, подождите..."
)
-
await callback_query.message.edit_text(text=text)
total_online_users = 0
result_text = f"🖥️ Проверка доступности серверов\n\n⚙️ Кластер: {cluster_name}\n\n"
for server in cluster_servers:
- xui = AsyncApi(server["api_url"], username=ADMIN_USERNAME, password=ADMIN_PASSWORD, logger=logger)
-
+ xui = AsyncApi(server["api_url"], username=ADMIN_USERNAME, password=ADMIN_PASSWORD, logger=None)
try:
await xui.login()
- online_users = len(await xui.client.online())
- total_online_users += online_users
- result_text += f"🌍 {server['server_name']} - онлайн: {online_users}\n"
+ online_clients = await xui.client.online()
+ inbound_id = int(server["inbound_id"])
+ online_inbound_users = 0
+ for client_email in online_clients:
+ client = await xui.client.get_by_email(client_email)
+ if client and client.inbound_id == inbound_id:
+ online_inbound_users += 1
+ total_online_users += online_inbound_users
+ result_text += f"🌍 {server['server_name']} - {online_inbound_users} онлайн\n"
except Exception as e:
- result_text += f"❌ {server['server_name']} - ошибка: {e}\n"
+ result_text += f"❌ {server['server_name']} - ошибка: {str(e) if str(e).strip() else 'Сервер недоступен'}\n"
result_text += f"\n👥 Всего пользователей онлайн: {total_online_users}"
-
await callback_query.message.edit_text(text=result_text, reply_markup=build_admin_back_kb("clusters"))