diff --git a/astrbot/core/star/star_manager.py b/astrbot/core/star/star_manager.py index bdf2c2473..4a7938605 100644 --- a/astrbot/core/star/star_manager.py +++ b/astrbot/core/star/star_manager.py @@ -187,6 +187,8 @@ class PluginManager: f"插件 {smd.name} 未被正常终止: {str(e)}, 可能会导致该插件运行不正常。" ) + await self._unbind_plugin(smd.name, smd.module_path) + star_handlers_registry.clear() star_map.clear() star_registry.clear() @@ -493,7 +495,10 @@ class PluginManager: for k in keys_to_delete: v = star_handlers_registry.star_handlers_map[k] logger.debug(f"unbind handler {v.handler_name} from {plugin_name} (map)") - del star_handlers_registry.star_handlers_map[k] + try: + del star_handlers_registry.star_handlers_map[k] + except KeyError: + pass try: del sys.modules[plugin_module_path] @@ -509,7 +514,7 @@ class PluginManager: raise Exception("该插件是 AstrBot 保留插件,无法更新。") await self.updator.update(plugin, proxy=proxy) - await self.reload() + await self.reload(plugin_name) async def turn_off_plugin(self, plugin_name: str): """