fix country mode and traffic limit

This commit is contained in:
Vladless
2026-03-02 13:48:23 +03:00
parent 6882a4adfe
commit 33a6da852e
2 changed files with 22 additions and 19 deletions
+18 -2
View File
@@ -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"<b>⚙️ Конфигурация ключа</b>\n\n"
f"🔑 <b>Ключ:</b> <code>{email}</code>\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"📱 <b>Устройства:</b> {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"📊 <b>Трафик:</b> {base_traffic} ГБ{extra_traf_str}\n"
text += f"📊 <b>Трафик:</b> {traffic_to_show} ГБ{extra_traf_str}\n"
else:
text += "📊 <b>Трафик:</b> безлимит\n"
+4 -17
View File
@@ -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