diff --git a/app/chain/__init__.py b/app/chain/__init__.py index 06c9dc61..6e71765e 100644 --- a/app/chain/__init__.py +++ b/app/chain/__init__.py @@ -113,6 +113,9 @@ class ChainBase(metaclass=ABCMeta): except Exception as err: logger.error( f"运行模块 {method} 出错:{module.__class__.__name__} - {str(err)}\n{traceback.format_exc()}") + self.messagehelper.put(title=f"{module.__class__.__name__} 模块执行出错", + message=str(err), + role="system") return result def recognize_media(self, meta: MetaBase = None, diff --git a/app/command.py b/app/command.py index 72986603..3010f7bb 100644 --- a/app/command.py +++ b/app/command.py @@ -14,6 +14,7 @@ from app.core.config import settings from app.core.event import Event as ManagerEvent from app.core.event import eventmanager, EventManager from app.core.plugin import PluginManager +from app.helper.message import MessageHelper from app.helper.thread import ThreadHelper from app.log import logger from app.scheduler import Scheduler @@ -51,6 +52,8 @@ class Command(metaclass=Singleton): self.chain = CommandChian() # 定时服务管理 self.scheduler = Scheduler() + # 消息管理器 + self.messagehelper = MessageHelper() # 线程管理器 self.threader = ThreadHelper() # 内置命令 @@ -213,6 +216,9 @@ class Command(metaclass=Singleton): ) except Exception as e: logger.error(f"事件处理出错:{str(e)} - {traceback.format_exc()}") + self.messagehelper.put(title=f"{event.event_type} 事件处理出错", + message=str(e), + role="system") def __run_command(self, command: Dict[str, any], data_str: str = "", @@ -321,6 +327,9 @@ class Command(metaclass=Singleton): logger.info(f"{command.get('description')} 执行完成") except Exception as err: logger.error(f"执行命令 {cmd} 出错:{str(err)} - {traceback.format_exc()}") + self.messagehelper.put(title=f"执行命令 {cmd} 出错", + message=str(err), + role="system") @staticmethod def send_plugin_event(etype: EventType, data: dict) -> None: diff --git a/app/scheduler.py b/app/scheduler.py index fcf583d6..df9e919f 100644 --- a/app/scheduler.py +++ b/app/scheduler.py @@ -325,6 +325,9 @@ class Scheduler(metaclass=Singleton): job["func"](*args, **kwargs) except Exception as e: logger.error(f"定时任务 {job_id} 执行失败:{str(e)} - {traceback.format_exc()}") + SchedulerChain().messagehelper.put(title=f"定时任务 {job_id} 执行失败", + message=str(e), + role="system") # 运行结束 with self._lock: try: @@ -375,6 +378,9 @@ class Scheduler(metaclass=Singleton): logger.info(f"注册插件{plugin_name}服务:{service['name']} - {service['trigger']}") except Exception as e: logger.error(f"注册插件{plugin_name}服务失败:{str(e)} - {service}") + SchedulerChain().messagehelper.put(title=f"插件 {plugin_name} 服务注册失败", + message=str(e), + role="system") def remove_plugin_job(self, pid: str): """ @@ -396,6 +402,9 @@ class Scheduler(metaclass=Singleton): logger.info(f"移除插件服务({plugin_name}):{service.get('name')}") except Exception as e: logger.error(f"移除插件服务失败:{str(e)} - {job_id}: {service}") + SchedulerChain().messagehelper.put(title=f"插件 {plugin_name} 服务移除失败", + message=str(e), + role="system") def list(self) -> List[schemas.ScheduleInfo]: """