模块管理优化
This commit is contained in:
@@ -285,22 +285,55 @@ class PluginManagerPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
def _reload_plugin(self, plugin_name: str, wcf, sender: str, roomid: str) -> Tuple[bool, str]:
|
def _reload_plugin(self, plugin_name: str, wcf, sender: str, roomid: str) -> Tuple[bool, str]:
|
||||||
"""重新加载插件"""
|
"""重新加载插件"""
|
||||||
|
# 查找匹配的插件名称
|
||||||
|
actual_plugin_name = self._find_plugin_by_name(plugin_name)
|
||||||
|
|
||||||
|
if not actual_plugin_name:
|
||||||
|
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:
|
||||||
wcf.send_text(f"⚠️不能重载插件管理插件自身",
|
wcf.send_text(f"⚠️不能重载插件管理插件自身",
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, "不能重载插件管理插件自身"
|
return True, "不能重载插件管理插件自身"
|
||||||
|
|
||||||
# 使用插件管理器重新加载插件
|
plugin = self.plugin_registry.get_plugin(actual_plugin_name)
|
||||||
plugin = self.plugin_manager.reload_plugin(plugin_name)
|
if not plugin:
|
||||||
if plugin:
|
wcf.send_text(f"❌插件 {actual_plugin_name} 不存在",
|
||||||
wcf.send_text(f"✅插件 {plugin_name} 重载成功",
|
|
||||||
(roomid if roomid else sender), sender)
|
(roomid if roomid else sender), sender)
|
||||||
return True, f"插件 {plugin_name} 重载成功"
|
return True, f"插件 {actual_plugin_name} 不存在"
|
||||||
else:
|
|
||||||
wcf.send_text(f"❌插件 {plugin_name} 重载失败",
|
# 记录插件状态,以便重新加载后恢复
|
||||||
|
was_running = plugin.status == PluginStatus.RUNNING
|
||||||
|
|
||||||
|
# 先卸载插件
|
||||||
|
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)
|
(roomid if roomid else sender), sender)
|
||||||
return False, f"插件 {plugin_name} 重载失败"
|
return False, f"插件 {actual_plugin_name} 卸载失败,无法重载"
|
||||||
|
|
||||||
|
# 然后加载插件
|
||||||
|
self.LOG.info(f"正在加载插件 {actual_plugin_name}")
|
||||||
|
plugin = self.plugin_manager.load_plugin(actual_plugin_name)
|
||||||
|
if not plugin:
|
||||||
|
wcf.send_text(f"❌插件 {actual_plugin_name} 加载失败",
|
||||||
|
(roomid if roomid else sender), sender)
|
||||||
|
return False, f"插件 {actual_plugin_name} 加载失败"
|
||||||
|
|
||||||
|
# 如果之前是启用状态,则重新启用
|
||||||
|
if was_running:
|
||||||
|
self.LOG.info(f"正在启用插件 {actual_plugin_name}")
|
||||||
|
if not self.plugin_manager.start_plugin(actual_plugin_name):
|
||||||
|
wcf.send_text(f"⚠️插件 {actual_plugin_name} 重载成功,但启用失败",
|
||||||
|
(roomid if roomid else sender), sender)
|
||||||
|
return True, f"插件 {actual_plugin_name} 重载成功,但启用失败"
|
||||||
|
|
||||||
|
wcf.send_text(f"✅插件 {actual_plugin_name} 重载成功",
|
||||||
|
(roomid if roomid else sender), sender)
|
||||||
|
return True, f"插件 {actual_plugin_name} 重载成功"
|
||||||
|
|
||||||
def _unload_plugin(self, plugin_name: str, wcf, sender: str, roomid: str, silent: bool = False) -> Tuple[bool, str]:
|
def _unload_plugin(self, plugin_name: str, wcf, sender: str, roomid: str, silent: bool = False) -> Tuple[bool, str]:
|
||||||
"""卸载插件"""
|
"""卸载插件"""
|
||||||
|
|||||||
Reference in New Issue
Block a user