Repository navigation
v4.1.3
六边形能力雷达 v4.1.3
修复:插件加载失败 the first argument must be callable
-
根因:新增的
submit_radar_evidence工具把"指向插件实例"的字段命名成了handler,
而handler是 AstrBotFunctionTool的保留字段。AstrBot 在加载插件时会执行:if ft.handler and ft.handler.__module__ == metadata.module_path: ft.handler = functools.partial(ft.handler, metadata.star_cls)
我们把
Main实例塞进该字段后,加载阶段对它做functools.partial→ 直接抛
TypeError: the first argument must be callable,插件无法加载。 -
修复:字段改名为
plugin(不再触碰任何 AstrBot 保留字段)。 -
影响范围:该问题自 v4.1.0 引入工具时就存在;v4.1.3 一并修正,功能本身未受影响。
新增回归测试(防止同类问题再犯)
- 遍历全部 7 个工具,断言 AstrBot 保留字段(
handler/handler_module_path/active/is_background_task)
未被我们占用,且自有 dataclass 字段仅允许store/plugin; - 同时验证证据工具
run()仍能正常写入并算分。
升级后重载插件即可加载。若你此前卡在 v4.1.0~v4.1.2 的加载失败,这次直接升级到 v4.1.3。