From 81649f053b7f9be46fd54be4ce56dc3aa6201165 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Thu, 10 Jul 2025 10:58:56 +0800 Subject: [PATCH] perf: improve log --- astrbot/core/star/star.py | 5 ++++- astrbot/core/star/star_manager.py | 15 +++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/astrbot/core/star/star.py b/astrbot/core/star/star.py index bc8f3d404..d44388238 100644 --- a/astrbot/core/star/star.py +++ b/astrbot/core/star/star.py @@ -56,7 +56,10 @@ class StarMetadata: """插件支持的平台ID字典,key为平台ID,value为是否支持""" def __str__(self) -> str: - return f"StarMetadata({self.name}, {self.desc}, {self.version}, {self.repo})" + return f"Plugin {self.name} ({self.version}) by {self.author}: {self.desc}" + + def __repr__(self) -> str: + return f"Plugin {self.name} ({self.version}) by {self.author}: {self.desc}" def update_platform_compatibility(self, plugin_enable_config: dict) -> None: """更新插件支持的平台列表 diff --git a/astrbot/core/star/star_manager.py b/astrbot/core/star/star_manager.py index 7be81403a..4a6d4d902 100644 --- a/astrbot/core/star/star_manager.py +++ b/astrbot/core/star/star_manager.py @@ -188,9 +188,9 @@ class PluginManager: @staticmethod def _load_plugin_metadata(plugin_path: str, plugin_obj=None) -> StarMetadata: - """v3.4.0 以前的方式载入插件元数据 + """先寻找 metadata.yaml 文件,如果不存在,则使用插件对象的 info() 函数获取元数据。 - 先寻找 metadata.yaml 文件,如果不存在,则使用插件对象的 info() 函数获取元数据。 + Notes: 旧版本 AstrBot 插件可能使用的是 info() 函数来获取元数据。 """ metadata = None @@ -202,7 +202,7 @@ class PluginManager: os.path.join(plugin_path, "metadata.yaml"), "r", encoding="utf-8" ) as f: metadata = yaml.safe_load(f) - elif plugin_obj: + elif plugin_obj and hasattr(plugin_obj, "info"): # 使用 info() 函数 metadata = plugin_obj.info() @@ -438,7 +438,7 @@ class PluginManager: ) if path in star_map: - # 通过__init__subclass__注册插件 + # 通过 __init__subclass__ 注册插件 metadata = star_map[path] try: @@ -453,9 +453,10 @@ class PluginManager: metadata.version = metadata_yaml.version metadata.repo = metadata_yaml.repo except Exception as e: - logger.error( + logger.warning( f"插件 {root_dir_name} 元数据载入失败: {str(e)}。使用默认元数据。" ) + logger.info(metadata) metadata.config = plugin_config if path not in inactivated_plugins: # 只有没有禁用插件时才实例化插件类 @@ -653,7 +654,9 @@ class PluginManager: with open(readme_path, "r", encoding="utf-8") as f: readme_content = f.read() except Exception as e: - logger.warning(f"读取插件 {dir_name} 的 README.md 文件失败: {str(e)}") + logger.warning( + f"读取插件 {dir_name} 的 README.md 文件失败: {str(e)}" + ) plugin_info = None if plugin: