fix country mode and traffic limit
This commit is contained in:
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user