diff --git a/plugins/plugin_manager/main.py b/plugins/plugin_manager/main.py index c2e1912..b60fba1 100644 --- a/plugins/plugin_manager/main.py +++ b/plugins/plugin_manager/main.py @@ -256,32 +256,32 @@ class PluginManagerPlugin(MessagePluginInterface): return True, f"未找到插件 {plugin_name}" # 不允许禁用自身 - if plugin_name == self.name: + if actual_plugin_name == self.name: wcf.send_text(f"⚠️不能禁用插件管理插件自身", (roomid if roomid else sender), sender) return True, "不能禁用插件管理插件自身" - plugin = self.plugin_registry.get_plugin(plugin_name) + plugin = self.plugin_registry.get_plugin(actual_plugin_name) if not plugin: - wcf.send_text(f"❌插件 {plugin_name} 不存在", + wcf.send_text(f"❌插件 {actual_plugin_name} 不存在", (roomid if roomid else sender), sender) - return True, f"插件 {plugin_name} 不存在" + return True, f"插件 {actual_plugin_name} 不存在" if plugin.status == PluginStatus.STOPPED: - wcf.send_text(f"⚠️插件 {plugin_name} 已经是禁用状态", + wcf.send_text(f"⚠️插件 {actual_plugin_name} 已经是禁用状态", (roomid if roomid else sender), sender) - return True, f"插件 {plugin_name} 已经是禁用状态" + return True, f"插件 {actual_plugin_name} 已经是禁用状态" # 使用插件管理器停止插件 - success = self.plugin_manager.stop_plugin(plugin_name) + success = self.plugin_manager.stop_plugin(actual_plugin_name) if success: - wcf.send_text(f"✅插件 {plugin_name} 禁用成功", + wcf.send_text(f"✅插件 {actual_plugin_name} 禁用成功", (roomid if roomid else sender), sender) - return True, f"插件 {plugin_name} 禁用成功" + return True, f"插件 {actual_plugin_name} 禁用成功" else: - wcf.send_text(f"❌插件 {plugin_name} 禁用失败", + wcf.send_text(f"❌插件 {actual_plugin_name} 禁用失败", (roomid if roomid else sender), sender) - return True, f"插件 {plugin_name} 禁用失败" + return True, f"插件 {actual_plugin_name} 禁用失败" def _reload_plugin(self, plugin_name: str, wcf, sender: str, roomid: str) -> Tuple[bool, str]: """重新加载插件""" @@ -308,14 +308,14 @@ class PluginManagerPlugin(MessagePluginInterface): # 记录插件状态,以便重新加载后恢复 was_running = plugin.status == PluginStatus.RUNNING - # 先卸载插件 + # 先卸载插件 - 这里使用actual_plugin_name而不是plugin_name self.LOG.info(f"正在卸载插件 {actual_plugin_name} 以进行重载") if not self.plugin_manager.unload_plugin(actual_plugin_name): wcf.send_text(f"❌插件 {actual_plugin_name} 卸载失败,无法重载", (roomid if roomid else sender), sender) return False, f"插件 {actual_plugin_name} 卸载失败,无法重载" - # 然后加载插件 + # 然后加载插件 - 这里使用actual_plugin_name而不是plugin_name self.LOG.info(f"正在加载插件 {actual_plugin_name}") plugin = self.plugin_manager.load_plugin(actual_plugin_name) if not plugin: @@ -337,35 +337,47 @@ class PluginManagerPlugin(MessagePluginInterface): def _unload_plugin(self, plugin_name: str, wcf, sender: str, roomid: str, silent: bool = False) -> Tuple[bool, str]: """卸载插件""" + # 查找匹配的插件名称 + actual_plugin_name = self._find_plugin_by_name(plugin_name) + + if not actual_plugin_name: + if not silent: + wcf.send_text(f"❌未找到插件 {plugin_name},请检查名称是否正确", + (roomid if roomid else sender), sender) + return True, f"未找到插件 {plugin_name}" + # 不允许卸载自身 - if plugin_name == self.name: + if actual_plugin_name == self.name: if not silent: wcf.send_text(f"⚠️不能卸载插件管理插件自身", (roomid if roomid else sender), sender) return True, "不能卸载插件管理插件自身" - plugin = self.plugin_registry.get_plugin(plugin_name) + plugin = self.plugin_registry.get_plugin(actual_plugin_name) if not plugin: if not silent: - wcf.send_text(f"❌插件 {plugin_name} 不存在或已卸载", + wcf.send_text(f"❌插件 {actual_plugin_name} 不存在或已卸载", (roomid if roomid else sender), sender) - return True, f"插件 {plugin_name} 不存在或已卸载" + return True, f"插件 {actual_plugin_name} 不存在或已卸载" # 使用插件管理器卸载插件 - success = self.plugin_manager.unload_plugin(plugin_name) + success = self.plugin_manager.unload_plugin(actual_plugin_name) if success: if not silent: - wcf.send_text(f"✅插件 {plugin_name} 卸载成功", + wcf.send_text(f"✅插件 {actual_plugin_name} 卸载成功", (roomid if roomid else sender), sender) - return True, f"插件 {plugin_name} 卸载成功" + return True, f"插件 {actual_plugin_name} 卸载成功" else: if not silent: - wcf.send_text(f"❌插件 {plugin_name} 卸载失败", + wcf.send_text(f"❌插件 {actual_plugin_name} 卸载失败", (roomid if roomid else sender), sender) - return False, f"插件 {plugin_name} 卸载失败" + return False, f"插件 {actual_plugin_name} 卸载失败" def _load_plugin(self, plugin_name: str, wcf, sender: str, roomid: str, silent: bool = False) -> Tuple[bool, str]: """加载插件""" + # 对于加载操作,我们不需要查找匹配的插件名称,因为插件可能尚未加载 + # 但我们可以检查是否有同名插件已加载 + # 检查插件是否已加载 existing_plugin = self.plugin_registry.get_plugin(plugin_name) if existing_plugin: