From c07fffd809f202b2e1a3499abfdb948778c2f7c2 Mon Sep 17 00:00:00 2001 From: Egor Date: Sun, 1 Feb 2026 18:10:59 +0300 Subject: [PATCH] Update tariff_purchase.py --- app/handlers/subscription/tariff_purchase.py | 41 +++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/app/handlers/subscription/tariff_purchase.py b/app/handlers/subscription/tariff_purchase.py index 8b5e72c6..0e7f0afe 100644 --- a/app/handlers/subscription/tariff_purchase.py +++ b/app/handlers/subscription/tariff_purchase.py @@ -2242,6 +2242,19 @@ async def confirm_tariff_switch( except Exception as e: logger.error(f'Ошибка обновления Remnawave при переключении тарифа: {e}') + # Гарантированный сброс устройств при смене тарифа + await db.refresh(db_user) + if db_user.remnawave_uuid: + try: + from app.services.remnawave_service import RemnaWaveService + + service = RemnaWaveService() + async with service.get_api_client() as api: + await api.reset_user_devices(db_user.remnawave_uuid) + logger.info(f'🔧 Сброшены устройства при смене тарифа для user_id={db_user.id}') + except Exception as e: + logger.error(f'Ошибка сброса устройств при смене тарифа: {e}') + # Создаем транзакцию await create_transaction( db, @@ -2395,7 +2408,7 @@ async def confirm_daily_tariff_switch( await db.commit() await db.refresh(subscription) - # Обновляем пользователя в Remnawave + # Обновляем пользователя в Remnawave (create_remnawave_user также сбрасывает устройства) try: subscription_service = SubscriptionService() await subscription_service.create_remnawave_user( @@ -2407,6 +2420,19 @@ async def confirm_daily_tariff_switch( except Exception as e: logger.error(f'Ошибка обновления Remnawave: {e}') + # Гарантированный сброс устройств при смене тарифа + await db.refresh(db_user) + if db_user.remnawave_uuid: + try: + from app.services.remnawave_service import RemnaWaveService + + service = RemnaWaveService() + async with service.get_api_client() as api: + await api.reset_user_devices(db_user.remnawave_uuid) + logger.info(f'🔧 Сброшены устройства при смене на суточный тариф для user_id={db_user.id}') + except Exception as e: + logger.error(f'Ошибка сброса устройств при смене тарифа: {e}') + # Создаем транзакцию await create_transaction( db, @@ -2972,6 +2998,19 @@ async def confirm_instant_switch( except Exception as e: logger.error(f'Ошибка обновления Remnawave при мгновенном переключении: {e}') + # Гарантированный сброс устройств при смене тарифа + await db.refresh(db_user) + if db_user.remnawave_uuid: + try: + from app.services.remnawave_service import RemnaWaveService + + service = RemnaWaveService() + async with service.get_api_client() as api: + await api.reset_user_devices(db_user.remnawave_uuid) + logger.info(f'🔧 Сброшены устройства при мгновенном переключении тарифа для user_id={db_user.id}') + except Exception as e: + logger.error(f'Ошибка сброса устройств при переключении тарифа: {e}') + # Создаем транзакцию если была оплата if is_upgrade and upgrade_cost > 0: await create_transaction(