Fix init_db duplicate / circular import / redundant panel query / InaccessibleMessage

This commit is contained in:
Capybara-z
2026-04-18 01:36:37 +00:00
parent 3b913956e9
commit 6fd335d71c
4 changed files with 4 additions and 35 deletions
+1 -2
View File
@@ -75,14 +75,13 @@ def _run_process_loop_task(task_id: str, runner: LoopRunner) -> None:
async def _run_process_loop_task_async(task_id: str, runner: LoopRunner) -> None:
from config import API_TOKEN
from core.bootstrap import bootstrap
from database import async_session_maker, init_db
from database import async_session_maker
from database.db import reset_async_db_engine
bot = Bot(token=API_TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
logger.info("[PeriodicManager] Process-loop задача {} запущена, PID={}", task_id, os.getpid())
try:
reset_async_db_engine()
await init_db()
await bootstrap()
await runner(bot, async_session_maker)
except Exception as error:
+1 -1
View File
@@ -79,7 +79,7 @@ class SubscriptionMiddleware(BaseMiddleware):
if "original_text" in state_data and "user_data" in state_data:
return
original_text = message.text or message.caption
original_text = getattr(message, "text", None) or getattr(message, "caption", None)
user_data = {
"tg_id": from_user.id,
"username": from_user.username,
+1 -2
View File
@@ -8,8 +8,6 @@ from database import filter_cluster_by_subgroup, get_key_details, get_tariff_by_
from logger import logger
from panels._3xui import get_vless_link_for_client, get_xui_instance
from panels.remnawave_runtime import with_remnawave_api
from servers import extract_host
from .utils import is_plan_vless, split_by_panel
@@ -82,6 +80,7 @@ async def _try_build_3xui_vless(servers: list, email: str) -> str | None:
if not inbound:
return None
port = getattr(inbound, "port", None)
from servers import extract_host
host = extract_host(si.get("subscription_url") or si.get("api_url"))
return await get_vless_link_for_client(
xui=xui,
+1 -30
View File
@@ -7,7 +7,6 @@ from database import get_tariff_by_id
from database.models import Key
from handlers.texts import key_message_success
from logger import logger
from panels.remnawave_runtime import get_remnawave_profile
GB = 1024 * 1024 * 1024
@@ -145,7 +144,7 @@ async def get_key_tariff_display(
selected_device_limit_override: int | None = None,
selected_traffic_gb_override: int | None = None,
) -> tuple[str, str, int, int, bool]:
"""Возвращает отображение тарифа и эффективные лимиты, приоритет — данные панели."""
"""Возвращает отображение тарифа и эффективные лимиты из БД."""
tariff_id = key_record.get("tariff_id")
if not tariff_id:
return "", "", 0, 0, False, None
@@ -178,34 +177,6 @@ async def get_key_tariff_display(
tariff=tariff,
)
server_cluster_id = key_record.get("server_id")
client_id = key_record.get("client_id")
if server_cluster_id and client_id:
try:
profile = await get_remnawave_profile(session, str(server_cluster_id), client_id, fallback_any=True)
if profile:
panel_traffic_limit_bytes = profile.get("traffic_limit_bytes")
panel_device_limit = profile.get("hwid_device_limit")
if panel_traffic_limit_bytes is not None:
try:
traffic_limit_bytes = int(panel_traffic_limit_bytes)
except (TypeError, ValueError):
logger.warning(
f"[KeyTariffDisplay] Invalid trafficLimitBytes from Remnawave for {client_id}: {panel_traffic_limit_bytes}"
)
if panel_device_limit is not None:
try:
device_limit = int(panel_device_limit)
except (TypeError, ValueError):
logger.warning(
f"[KeyTariffDisplay] Invalid hwidDeviceLimit from Remnawave for {client_id}: {panel_device_limit}"
)
except Exception as e:
logger.warning(f"[KeyTariffDisplay] Error while overriding limits from panel: {e}")
traffic_limit_gb = int(traffic_limit_bytes / GB) if traffic_limit_bytes else 0
if tariff: