内容大纲
调试、发布与常见问题
奶狗 发表于 4 周前 浏览 28 字数 1454 阅读时长 8分钟
7. 调试、发布与常见问题
7.1 安装与发布流程
- 把目录放到
plugins/<id>/(确保有index.js,id与目录名一致)。 - 重启 server(或调用
plugins.reload())。 - 后台 → 插件市场 → 找到插件 → 点击安装。
- 安装后插件在
plugins表中产生记录(enabled=1),消息轮询开始调用它。
7.2 收费模式(access)
| access | 模式 | 说明 |
|---|---|---|
0 |
免费 | 所有用户免费安装 |
1 |
付费 | 所有用户需消耗积分 |
2 |
会员免费 | 会员免积分,非会员付积分 |
3 |
会员付费 | 仅会员可兑换,需消耗积分 |
7.3 用户上传自定义插件
- 前端:插件市场 → 上传
.js文件(限 500KB,不支持 npm 依赖)。 - 后端存入
plugins/market/mp-{id}/index.js。 - 上传后需审核通过才会在市场列表出现。
7.4 运行模式(避免重复消息)
- 本地 / 生产:只需
node server.js(内置 auto-poll 自动拉消息)。 - 不要同时跑
node server.js+node worker.js(两个进程各拉一遍 → 同一条消息处理两次 → 重复回复)。 - 如果确实要用独立 worker:
AUTO_POLL=0 node server.js关闭内置轮询,再node worker.js。
7.5 调试
// 日志
console.log('[my-plugin] 调试信息');
console.error('[my-plugin] 错误', err.message);
// 热重载(修改插件后无需重启)
const plugins = require('./lib/plugins');
plugins.reload(); // 清除 require 缓存,新增/修改的插件立即生效
// 验证加载
node -e "const m = require('./plugins/my-plugin/index.js'); console.log(m.meta)"
7.6 常见问题
| 现象 | 原因 |
|---|---|
| 市场看不到插件 | 文件为空 / meta.id 缺失 / 目录名与 id 不一致 |
| 插件不触发 | 触发词不匹配 / 未安装到该机器人 / 被其他插件拦截 |
| 图片发送失败 | 临时文件路径错误 / 文件太小 / CDN 上传失败 |
| 语音发不出 | 用了 voice 类型 → 改用 file 类型 |
| 改代码不生效 | require 缓存未清 → 调 plugins.reload() 或重启 |
| AI 工具不出现 | 插件未安装到该机器人 / 工具名与内置重名 |
| handleAiTool 报错 | 使用了 this.xxx → 改用模块级函数 |
| QQ 上不生效 | 插件未声明 channels:['qq'],且 id 不在 QQ 白名单 |
7.7 快速上手检查清单
- [ ] 在
plugins/<id>/index.js创建文件(id与目录名一致) - [ ] 导出
meta(含id、name、version、author、description、usage、entry) - [ ] 导出
onMessage(msg, ctx),返回true/false/{reply} - [ ] 如需设置面板:添加
meta.settingsSchema,用plugins.loadPluginConfig读取 - [ ] 如需 AI 自动调用:添加
meta.aiTools+ 导出handleAiTool - [ ] 如需 QQ 支持:声明
meta.channels: ['wechat','qq']或确保 id 在白名单 - [ ] 如需被动监听:用
hooks.on('group_message', ...)等 - [ ] 如需扩充提示词:导出
getCombinedPrompt(botId, peerId) - [ ] 重启 server 或调
plugins.reload() - [ ] 后台插件市场安装启用
- [ ] 发消息测试,看控制台日志
https://www.naigou.cn/word/kp_8r2hg/nf_uotcx/nm_gppo8/