diff --git a/app/handlers/subscription.py b/app/handlers/subscription.py
index a306cab0..76708407 100644
--- a/app/handlers/subscription.py
+++ b/app/handlers/subscription.py
@@ -349,6 +349,9 @@ async def handle_add_countries(
db: AsyncSession,
state: FSMContext
):
+ if not await _should_show_countries_management():
+ await callback.answer("ℹ️ Управление серверами недоступно - доступен только один сервер", show_alert=True)
+ return
texts = get_texts(db_user.language)
subscription = db_user.subscription
@@ -366,7 +369,7 @@ async def handle_add_countries(
current_countries_names.append(country['name'])
text = "🌍 Управление странами подписки\n\n"
- text += f"📍 Текущие страны ({len(current_countries)}):\n"
+ text += f"📋 Текущие страны ({len(current_countries)}):\n"
if current_countries_names:
text += "\n".join(f"• {name}" for name in current_countries_names)
else:
@@ -1155,12 +1158,24 @@ async def select_period(
)
await state.set_state(SubscriptionStates.selecting_traffic)
else:
- countries = await _get_available_countries()
- await callback.message.edit_text(
- texts.SELECT_COUNTRIES,
- reply_markup=get_countries_keyboard(countries, [], db_user.language)
- )
- await state.set_state(SubscriptionStates.selecting_countries)
+ if await _should_show_countries_management():
+ countries = await _get_available_countries()
+ await callback.message.edit_text(
+ texts.SELECT_COUNTRIES,
+ reply_markup=get_countries_keyboard(countries, [], db_user.language)
+ )
+ await state.set_state(SubscriptionStates.selecting_countries)
+ else:
+ countries = await _get_available_countries()
+ available_countries = [c for c in countries if c.get('is_available', True)]
+ data['countries'] = [available_countries[0]['uuid']] if available_countries else []
+ await state.set_data(data)
+
+ await callback.message.edit_text(
+ texts.SELECT_DEVICES,
+ reply_markup=get_devices_keyboard(1, db_user.language)
+ )
+ await state.set_state(SubscriptionStates.selecting_devices)
await callback.answer()
@@ -1237,7 +1252,6 @@ async def select_traffic(
state: FSMContext,
db_user: User
):
-
traffic_gb = int(callback.data.split('_')[1])
texts = get_texts(db_user.language)
@@ -1246,14 +1260,25 @@ async def select_traffic(
data['total_price'] += TRAFFIC_PRICES[traffic_gb]
await state.set_data(data)
- countries = await _get_available_countries()
+ if await _should_show_countries_management():
+ countries = await _get_available_countries()
+ await callback.message.edit_text(
+ texts.SELECT_COUNTRIES,
+ reply_markup=get_countries_keyboard(countries, [], db_user.language)
+ )
+ await state.set_state(SubscriptionStates.selecting_countries)
+ else:
+ countries = await _get_available_countries()
+ available_countries = [c for c in countries if c.get('is_available', True)]
+ data['countries'] = [available_countries[0]['uuid']] if available_countries else []
+ await state.set_data(data)
+
+ await callback.message.edit_text(
+ texts.SELECT_DEVICES,
+ reply_markup=get_devices_keyboard(1, db_user.language)
+ )
+ await state.set_state(SubscriptionStates.selecting_devices)
- await callback.message.edit_text(
- texts.SELECT_COUNTRIES,
- reply_markup=get_countries_keyboard(countries, [], db_user.language)
- )
-
- await state.set_state(SubscriptionStates.selecting_countries)
await callback.answer()
@@ -1667,9 +1692,11 @@ async def handle_subscription_settings(
Выберите что хотите изменить:
"""
+ show_countries = await _should_show_countries_management()
+
await callback.message.edit_text(
settings_text,
- reply_markup=get_subscription_settings_keyboard(db_user.language),
+ reply_markup=get_subscription_settings_keyboard(db_user.language, show_countries),
parse_mode="HTML"
)
await callback.answer()
@@ -1989,6 +2016,15 @@ async def handle_add_country_to_subscription(
await callback.answer()
+async def _should_show_countries_management() -> bool:
+ try:
+ countries = await _get_available_countries()
+ available_countries = [c for c in countries if c.get('is_available', True)]
+ return len(available_countries) > 1
+ except Exception as e:
+ logger.error(f"Ошибка проверки доступных серверов: {e}")
+ return True
+
async def confirm_add_countries_to_subscription(
callback: types.CallbackQuery,