Skip to content

Commit 4c09ed3

Browse files
authored
fix(plugin): update plugin directory handling for reserved plugins (#5369)
* fix(plugin): update plugin directory handling for reserved plugins * fix(plugin): add warning logs for missing plugin name, object, directory, and changelog
1 parent a56e43d commit 4c09ed3

1 file changed

Lines changed: 28 additions & 8 deletions

File tree

astrbot/dashboard/routes/plugin.py

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -698,10 +698,16 @@ async def get_plugin_readme(self):
698698
logger.warning(f"插件 {plugin_name} 目录不存在")
699699
return Response().error(f"插件 {plugin_name} 目录不存在").__dict__
700700

701-
plugin_dir = os.path.join(
702-
self.plugin_manager.plugin_store_path,
703-
plugin_obj.root_dir_name or "",
704-
)
701+
if plugin_obj.reserved:
702+
plugin_dir = os.path.join(
703+
self.plugin_manager.reserved_plugin_path,
704+
plugin_obj.root_dir_name,
705+
)
706+
else:
707+
plugin_dir = os.path.join(
708+
self.plugin_manager.plugin_store_path,
709+
plugin_obj.root_dir_name,
710+
)
705711

706712
if not os.path.isdir(plugin_dir):
707713
logger.warning(f"无法找到插件目录: {plugin_dir}")
@@ -735,6 +741,7 @@ async def get_plugin_changelog(self):
735741
logger.debug(f"正在获取插件 {plugin_name} 的更新日志")
736742

737743
if not plugin_name:
744+
logger.warning("插件名称为空")
738745
return Response().error("插件名称不能为空").__dict__
739746

740747
# 查找插件
@@ -745,15 +752,27 @@ async def get_plugin_changelog(self):
745752
break
746753

747754
if not plugin_obj:
755+
logger.warning(f"插件 {plugin_name} 不存在")
748756
return Response().error(f"插件 {plugin_name} 不存在").__dict__
749757

750758
if not plugin_obj.root_dir_name:
759+
logger.warning(f"插件 {plugin_name} 目录不存在")
751760
return Response().error(f"插件 {plugin_name} 目录不存在").__dict__
752761

753-
plugin_dir = os.path.join(
754-
self.plugin_manager.plugin_store_path,
755-
plugin_obj.root_dir_name,
756-
)
762+
if plugin_obj.reserved:
763+
plugin_dir = os.path.join(
764+
self.plugin_manager.reserved_plugin_path,
765+
plugin_obj.root_dir_name,
766+
)
767+
else:
768+
plugin_dir = os.path.join(
769+
self.plugin_manager.plugin_store_path,
770+
plugin_obj.root_dir_name,
771+
)
772+
773+
if not os.path.isdir(plugin_dir):
774+
logger.warning(f"无法找到插件目录: {plugin_dir}")
775+
return Response().error(f"无法找到插件 {plugin_name} 的目录").__dict__
757776

758777
# 尝试多种可能的文件名
759778
changelog_names = ["CHANGELOG.md", "changelog.md", "CHANGELOG", "changelog"]
@@ -773,6 +792,7 @@ async def get_plugin_changelog(self):
773792
return Response().error(f"读取更新日志失败: {e!s}").__dict__
774793

775794
# 没有找到 changelog 文件,返回 ok 但 content 为 null
795+
logger.warning(f"插件 {plugin_name} 没有更新日志文件")
776796
return Response().ok({"content": None}, "该插件没有更新日志文件").__dict__
777797

778798
async def get_custom_source(self):

0 commit comments

Comments
 (0)