Module management/ TRIBUTE webapp/ small gift fix/ backup selection in CLI
This commit is contained in:
+22
-8
@@ -7,6 +7,11 @@ from aiogram import Router
|
||||
|
||||
from logger import logger
|
||||
|
||||
from .modules_manager import manager
|
||||
|
||||
|
||||
modules_hub = Router(name="modules_hub")
|
||||
|
||||
|
||||
def load_modules_from_folder(folder: str = "modules") -> list[Router]:
|
||||
routers = []
|
||||
@@ -17,11 +22,18 @@ def load_modules_from_folder(folder: str = "modules") -> list[Router]:
|
||||
return []
|
||||
|
||||
for _finder, name, _ispkg in pkgutil.iter_modules([str(base_path)]):
|
||||
if not manager.should_autostart(name):
|
||||
logger.info(f"[Modules] Пропуск автозапуска модуля '{name}' (отключён).")
|
||||
continue
|
||||
|
||||
module_path = f"{folder}.{name}.router"
|
||||
try:
|
||||
mod = importlib.import_module(module_path)
|
||||
if hasattr(mod, "router") and isinstance(mod.router, Router):
|
||||
routers.append(mod.router)
|
||||
router = getattr(mod, "router", None)
|
||||
if isinstance(router, Router):
|
||||
modules_hub.include_router(router)
|
||||
manager.adopt(name, router)
|
||||
routers.append(router)
|
||||
logger.info(f"[Modules] Загружен модуль: {module_path}")
|
||||
else:
|
||||
logger.warning(f"[Modules] В модуле {module_path} не найден router")
|
||||
@@ -33,12 +45,15 @@ def load_modules_from_folder(folder: str = "modules") -> list[Router]:
|
||||
def load_module_webhooks(folder: str = "modules") -> list[dict]:
|
||||
webhooks = []
|
||||
base_path = Path(folder)
|
||||
|
||||
if not base_path.exists():
|
||||
logger.warning(f"[Modules] Папка {folder} не найдена, пропускаем загрузку вебхуков.")
|
||||
return []
|
||||
|
||||
for _finder, name, _ispkg in pkgutil.iter_modules([str(base_path)]):
|
||||
if not manager.should_autostart(name):
|
||||
logger.info(f"[Modules] Пропуск вебхуков модуля '{name}' (отключён).")
|
||||
continue
|
||||
|
||||
module_path = f"{folder}.{name}"
|
||||
try:
|
||||
router_module = importlib.import_module(f"{module_path}.router")
|
||||
@@ -47,22 +62,23 @@ def load_module_webhooks(folder: str = "modules") -> list[dict]:
|
||||
if isinstance(webhook_data, dict) and "path" in webhook_data and "handler" in webhook_data:
|
||||
webhooks.append(webhook_data)
|
||||
logger.info(f"[Modules] Найден вебхук в модуле {name}: {webhook_data['path']}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"[Modules] Ошибка при загрузке вебхуков из {module_path}: {e}")
|
||||
|
||||
return webhooks
|
||||
|
||||
|
||||
def load_module_fast_flow_handlers(folder: str = "modules") -> dict:
|
||||
handlers = {}
|
||||
base_path = Path(folder)
|
||||
|
||||
if not base_path.exists():
|
||||
logger.warning(f"[Modules] Папка {folder} не найдена, пропускаем загрузку быстрого флоу.")
|
||||
return {}
|
||||
|
||||
for _finder, name, _ispkg in pkgutil.iter_modules([str(base_path)]):
|
||||
if not manager.should_autostart(name):
|
||||
logger.info(f"[Modules] Пропуск fast-flow модуля '{name}' (отключён).")
|
||||
continue
|
||||
|
||||
module_path = f"{folder}.{name}"
|
||||
try:
|
||||
router_module = importlib.import_module(f"{module_path}.router")
|
||||
@@ -80,8 +96,6 @@ def load_module_fast_flow_handlers(folder: str = "modules") -> dict:
|
||||
logger.info(f"[Modules] Найден обработчик быстрого флоу в модуле {name}: {payment_key}")
|
||||
elif fast_flow_data is None:
|
||||
logger.info(f"[Modules] Быстрое флоу отключено в модуле {name}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"[Modules] Ошибка при загрузке быстрого флоу из {module_path}: {e}")
|
||||
|
||||
return handlers
|
||||
|
||||
Reference in New Issue
Block a user