Skip to content

Commit 87579db

Browse files
committed
让插件名字相同报错
2 parents ad9c78f + 2446b6c commit 87579db

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

astrbot-sdk/src/astrbot_sdk/runtime/loader.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,13 +724,16 @@ def validate_plugin_spec(plugin: PluginSpec) -> None:
724724
)
725725

726726

727+
# TODO: 解决插件名相同可能导致的问题,真有那么一天我们sdk小团体也是好起来了
727728
def discover_plugins(plugins_dir: Path) -> PluginDiscoveryResult:
728729
"""扫描目录发现所有插件。"""
729730
plugins_root = plugins_dir.resolve()
730731
skipped_plugins: dict[str, str] = {}
731732
issues: list[PluginDiscoveryIssue] = []
732733
plugins: list[PluginSpec] = []
733734
seen_names: set[str] = set()
735+
# TODO: 改用 dict 记录 name -> plugin_dir 映射,以便在重复时报错时显示冲突路径
736+
seen_name_sources: dict[str, Path] = {} # plugin_name -> plugin_dir
734737

735738
if not plugins_root.exists():
736739
return PluginDiscoveryResult([], {}, [])
@@ -779,18 +782,21 @@ def discover_plugins(plugins_dir: Path) -> PluginDiscoveryResult:
779782
)
780783
continue
781784
if plugin_name in seen_names:
785+
existing_source = seen_name_sources.get(plugin_name, Path("<unknown>"))
782786
skipped_plugins[plugin_name] = "duplicate plugin name"
783787
issues.append(
784788
PluginDiscoveryIssue(
785789
severity="error",
786790
phase="discovery",
787791
plugin_id=plugin_name,
788792
message="插件名称重复",
789-
details="duplicate plugin name",
793+
details=f"冲突的插件目录:{existing_source}{plugin.plugin_dir}",
794+
hint="请修改其中一个插件的名称后重试",
790795
)
791796
)
792797
continue
793798
seen_names.add(plugin_name)
799+
seen_name_sources[plugin_name] = plugin.plugin_dir
794800
plugins.append(plugin)
795801

796802
return PluginDiscoveryResult(

0 commit comments

Comments
 (0)