diff --git a/app/handlers/subscription/tariff_purchase.py b/app/handlers/subscription/tariff_purchase.py index 1cc9e8f1..12442825 100644 --- a/app/handlers/subscription/tariff_purchase.py +++ b/app/handlers/subscription/tariff_purchase.py @@ -1057,12 +1057,25 @@ async def handle_custom_confirm( # При покупке тарифа ВСЕГДА сбрасываем трафик в панели try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=True, - reset_reason='покупка тарифа', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=True, + reset_reason='покупка тарифа', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=True, + reset_reason='покупка тарифа', + ) except Exception as e: logger.error('Ошибка обновления Remnawave', error=e) @@ -1568,12 +1581,25 @@ async def confirm_tariff_purchase( # При покупке тарифа ВСЕГДА сбрасываем трафик в панели try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=True, - reset_reason='покупка тарифа', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=True, + reset_reason='покупка тарифа', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=True, + reset_reason='покупка тарифа', + ) except Exception as e: logger.error('Ошибка обновления Remnawave', error=e) @@ -1828,12 +1854,25 @@ async def confirm_daily_tariff_purchase( # При покупке тарифа ВСЕГДА сбрасываем трафик в панели try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=True, - reset_reason='покупка суточного тарифа', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=True, + reset_reason='покупка суточного тарифа', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=True, + reset_reason='покупка суточного тарифа', + ) except Exception as e: logger.error('Ошибка обновления Remnawave', error=e) @@ -2280,12 +2319,25 @@ async def confirm_tariff_extend( # Обновляем пользователя в Remnawave try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=settings.RESET_TRAFFIC_ON_PAYMENT or was_trial, - reset_reason='конвертация триала' if was_trial else 'продление тарифа', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_PAYMENT or was_trial, + reset_reason='конвертация триала' if was_trial else 'продление тарифа', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_PAYMENT or was_trial, + reset_reason='конвертация триала' if was_trial else 'продление тарифа', + ) except Exception as e: logger.error('Ошибка обновления Remnawave', error=e) @@ -2893,12 +2945,25 @@ async def confirm_tariff_switch( # Обновляем пользователя в Remnawave try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, - reset_reason='переключение тарифа', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, + reset_reason='переключение тарифа', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, + reset_reason='переключение тарифа', + ) except Exception as e: logger.error('Ошибка обновления Remnawave при переключении тарифа', error=e) @@ -3121,12 +3186,25 @@ async def confirm_daily_tariff_switch( # Обновляем пользователя в Remnawave (сброс трафика по админ-настройке) try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, - reset_reason='смена на суточный тариф', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, + reset_reason='смена на суточный тариф', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, + reset_reason='смена на суточный тариф', + ) except Exception as e: logger.error('Ошибка обновления Remnawave', error=e) @@ -3795,12 +3873,25 @@ async def confirm_instant_switch( # Обновляем пользователя в Remnawave (сброс трафика по админ-настройке) try: subscription_service = SubscriptionService() - await subscription_service.create_remnawave_user( - db, - subscription, - reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, - reset_reason='мгновенное переключение тарифа', + _panel_uuid = ( + subscription.remnawave_uuid + if settings.is_multi_tariff_enabled() and subscription.remnawave_uuid + else getattr(db_user, 'remnawave_uuid', None) ) + if _panel_uuid: + await subscription_service.update_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, + reset_reason='мгновенное переключение тарифа', + ) + else: + await subscription_service.create_remnawave_user( + db, + subscription, + reset_traffic=settings.RESET_TRAFFIC_ON_TARIFF_SWITCH, + reset_reason='мгновенное переключение тарифа', + ) except Exception as e: logger.error('Ошибка обновления Remnawave при мгновенном переключении', error=e)