Fix init_db duplicate / circular import / redundant panel query / InaccessibleMessage
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user