From 87095772febb4584bec443d05c294331e2ab3166 Mon Sep 17 00:00:00 2001 From: Vlad Date: Thu, 3 Oct 2024 06:42:40 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D1=81=D0=B5=D1=80=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=BE=D0=B2=20=D0=B2=20=D0=BF=D1=80=D0=BE=D1=86?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/key_management.py | 19 +++++++++++++------ handlers/keys.py | 18 +++++++++++++----- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/handlers/key_management.py b/handlers/key_management.py index 762820f8..3ce76967 100644 --- a/handlers/key_management.py +++ b/handlers/key_management.py @@ -36,12 +36,19 @@ class Form(StatesGroup): async def process_callback_create_key(callback_query: CallbackQuery, state: FSMContext): tg_id = callback_query.from_user.id - # Запрос выбора сервера - server_buttons = [ - [InlineKeyboardButton(text=server['name'], callback_data=f'select_server|{server_id}')] - for server_id, server in SERVERS.items() - ] - + # Получаем количество подключений для каждого сервера + server_buttons = [] + conn = await asyncpg.connect(DATABASE_URL) + try: + for server_id, server in SERVERS.items(): + # Получаем количество ключей на сервере + count = await conn.fetchval('SELECT COUNT(*) FROM keys WHERE server_id = $1', server_id) + percent_full = (count / 100) * 100 # Заполнение в процентах + server_name = f"{server['name']} ({percent_full:.1f}%)" + server_buttons.append([InlineKeyboardButton(text=server_name, callback_data=f'select_server|{server_id}')]) + finally: + await conn.close() + await callback_query.message.edit_text( "⚙️ Выберите сервер для создания ключа:", parse_mode="HTML", diff --git a/handlers/keys.py b/handlers/keys.py index ffda9c80..1b884998 100644 --- a/handlers/keys.py +++ b/handlers/keys.py @@ -300,11 +300,19 @@ async def process_callback_change_location(callback_query: types.CallbackQuery): tg_id = callback_query.from_user.id client_id = callback_query.data.split('|')[1] # Используем разделитель вертикальная черта - # Запрос выбора сервера - server_buttons = [ - [types.InlineKeyboardButton(text=server['name'], callback_data=f'select_server&{server_id}&{client_id}')] - for server_id, server in SERVERS.items() - ] + # Получаем количество подключений для каждого сервера + server_buttons = [] + conn = await asyncpg.connect(DATABASE_URL) + try: + for server_id, server in SERVERS.items(): + # Получаем количество ключей на сервере + count = await conn.fetchval('SELECT COUNT(*) FROM keys WHERE server_id = $1', server_id) + percent_full = (count / 100) * 100 # Заполнение в процентах + server_name = f"{server['name']} ({percent_full:.1f}%)" + server_buttons.append([types.InlineKeyboardButton(text=server_name, callback_data=f'select_server&{server_id}&{client_id}')]) + finally: + await conn.close() + keyboard = types.InlineKeyboardMarkup(inline_keyboard=server_buttons) response_message = "Выберите новый сервер для вашего ключа:"