From 94e202c596deaddeaa12873f95dcffd08e466472 Mon Sep 17 00:00:00 2001 From: Egor Date: Wed, 17 Sep 2025 01:43:47 +0300 Subject: [PATCH 1/2] Update subscription.py --- app/handlers/subscription.py | 54 ++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/app/handlers/subscription.py b/app/handlers/subscription.py index cf69b9eb..fb53540d 100644 --- a/app/handlers/subscription.py +++ b/app/handlers/subscription.py @@ -229,23 +229,36 @@ async def get_current_devices_detailed(db_user: User) -> dict: return {"count": 0, "devices": []} async def get_servers_display_names(squad_uuids: List[str]) -> str: - """ - Получает отображаемые названия серверов по их UUID - """ if not squad_uuids: return "Нет серверов" try: - countries = await _get_available_countries() + from app.database.database import AsyncSessionLocal + from app.database.crud.server_squad import get_server_squad_by_uuid server_names = [] - for uuid in squad_uuids: - for country in countries: - if country['uuid'] == uuid: - server_names.append(country['name']) - break + + async with AsyncSessionLocal() as db: + for uuid in squad_uuids: + server = await get_server_squad_by_uuid(db, uuid) + if server: + server_names.append(server.display_name) + logger.debug(f"Найден сервер в БД: {uuid} -> {server.display_name}") + else: + logger.warning(f"Сервер с UUID {uuid} не найден в БД") if not server_names: + countries = await _get_available_countries() + for uuid in squad_uuids: + for country in countries: + if country['uuid'] == uuid: + server_names.append(country['name']) + logger.debug(f"Найден сервер в кэше: {uuid} -> {country['name']}") + break + + if not server_names: + if len(squad_uuids) == 1: + return "🎯 Тестовый сервер" return f"{len(squad_uuids)} стран" if len(server_names) > 6: @@ -257,6 +270,8 @@ async def get_servers_display_names(squad_uuids: List[str]) -> str: except Exception as e: logger.error(f"Ошибка получения названий серверов: {e}") + if len(squad_uuids) == 1: + return "🎯 Тестовый сервер" return f"{len(squad_uuids)} стран" async def get_current_devices_count(db_user: User) -> str: @@ -326,7 +341,6 @@ async def show_trial_offer( db_user: User, db: AsyncSession ): - texts = get_texts(db_user.language) if db_user.subscription or db_user.has_had_paid_subscription: @@ -337,10 +351,27 @@ async def show_trial_offer( await callback.answer() return + trial_server_name = "🎯 Тестовый сервер" + try: + from app.database.crud.server_squad import get_server_squad_by_uuid + + if settings.TRIAL_SQUAD_UUID: + trial_server = await get_server_squad_by_uuid(db, settings.TRIAL_SQUAD_UUID) + if trial_server: + trial_server_name = trial_server.display_name + else: + logger.warning(f"Триальный сервер с UUID {settings.TRIAL_SQUAD_UUID} не найден в БД") + else: + logger.warning("TRIAL_SQUAD_UUID не настроен в конфигурации") + + except Exception as e: + logger.error(f"Ошибка получения триального сервера: {e}") + trial_text = texts.TRIAL_AVAILABLE.format( days=settings.TRIAL_DURATION_DAYS, traffic=settings.TRIAL_TRAFFIC_LIMIT_GB, - devices=settings.TRIAL_DEVICE_LIMIT + devices=settings.TRIAL_DEVICE_LIMIT, + server_name=trial_server_name ) await callback.message.edit_text( @@ -3286,7 +3317,6 @@ async def show_device_connection_help( db_user: User, db: AsyncSession ): - """Показывает справку по повторному подключению устройств""" subscription = db_user.subscription From 4997acd8bcd43914b6f0ce3022ba927a1d0239fc Mon Sep 17 00:00:00 2001 From: Egor Date: Wed, 17 Sep 2025 01:44:17 +0300 Subject: [PATCH 2/2] Update texts.py --- app/localization/texts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/localization/texts.py b/app/localization/texts.py index d43cd3c9..3b3b98a8 100644 --- a/app/localization/texts.py +++ b/app/localization/texts.py @@ -155,7 +155,7 @@ class RussianTexts(Texts): ⏰ Период: {days} дней 📈 Трафик: {traffic} ГБ 📱 Устройства: {devices} шт. -🌍 Сервер: 1 страна +🌍 Сервер: {server_name} Активировать тестовую подписку? """