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"))