diff --git a/plugins/plugin_manager/main.py b/plugins/plugin_manager/main.py index b60fba1..e27dbfd 100644 --- a/plugins/plugin_manager/main.py +++ b/plugins/plugin_manager/main.py @@ -305,19 +305,22 @@ class PluginManagerPlugin(MessagePluginInterface): (roomid if roomid else sender), sender) return True, f"插件 {actual_plugin_name} 不存在" + # 获取插件的模块名,这才是插件管理器需要的名称 + module_name = plugin.__class__.__module__.split('.')[-2] + # 记录插件状态,以便重新加载后恢复 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): + # 先卸载插件 - 使用模块名而不是显示名称 + self.LOG.info(f"正在卸载插件 {actual_plugin_name}(模块名:{module_name}) 以进行重载") + if not self.plugin_manager.unload_plugin(module_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) + # 然后加载插件 - 使用模块名而不是显示名称 + self.LOG.info(f"正在加载插件 {module_name}") + plugin = self.plugin_manager.load_plugin(module_name) if not plugin: wcf.send_text(f"❌插件 {actual_plugin_name} 加载失败", (roomid if roomid else sender), sender) @@ -360,8 +363,9 @@ class PluginManagerPlugin(MessagePluginInterface): (roomid if roomid else sender), sender) return True, f"插件 {actual_plugin_name} 不存在或已卸载" - # 使用插件管理器卸载插件 - success = self.plugin_manager.unload_plugin(actual_plugin_name) + # 使用插件管理器卸载插件 - 使用模块名而不是显示名称 + self.LOG.info(f"正在卸载插件 {actual_plugin_name}(模块名:{module_name})") + success = self.plugin_manager.unload_plugin(module_name) if success: if not silent: wcf.send_text(f"✅插件 {actual_plugin_name} 卸载成功",