diff --git a/app/cabinet/routes/subscription.py b/app/cabinet/routes/subscription.py index fd3d39f9..407ffbea 100644 --- a/app/cabinet/routes/subscription.py +++ b/app/cabinet/routes/subscription.py @@ -3216,7 +3216,10 @@ async def update_countries( added_server_ids = await get_server_ids_by_uuids(db, added) if added_server_ids: await add_subscription_servers(db, user.subscription, added_server_ids, added_server_prices) - await add_user_to_servers(db, added_server_ids) + try: + await add_user_to_servers(db, added_server_ids) + except Exception as e: + logger.error(f'Ошибка обновления счётчика серверов: {e}') # Update connected squads user.subscription.connected_squads = selected_countries diff --git a/app/database/crud/subscription.py b/app/database/crud/subscription.py index b76b2cf5..e619d1e9 100644 --- a/app/database/crud/subscription.py +++ b/app/database/crud/subscription.py @@ -357,8 +357,9 @@ async def extend_subscription( ) # Определяем, происходит ли СМЕНА тарифа (а не продление того же) + # Включает переход из классического режима (tariff_id=None) в тарифный is_tariff_change = ( - tariff_id is not None and subscription.tariff_id is not None and tariff_id != subscription.tariff_id + tariff_id is not None and (subscription.tariff_id is None or tariff_id != subscription.tariff_id) ) if is_tariff_change: diff --git a/app/webapi/routes/miniapp.py b/app/webapi/routes/miniapp.py index d1e3f0e5..e4b10fbc 100644 --- a/app/webapi/routes/miniapp.py +++ b/app/webapi/routes/miniapp.py @@ -5926,7 +5926,10 @@ async def update_subscription_servers_endpoint( if added_server_ids: await add_subscription_servers(db, subscription, added_server_ids, added_server_prices) - await add_user_to_servers(db, added_server_ids) + try: + await add_user_to_servers(db, added_server_ids) + except Exception as e: + logger.error(f'Ошибка обновления счётчика серверов (add): {e}') removed_server_ids = [ catalog[uuid].get('server_id') for uuid in removed if catalog[uuid].get('server_id') is not None @@ -5934,7 +5937,10 @@ async def update_subscription_servers_endpoint( if removed_server_ids: await remove_subscription_servers(db, subscription.id, removed_server_ids) - await remove_user_from_servers(db, removed_server_ids) + try: + await remove_user_from_servers(db, removed_server_ids) + except Exception as e: + logger.error(f'Ошибка обновления счётчика серверов (remove): {e}') ordered_selection = [] seen_selection = set()