mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-03-01 07:42:30 +00:00
@@ -3778,12 +3778,25 @@ async def switch_tariff(
|
||||
except Exception as e:
|
||||
logger.error(f'Failed to sync tariff switch with RemnaWave: {e}')
|
||||
|
||||
# Reset all devices on tariff switch
|
||||
devices_reset = False
|
||||
if user.remnawave_uuid:
|
||||
try:
|
||||
service = RemnaWaveService()
|
||||
async with service.get_api_client() as api:
|
||||
await api.reset_user_devices(user.remnawave_uuid)
|
||||
devices_reset = True
|
||||
logger.info(f'Reset all devices for user {user.id} on tariff switch')
|
||||
except Exception as e:
|
||||
logger.error(f'Failed to reset devices on tariff switch: {e}')
|
||||
|
||||
await db.refresh(user)
|
||||
await db.refresh(user.subscription)
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
'message': f"Switched from '{old_tariff_name}' to '{new_tariff.name}'",
|
||||
'message': f"Switched from '{old_tariff_name}' to '{new_tariff.name}'"
|
||||
+ (' (devices reset)' if devices_reset else ''),
|
||||
'subscription': _subscription_to_response(user.subscription),
|
||||
'old_tariff_name': old_tariff_name,
|
||||
'new_tariff_id': new_tariff.id,
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user