From b3176fea4084b1326899e4f4944e527073e9936c Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Thu, 28 Aug 2025 19:52:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Devent=E6=9D=83=E9=99=90?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E5=9C=A8=E6=AF=8F=E4=B8=AAcomponent=E9=83=BD?= =?UTF-8?q?=E6=8B=A5=E6=9C=89plugin=5Fname=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/napcat_adapter_plugin/plugin.py | 3 +-- src/plugin_system/base/base_event.py | 22 +++++++++---------- src/plugin_system/base/base_events_handler.py | 1 - src/plugin_system/core/component_registry.py | 7 +++++- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/plugins/napcat_adapter_plugin/plugin.py b/plugins/napcat_adapter_plugin/plugin.py index a5de7f294..c8337e7b9 100644 --- a/plugins/napcat_adapter_plugin/plugin.py +++ b/plugins/napcat_adapter_plugin/plugin.py @@ -52,7 +52,6 @@ class LauchNapcatAdapterHandler(BaseEventHandler): elif post_type is None: await put_response(decoded_raw_message) - async def message_process(self): while True: message = await message_queue.get() @@ -79,7 +78,7 @@ class LauchNapcatAdapterHandler(BaseEventHandler): logger.error(f"启动 WebSocket 连接失败: {e}") raise - async def execute(self, kwargs): + async def execute(self, kwargs): # 执行功能配置迁移(如果需要) logger.info("检查功能配置迁移...") auto_migrate_features() diff --git a/src/plugin_system/base/base_event.py b/src/plugin_system/base/base_event.py index c527752d5..a9ab38911 100644 --- a/src/plugin_system/base/base_event.py +++ b/src/plugin_system/base/base_event.py @@ -119,17 +119,17 @@ class BaseEvent: for i, result in enumerate(results): subscriber = sorted_subscribers[i] handler_name = subscriber.handler_name if hasattr(subscriber, 'handler_name') else subscriber.__class__.__name__ - - if isinstance(result, Exception): - # 处理执行异常 - logger.error(f"事件处理器 {handler_name} 执行失败: {result}") - processed_results.append(HandlerResult(False, True, str(result), handler_name)) - else: - # 正常执行结果 - if not result.handler_name: - # 补充handler_name - result.handler_name = handler_name - processed_results.append(result) + if result: + if isinstance(result, Exception): + # 处理执行异常 + logger.error(f"事件处理器 {handler_name} 执行失败: {result}") + processed_results.append(HandlerResult(False, True, str(result), handler_name)) + else: + # 正常执行结果 + if not result.handler_name: + # 补充handler_name + result.handler_name = handler_name + processed_results.append(result) return HandlerResultsCollection(processed_results) diff --git a/src/plugin_system/base/base_events_handler.py b/src/plugin_system/base/base_events_handler.py index bfc0e5636..1d023ae02 100644 --- a/src/plugin_system/base/base_events_handler.py +++ b/src/plugin_system/base/base_events_handler.py @@ -26,7 +26,6 @@ class BaseEventHandler(ABC): def __init__(self): self.log_prefix = "[EventHandler]" - self.plugin_name = "" """对应插件名""" self.plugin_config: Optional[Dict] = None """插件配置字典""" diff --git a/src/plugin_system/core/component_registry.py b/src/plugin_system/core/component_registry.py index 7e925e3f0..eea3a247e 100644 --- a/src/plugin_system/core/component_registry.py +++ b/src/plugin_system/core/component_registry.py @@ -166,7 +166,8 @@ class ComponentRegistry: if not isinstance(action_info, ActionInfo) or not issubclass(action_class, BaseAction): logger.error(f"注册失败: {action_name} 不是有效的Action") return False - + + action_class.plugin_name = action_info.plugin_name self._action_registry[action_name] = action_class # 如果启用,添加到默认动作集 @@ -184,6 +185,7 @@ class ComponentRegistry: logger.error(f"注册失败: {command_name} 不是有效的Command") return False + command_class.plugin_name = command_info.plugin_name self._command_registry[command_name] = command_class # 如果启用了且有匹配模式 @@ -213,6 +215,7 @@ class ComponentRegistry: if not hasattr(self, '_plus_command_registry'): self._plus_command_registry: Dict[str, Type[PlusCommand]] = {} + plus_command_class.plugin_name = plus_command_info.plugin_name self._plus_command_registry[plus_command_name] = plus_command_class logger.debug(f"已注册PlusCommand组件: {plus_command_name}") @@ -222,6 +225,7 @@ class ComponentRegistry: """注册Tool组件到Tool特定注册表""" tool_name = tool_info.name + tool_class.plugin_name = tool_info.plugin_name self._tool_registry[tool_name] = tool_class # 如果是llm可用的且启用的工具,添加到 llm可用工具列表 @@ -246,6 +250,7 @@ class ComponentRegistry: logger.warning(f"EventHandler组件 {handler_name} 未启用") return True # 未启用,但是也是注册成功 + handler_class.plugin_name = handler_info.plugin_name # 使用EventManager进行事件处理器注册 from src.plugin_system.core.event_manager import event_manager return event_manager.register_event_handler(handler_class)