logo
0
0
WeChat Login
sliverp<bijin.ink>
docs: 添加机器人注册图文教程

简体中文 | English

QQ Bot

QQ Bot — OpenClaw 渠道插件

让你的 AI 助手接入 QQ — 私聊、群聊、富媒体,一个插件全搞定。

npm version License QQ Bot Platform Node.js TypeScript


扫描二维码加入群聊,一起交流

QQ 群二维码

✨ 功能特性

功能说明
🔒 多场景支持C2C 私聊、群聊 @消息、频道消息、频道私信
🖼️ 富媒体消息支持图片、语音、视频、文件的收发
🎙️ 语音能力 (STT/TTS)语音转文字自动转录 & 文字转语音回复
定时推送支持定时任务触发后主动推送消息
🔗 URL 无限制私聊可直接发送 URL
⌨️ 输入状态实时显示"Bot 正在输入中…"状态
🔄 热更新支持 npm 方式安装和无缝热更新
📝 Markdown完整支持 Markdown 格式消息
🛠️ 原生命令支持 OpenClaw 原生命令

📸 功能展示

说明: 本插件仅作为消息通道,负责在 QQ 和 OpenClaw 之间传递消息。图片理解、语音转录、AI 画图等能力取决于你配置的 AI 模型以及在 OpenClaw 中安装的 skill,而非插件本身提供。

🎙️ 语音消息(STT) — 配置 STT 后,自动将语音转录为文字理解

(发送一段语音)"明天深圳天气怎么样"

QQBot:明天(3月7日 周六)深圳的天气预报 🌤️ ...

听语音演示
📄 文件理解 — 发文件给 AI,自动识别内容并智能回复

(发送《战争与和平》TXT 文件)

QQBot:收到!你上传了列夫·托尔斯泰的《战争与和平》中文版文本。从内容来看,这是第一章的开头……你想让我做什么?

AI理解用户发送的文件
🖼️ 图片理解 — 主模型支持视觉能力时,发图片 AI 也能看懂

(发送一张图片)

QQBot:哈哈,好可爱!这是QQ企鹅穿上小龙虾套装吗?🦞🐧 ...

图片理解演示
🎨 AI 画图 — 调用绘图工具生成图片,直接发到对话里

:画一只猫咪

QQBot:给你画好了!🐱

发图片演示
🔊 语音回复(TTS) — AI 把文字变成语音消息发出来

:用语音讲个笑话

QQBot(发送一条语音消息)

发语音演示
📎 文件发送 — 生成并发送任意格式文件,最大 20MB

:战争与和平的第一章截取一下发文件给我

QQBot(发送 .txt 文件)

发文件演示
🎬 视频发送 — 支持本地文件和公网 URL,大文件自动显示上传进度

:发一个演示视频给我

QQBot(发送视频)

发视频演示

富媒体能力(图片、语音、视频、文件)的完整说明请参阅 富媒体指南


⭐ Star History

Star History Chart


🚀 快速开始

第一步 — 在 QQ 开放平台创建机器人

  1. 前往 QQ 开放平台,用手机 QQ 扫描页面二维码即可注册/登录。若尚未注册,扫码后系统会自动完成注册并绑定你的 QQ 账号。
Clipboard_Screenshot_1772980354
  1. 手机 QQ 扫码后选择同意,即完成注册,进入 QQ 机器人配置页。
  2. 点击创建机器人,即可直接新建一个 QQ 机器人。
Clipboard_Screenshot_1772980440
  1. 在机器人页面中找到 AppIDAppSecret,分别点击右侧复制按钮,保存到记事本或备忘录中。AppSecret 不支持明文保存,离开页面后再查看会强制重置,请务必妥善保存。
Clipboard_Screenshot_1772980413

详细图文教程请参阅 官方指南

⚠️ 机器人创建后会自动出现在你的 QQ 消息列表中,并发送第一条消息。但在完成下面的配置之前,发消息会提示"该机器人去火星了",属于正常现象。

第二步 — 安装插件

# 通过 OpenClaw CLI 安装(推荐) openclaw plugins install @sliverp/qqbot@latest # 或从源码安装 git clone https://github.com/sliverp/qqbot.git && cd qqbot openclaw plugins install .

第三步 — 配置 OpenClaw

方式一:通过 Wizard 配置(推荐)

openclaw channels add --channel qqbot --token "AppID:AppSecret"

方式二:编辑配置文件

编辑 ~/.openclaw/openclaw.json

{ "channels": { "qqbot": { "enabled": true, "appId": "你的 AppID", "clientSecret": "你的 AppSecret" } } }

第四步 — 启动与测试

openclaw gateway

打开 QQ,找到你的机器人,发条消息试试!

聊天演示

🤖 多账户配置(Multi-Bot)

支持在同一个 OpenClaw 实例下同时运行多个 QQ 机器人。

配置方式

编辑 ~/.openclaw/openclaw.json,在 channels.qqbot 下增加 accounts 字段:

{ "channels": { "qqbot": { "enabled": true, "appId": "111111111", "clientSecret": "secret-of-bot-1", "accounts": { "bot2": { "enabled": true, "appId": "222222222", "clientSecret": "secret-of-bot-2" }, "bot3": { "enabled": true, "appId": "333333333", "clientSecret": "secret-of-bot-3" } } } } }

说明:

  • 顶层的 appId / clientSecret默认账户(accountId = "default"
  • accounts 下的每个 key(如 bot2bot3)就是该账户的 accountId
  • 每个账户都可以独立配置 enablednameallowFromsystemPrompt 等字段
  • 也可以不配顶层默认账户,只在 accounts 里配置所有机器人

通过 CLI 添加第二个机器人(如果框架支持 --account 参数):

openclaw channels add --channel qqbot --account bot2 --token "222222222:secret-of-bot-2"

向指定账户的用户发送消息

使用 openclaw message send 发消息时,需要通过 --account 参数指定使用哪个机器人发送:

# 使用默认机器人发送(不指定 --account 时自动使用 default) openclaw message send --channel "qqbot" \ --target "qqbot:c2c:OPENID" \ --message "hello from default bot" # 使用 bot2 发送 openclaw message send --channel "qqbot" \ --account bot2 \ --target "qqbot:c2c:OPENID" \ --message "hello from bot2"

Target 格式支持:

格式说明
qqbot:c2c:OPENID私聊
qqbot:group:GROUP_OPENID群聊
qqbot:channel:CHANNEL_ID频道

⚠️ 注意:每个机器人的用户 OpenID 是不同的。机器人 A 收到的用户 OpenID 不能用机器人 B 去发消息,否则会返回 500 错误。必须用对应机器人的 accountId 去给该机器人的用户发消息。

工作原理

  • 启动 openclaw gateway 后,所有 enabled: true 的账户会同时启动 WebSocket 连接
  • 每个账户独立维护 Token 缓存(基于 appId 隔离),互不干扰
  • 接收消息时,日志会带上 [qqbot:accountId] 前缀方便排查

🎙️ 语音能力配置(可选)

STT(语音转文字)— 自动转录用户发来的语音消息

STT 支持两级配置,按优先级查找:

优先级配置路径作用域
1(最高)channels.qqbot.stt插件专属
2(回退)tools.media.audio.models[0]框架级
{ "channels": { "qqbot": { "stt": { "provider": "your-provider", "model": "your-stt-model" } } } }
  • provider — 引用 models.providers 中的 key,自动继承 baseUrlapiKey
  • 设置 enabled: false 可禁用
  • 配置后,用户发来的语音消息会自动转换(SILK→WAV)并转录为文字

TTS(文字转语音)— 机器人发送语音消息

优先级配置路径作用域
1(最高)channels.qqbot.tts插件专属
2(回退)messages.tts框架级
{ "channels": { "qqbot": { "tts": { "provider": "your-provider", "model": "your-tts-model", "voice": "your-voice" } } } }
  • provider — 引用 models.providers 中的 key,自动继承 baseUrlapiKey
  • voice — 语音音色
  • 设置 enabled: false 可禁用(默认:true
  • 配置后,AI 可使用 <qqvoice> 标签生成并发送语音消息

🔄 升级

通过 OpenClaw / npm 升级(推荐)

仅适用于通过 openclaw plugins install 安装的场景

openclaw plugins upgrade @sliverp/qqbot@latest

通过 npx 升级

npx -y @sliverp/qqbot@latest upgrade

通过 upgrade-and-run.sh 一键升级

bash ./upgrade-and-run.sh

不传 --appid / --secret 参数时,脚本会自动读取 ~/.openclaw/openclaw.json 中已有的配置。

# 首次配置或需要覆盖时 bash ./upgrade-and-run.sh --appid YOUR_APPID --secret YOUR_SECRET
完整选项
选项说明
--appid <id>QQ 机器人 AppID
--secret <secret>QQ 机器人 AppSecret
--markdown <yes|no>是否启用 Markdown 消息格式(默认: no)
-h, --help显示帮助

也支持环境变量:QQBOT_APPIDQQBOT_SECRETQQBOT_TOKEN(AppID:Secret)。

通过 pull-latest.sh(Git 源码更新)

bash ./pull-latest.sh
选项
bash ./pull-latest.sh --branch main # 指定分支(默认 main) bash ./pull-latest.sh --force # 跳过交互,强制更新 bash ./pull-latest.sh --repo <git-url> # 使用其他仓库地址

从源码升级(手动)

git clone https://github.com/sliverp/qqbot.git && cd qqbot bash ./scripts/upgrade.sh openclaw plugins install . openclaw channels add --channel qqbot --token "AppID:AppSecret" openclaw gateway restart

📚 文档