From ba717bd5e5bc1c1a8d1d30df7e717897a4044b59 Mon Sep 17 00:00:00 2001 From: Zakhar Izmaylov Date: Tue, 19 Nov 2024 08:32:30 +0300 Subject: [PATCH] Fix key and session --- bot.py | 4 ++++ handlers/keys/keys.py | 20 ++++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/bot.py b/bot.py index 310fa61d..d30f8e3a 100644 --- a/bot.py +++ b/bot.py @@ -5,6 +5,7 @@ from config import API_TOKEN, CRYPTO_BOT_ENABLE, FREEKASSA_ENABLE, ROBOKASSA_ENA from middlewares.admin import AdminMiddleware from middlewares.logging import LoggingMiddleware from middlewares.user import UserMiddleware +from middlewares.database import DatabaseMiddleware bot = Bot(token=API_TOKEN) storage = MemoryStorage() @@ -50,3 +51,6 @@ dp.callback_query.middleware(AdminMiddleware()) dp.message.middleware(UserMiddleware()) dp.callback_query.middleware(UserMiddleware()) + +dp.message.middleware(DatabaseMiddleware()) +dp.callback_query.middleware(DatabaseMiddleware()) diff --git a/handlers/keys/keys.py b/handlers/keys/keys.py index 8b2db79b..227637dd 100644 --- a/handlers/keys/keys.py +++ b/handlers/keys/keys.py @@ -408,7 +408,7 @@ async def process_callback_delete_key(callback_query: types.CallbackQuery): @router.callback_query(F.data.startswith("renew_key|")) async def process_callback_renew_key(callback_query: types.CallbackQuery): tg_id = callback_query.from_user.id - client_id = callback_query.data.split("|")[1] + key_name = callback_query.data.split("|")[1] try: try: @@ -421,11 +421,18 @@ async def process_callback_renew_key(callback_query: types.CallbackQuery): conn = await asyncpg.connect(DATABASE_URL) try: record = await conn.fetchrow( - "SELECT email, expiry_time FROM keys WHERE client_id = $1", client_id + """ + SELECT client_id, expiry_time + FROM keys + WHERE email = $1 + """, + key_name, ) if record: + client_id = record["client_id"] expiry_time = record["expiry_time"] + keyboard = types.InlineKeyboardMarkup( inline_keyboard=[ [ @@ -461,6 +468,7 @@ async def process_callback_renew_key(callback_query: types.CallbackQuery): ) balance = await get_balance(tg_id) + response_message = PLAN_SELECTION_MSG.format( balance=balance, expiry_date=datetime.utcfromtimestamp(expiry_time / 1000).strftime( @@ -474,8 +482,8 @@ async def process_callback_renew_key(callback_query: types.CallbackQuery): reply_markup=keyboard, parse_mode="HTML", ) - else: + # Если ключ не найден response_message = "Ключ не найден." await bot.send_message( chat_id=tg_id, text=response_message, parse_mode="HTML" @@ -497,17 +505,17 @@ async def process_callback_renew_key(callback_query: types.CallbackQuery): @router.callback_query(F.data.startswith("confirm_delete|")) async def process_callback_confirm_delete(callback_query: types.CallbackQuery): tg_id = callback_query.from_user.id - client_id = callback_query.data.split("|")[1] + email = callback_query.data.split("|")[1] try: conn = await asyncpg.connect(DATABASE_URL) try: record = await conn.fetchrow( - "SELECT email FROM keys WHERE client_id = $1", client_id + "SELECT client_id FROM keys WHERE email = $1", email ) if record: - email = record["email"] + client_id = record["client_id"] response_message = "Ключ успешно удален." back_button = types.InlineKeyboardButton( text="Назад", callback_data="view_keys"