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