一键导入
plugin-migration
将 NcatBot 4.4/4.5 版本插件迁移到 5.0。包括导入路径、注册方式、Config/Data API、事件类型、消息构造的全面映射。Use when: 迁移插件、升级插件、4 转 5、老版本、旧版本、migration、upgrade、plugin migration、版本升级。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
将 NcatBot 4.4/4.5 版本插件迁移到 5.0。包括导入路径、注册方式、Config/Data API、事件类型、消息构造的全面映射。Use when: 迁移插件、升级插件、4 转 5、老版本、旧版本、migration、upgrade、plugin migration、版本升级。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | plugin-migration |
| description | 将 NcatBot 4.4/4.5 版本插件迁移到 5.0。包括导入路径、注册方式、Config/Data API、事件类型、消息构造的全面映射。Use when: 迁移插件、升级插件、4 转 5、老版本、旧版本、migration、upgrade、plugin migration、版本升级。 |
| license | MIT |
你是 NcatBot 插件迁移助手。帮助用户将 4.4/4.5 版本的插件迁移到 5.2.0+ 版本。
| 需要做什么 | 委托给 |
|---|---|
| 理解 5.0 框架用法、API | framework-usage |
| 定位框架内部实现细节 | codebase-nav |
| 验证迁移后的插件 | testing-framework |
| 修改框架本体(如发现兼容问题) | framework-dev |
1. 版本识别 → 2. 代码扫描 → 3. 逐项迁移 → 4. 清单验证
读取插件源码,根据以下特征判断来源版本:
| 特征 | 版本 |
|---|---|
from ncatbot.plugin_system import NcatBotPlugin, filter_registry | 4.4 |
register_user_func() / register_admin_func() | 4.4 |
register_handler("event_type", handler) | 4.4 |
@command_registry.command("cmd") | 4.4 |
@filter_registry.group_filter / @filter_registry.private_filter | 4.4 |
from ncatbot.plugin_system.builtin_mixin import NcatBotPlugin | 4.5 |
self.register_config("key", default, description=..., value_type=...) | 4.5 |
| 方法名即命令名(无装饰器,方法名自动注册为命令) | 4.5 |
self.data['config']['key'] 嵌套访问配置 | 4.5 |
self.event_bus.publish_async() | 4.4 |
on_change_xxx 配置变更回调方法 | 4.5 |
dependencies = {} 类属性 | 4.4 / 4.5 |
部分插件可能混用 4.4 和 4.5 的模式。按出现的特征逐条迁移即可。
列出插件中需要迁移的所有项目,按类别分组:
按照 references 中的映射表执行变更。核心原则:一次改一类,改完立即验证。
建议顺序:
self.api.xxx() → self.api.qq.xxx() → api-mapping.md § BotAPI)__init__.py使用 checklist.md 逐项验证迁移结果。
验证手段:
get_errors 检查语法/类型错误以下要点来自 Lolicon4xx 插件的实际迁移实践:
Image(path) → Image(file=path):5.0 的 Image 是 Pydantic model,不接受位置参数,必须用关键字参数 file=。self.data['config']['key'] ≠ self.get_config('key'):4.5 中 data 结构嵌套了 config,5.0 中 config 和 data 完全分离。on_change_xxx 配置回调不存在于 5.0:5.0 ConfigMixin 没有配置变更回调机制,需自行处理。dependencies = {} 类属性需移除:依赖声明移至 manifest.toml 的 [dependencies]。msg,5.0 推荐 event。hasattr(msg, "group_id") → isinstance(event, GroupMessageEvent)。self.api.xxx() → self.api.qq.xxx():5.2.0+ 采用多平台架构,BotAPIClient 是纯路由器,QQ API 必须通过 self.api.qq 访问(如 self.api.qq.post_group_msg(...))。直接调用 self.api.post_group_msg(...) 会 AttributeError。registrar.on_command() vs registrar.qq.on_group_command():前者是跨平台装饰器(群+私聊均触发),后者仅限 QQ 群消息。QQ 专用插件推荐使用 registrar.qq.* 系列。self.api.qq.post_group_forward_msg() — 5.2 多平台架构下必须通过 api.qq 访问(注意:旧代码中的 self.api.post_group_forward_msg() 需要改为 self.api.qq.post_group_forward_msg())ForwardConstructor 的 attach_image()/attach_text()/attach_message() — 接口未变,仅导入路径变更。.to_forward() 和 .build() 均可用(互为别名),5.2.0+ 示例中多使用 .build()MessageArray 的生成器构造 — MessageArray(Image(file=x) for x in imgs) 仍有效event.reply() 方法 — 签名基本一致(5.2.0+ 新增 video 和 at_sender 参数)self.api 的注入 — 框架自动注入 BotAPIClient 实例,但 5.2.0+ 使用方式变为 self.api.qq.xxx() 而非直接 self.api.xxx()| 文件 | 内容 |
|---|---|
| import-mapping.md | 完整的 4.4/4.5 → 5.0 导入路径映射 |
| api-mapping.md | 注册方式、Config、消息构造、BotAPI、事件类型的全面映射 |
| checklist.md | 迁移完成后的逐项验证清单 |
| 路径 | 说明 |
|---|---|
docs/docs/examples/qq/09_full_featured_bot/main.py | 全功能示例:registrar、ConfigMixin、DataMixin、RBAC、定时任务 |
docs/docs/examples/qq/01_hello_world/main.py | 最简插件:registrar.qq.on_group_command() + self.api.qq 用法 |
docs/docs/examples/qq/02_event_handling/main.py | 事件流(self.events())、wait_event()、优先级 |
plugins/version_notifier/ | 实际运行的跨平台插件,含 manifest.toml |
plugins/Lolicon/ | 从 4.5 迁移而来的实际插件 |
定位 NcatBot 代码实现:锁定模块目录、找到关键类/函数、追踪调用链。当文档不够时才读代码,用搜索而非遍历。Use when: 找代码实现、哪个文件、哪个类、追踪调用链、定位 bug 行号、代码在哪、模块目录、源码定位。
通过文档理解 NcatBot 项目:查阅功能说明、API 签名、架构设计、预期行为。文档优先,按优先级分层查阅。Use when: 理解功能、查 API、架构理解、预期行为、怎么用、设计决策、模块职责、文档在哪。
维护 NcatBot 项目文档、示例、Skills 知识资产。编写/编辑文档、修复文档问题、文档结构规范审查。Use when: 写文档、改文档、新增文档、修复断链、修复索引、修复代码块标注、文档规范、文档模板、文档结构设计、docs maintenance。
整体/局部防腐检查:Docs 内部链接断裂、README 索引不同步、guide↔reference 内容不一致、examples 导入过时、Code↔Docs API 对齐。逐文件检查,最大化并发 subagent。Use when: docs 防腐、docs 链接、docs 断链、断链检查、docs 审计、docs audit、code docs 对齐、reference 过时、guide reference 不同步、examples 检查、定期检查。
开发与维护 NcatBot 框架本体。调试 bug、开发新功能、维护 Skill、代码审查、重构。Use when: 框架调试、debug、fix bug、feat、新功能、Skill 维护、代码贡献、模块修改、代码审查、重构。
使用 NcatBot 框架开发 QQ 机器人或跨平台 Bot。当用户需要快速体验、创建插件、注册事件处理、发送消息、调用 Bot API、使用 Mixin/Hook、使用 CLI 工具、编写插件测试、或调试运行问题时触发此技能。Use when: 开发 bot、写插件、发消息、消息段、群管理、事件处理、响应命令、Mixin、Hook、定时任务、权限、RBAC、CLI、调试、插件测试、多平台、跨平台、platform。