From afc913a2ffebc1363716ff9e8fbd2b282d7aa3c8 Mon Sep 17 00:00:00 2001 From: hteppl Date: Sat, 4 Jan 2025 15:30:34 +0300 Subject: [PATCH 1/2] fix: check trial key already used --- handlers/keys/trial_key.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/handlers/keys/trial_key.py b/handlers/keys/trial_key.py index 84deef9e..d8951c57 100644 --- a/handlers/keys/trial_key.py +++ b/handlers/keys/trial_key.py @@ -3,16 +3,30 @@ import uuid from datetime import datetime, timedelta from typing import Any +from config import ADMIN_PASSWORD, ADMIN_USERNAME, PUBLIC_LINK, TOTAL_GB, TRIAL_TIME +from handlers.texts import INSTRUCTIONS from py3xui import AsyncApi from client import add_client -from config import ADMIN_PASSWORD, ADMIN_USERNAME, PUBLIC_LINK, TOTAL_GB, TRIAL_TIME from database import get_servers_from_db, store_key, use_trial -from handlers.texts import INSTRUCTIONS from handlers.utils import generate_random_email, get_least_loaded_cluster +from logger import logger async def create_trial_key(tg_id: int, session: Any): + try: + # Проверка статуса триала + trial_status = await session.fetchval( + 'SELECT trial FROM connections WHERE tg_id = $1', + tg_id + ) + + if trial_status == 1: + return {'error': 'Вы уже использовали пробную версию.'} + + except Exception as e: + logger.error(f"Ошибка при при проверке триала: {e}") + client_id = str(uuid.uuid4()) email = generate_random_email() public_link = f"{PUBLIC_LINK}{email}/{tg_id}" @@ -23,14 +37,12 @@ async def create_trial_key(tg_id: int, session: Any): expiry_timestamp = int(expiry_time.timestamp() * 1000) clusters = await get_servers_from_db() - least_loaded_cluster = await get_least_loaded_cluster() if least_loaded_cluster not in clusters: raise ValueError(f"Кластер {least_loaded_cluster} не найден в базе данных.") servers_in_cluster = clusters[least_loaded_cluster] - tasks = [] for server_info in servers_in_cluster: @@ -64,5 +76,7 @@ async def create_trial_key(tg_id: int, session: Any): server_id=least_loaded_cluster, session=session, ) + await use_trial(tg_id, session) + return result From 50811afa30dcf45afb9b0061ad501e2fe8e75d72 Mon Sep 17 00:00:00 2001 From: hteppl Date: Sat, 4 Jan 2025 20:34:49 +0300 Subject: [PATCH 2/2] fix: typo in error message --- handlers/keys/trial_key.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/handlers/keys/trial_key.py b/handlers/keys/trial_key.py index d8951c57..d5b622b5 100644 --- a/handlers/keys/trial_key.py +++ b/handlers/keys/trial_key.py @@ -17,15 +17,15 @@ async def create_trial_key(tg_id: int, session: Any): try: # Проверка статуса триала trial_status = await session.fetchval( - 'SELECT trial FROM connections WHERE tg_id = $1', + "SELECT trial FROM connections WHERE tg_id = $1", tg_id ) if trial_status == 1: - return {'error': 'Вы уже использовали пробную версию.'} + return {"error": "Вы уже использовали пробную версию."} except Exception as e: - logger.error(f"Ошибка при при проверке триала: {e}") + logger.error(f"Ошибка при проверке триала: {e}") client_id = str(uuid.uuid4()) email = generate_random_email()