diff --git a/handlers/admin/users/users_keys.py b/handlers/admin/users/users_keys.py
index 7beece5b..82d5b562 100644
--- a/handlers/admin/users/users_keys.py
+++ b/handlers/admin/users/users_keys.py
@@ -1459,6 +1459,22 @@ async def render_config_menu(callback_query: CallbackQuery, state: FSMContext, s
base_traffic = data.get("cfg_base_traffic")
extra_traffic = data.get("cfg_extra_traffic") or 0
+ traffic_to_show = base_traffic
+ if traffic_to_show is None and email:
+ result = await session.execute(select(Key).where(Key.email == email))
+ key_obj = result.scalar_one_or_none()
+ if key_obj:
+ traffic_to_show = key_obj.selected_traffic_limit or key_obj.current_traffic_limit
+ if traffic_to_show is None and tariff:
+ raw = tariff.get("traffic_limit")
+ if raw is not None:
+ try:
+ val = int(raw)
+ if val > 0:
+ traffic_to_show = val
+ except (TypeError, ValueError):
+ pass
+
text = (
f"⚙️ Конфигурация ключа\n\n"
f"🔑 Ключ: {email}\n"
@@ -1468,9 +1484,9 @@ async def render_config_menu(callback_query: CallbackQuery, state: FSMContext, s
extra_dev_str = f" + {extra_devices} (докуплено)" if extra_devices > 0 else ""
text += f"📱 Устройства: {base_devices}{extra_dev_str}\n"
- if base_traffic:
+ if traffic_to_show:
extra_traf_str = f" + {extra_traffic} ГБ (докуплено)" if extra_traffic > 0 else ""
- text += f"📊 Трафик: {base_traffic} ГБ{extra_traf_str}\n"
+ text += f"📊 Трафик: {traffic_to_show} ГБ{extra_traf_str}\n"
else:
text += "📊 Трафик: безлимит\n"
diff --git a/handlers/keys/key_mode/key_country_mode.py b/handlers/keys/key_mode/key_country_mode.py
index 81d3c839..d7ca6cba 100644
--- a/handlers/keys/key_mode/key_country_mode.py
+++ b/handlers/keys/key_mode/key_country_mode.py
@@ -195,13 +195,6 @@ async def key_country_mode(
bound_servers = [s for s in servers if special in (s.get("special_groups") or [])]
if bound_servers:
servers = bound_servers
- else:
- text = f"❌ Нет доступных серверов для тарифа с группой '{special}'."
- if safe_to_edit:
- await edit_or_send_message(target_message=target_message, text=text, reply_markup=None)
- else:
- await bot.send_message(chat_id=tg_id, text=text)
- return
available_servers: list[str] = []
tasks = [asyncio.create_task(check_server_availability(dict(server), session)) for server in servers]
@@ -371,15 +364,6 @@ async def change_location_callback(callback_query: CallbackQuery, session: Any):
bound_servers = [s for s in available_servers_dict if special in (s.get("special_groups") or [])]
if bound_servers:
available_servers = [s["server_name"] for s in bound_servers]
- else:
- builder = InlineKeyboardBuilder()
- builder.row(InlineKeyboardButton(text=BACK, callback_data=f"view_key|{old_key_name}"))
- await edit_or_send_message(
- target_message=callback_query.message,
- text="❌ Нет доступных стран для смены локации.",
- reply_markup=builder.as_markup(),
- )
- return
if not available_servers:
builder = InlineKeyboardBuilder()
@@ -428,7 +412,10 @@ async def handle_country_selection(callback_query: CallbackQuery, session: Any,
return
old_key_name = data[3] if len(data) > 3 and data[3] else None
- tariff_id = int(data[4]) if len(data) > 4 and data[4] else None
+ try:
+ tariff_id = int(data[4]) if len(data) > 4 and data[4] else None
+ except (ValueError, IndexError):
+ tariff_id = None
tg_id = callback_query.from_user.id