@alemonjs/qq-bot

中文文档
2.1.44发布于 2026/10/31MITTypeScriptESM + CJS近 30 天下载 1812

QQ官方平台

中文使用文档
文档目录7 节
  1. 项目作用
  2. 配置
  3. 基础配置
  4. 连接模式
  5. 多机器人(WebSocket)
  6. 配置项说明
  7. 文档目录

@alemonjs/qq-bot

项目作用

AlemonJS 的 QQ 开放平台适配器,用于连接官方机器人接口,将 QQ 消息、事件和操作接入框架 Hook。

  • 支持群聊、单聊、频道、频道私信和互动按钮。
  • 支持文本、图片、Markdown、按钮、Ark 卡片及音视频、文件消息。
  • 提供群管理、媒体上传和单聊流式消息能力;具体能力以平台权限为准。
  • 支持 WebSocket、Webhook 连接,以及 WebSocket 多机器人配置。

官方 Node SDK 的对照结果、已落实修复和后续框架改进见 SDK 对照与改进。

三层限流、QQ 文本清洗、引用索引、群历史、LLM 上下文和 C2C 自动 typing 的配置与用法见 消息处理与会话上下文。

Markdown 图片支持使用 Media.image(source) 自动准备 QQ 素材,也可通过媒体 Hook 提前上传、查询与删除,见图片来源与平台资源。

配置

基础配置

在项目的 alemon.config.yaml 中填写:

qq-bot:
  app_id: 'YOUR_APP_ID'
  secret: 'YOUR_APP_SECRET'

app_id 和 secret 可在 QQ 开放平台 获取。默认使用 WebSocket;未填写凭证且未配置 bots 时,会进入扫码登录。扫码授权会重置 AppSecret,使旧密钥失效。

连接模式

模式配置方式说明
WebSocket(默认)不配置 route、port、ws直连官方网关
Webhook配置 route 或 port本地服务接收回调,需要公网地址;启用后官方会禁用 WebSocket 模式
Webhook 转发配置 ws连接已有的 Webhook 转发服务
自定义网关配置 gatewayURL 或 base_url_gateway使用自建网关或域名代理

Webhook 配置示例(需自行填写完整凭证,不触发扫码登录):

qq-bot:
  app_id: 'YOUR_APP_ID'
  secret: 'YOUR_APP_SECRET'
  port: '17157'
  route: '/webhook'

多机器人(WebSocket)

bots 的键为 BotId/AppID,每项填写对应密钥,可覆盖公共 SDK 配置。配置多个机器人时必须设置 default_bot,其值须匹配 bots 中的键。事件回复自动使用事件所属机器人,主动操作可通过 BotId 指定机器人。

qq-bot:
  default_bot: 'app-a'
  bots:
    app-a:
      secret: 'secret-a'
    app-b:
      secret: 'secret-b'

配置项说明

配置项类型默认值说明
app_idstring—单机器人 AppID;可通过扫码自动写入
secretstring—AppSecret;Webhook 模式同时用于签名
botsobject—多机器人配置,键为 BotId/AppID,仅用于 WebSocket
default_botstring单个机器人的 ID默认机器人,配置多个机器人时必填
master_keystring[][]主人 UserKey 列表
master_idstring[][]主人 UserId 列表
routestring/webhookWebhook 回调路由;显式配置后启用 Webhook
portstring17157Webhook 本地监听端口;显式配置后启用 Webhook
wsstring—已有 Webhook 转发服务的 WebSocket 地址
gatewayURLstring—自定义 WebSocket 网关地址
base_url_gatewaystring—网关域名代理
base_url_app_access_tokenstring—获取 access_token 的域名代理
is_privatebooleanfalse私域机器人,影响默认事件订阅
sandboxbooleanfalse显式使用旧版沙盒域名;默认正式环境使用 api.bot.qq.com
shardnumber[][0, 1]WebSocket 分片
intentsstring[]自动组装自定义事件订阅,覆盖默认值,见 intents.ts;通常省略,不要填空数组
autoInteractionAckbooleantrue自动确认按钮、快捷菜单事件;关闭后由应用调用 useInteraction().ack()
markdownToTextbooleanfalse将 Markdown 和按钮降级为可读纯文本
hideUnsupportedboolean / numberfalse消息降级时的隐藏级别,见下方说明

hideUnsupported 支持以下级别,转换后内容为空时跳过发送:

  • false:不启用隐藏。
  • true 或 1:隐藏图片、音频、附件等不可读占位符,保留可读内容。
  • 2:按钮仅显示指令数据,链接仅显示 URL。
  • 3:进一步隐藏按钮和链接的数据。
  • 4:不转换,直接丢弃降级数据。

文档目录

文档内容
安装与快速开始安装、路由注册和第一个消息回复
框架开发指南群聊、单聊、菜单、面板、管理能力及标准事件,业务开发优先阅读
扫码登录授权流程、密钥重置和失败处理
调用方式与 API 参考调用示例、API 索引、参数与 SDK 方法速查
消息类型与格式Format 映射、Markdown、按钮、Ark 和富媒体
事件参考事件映射、数据结构与读取示例
常见问题与验证范围排障、能力覆盖和验证命令
QQ 官方开发文档平台接口与权限说明

版本与发布记录

@alemonjs/qq-bot 共发布 100 个版本,首次发布于 2024/12/31;过去 12 个月发布了 58 个版本。

版本发布日期距今
2.1.44latest2026/10/317 天前
2.1.432026/10/309 天前
2.1.422026/10/2612 天前
2.1.412026/10/2514 天前
2.1.402026/10/2316 天前
2.1.392026/10/2217 天前

关于 @alemonjs/qq-bot 的常见问题

@alemonjs/qq-bot 是什么?

QQ官方平台

如何安装 @alemonjs/qq-bot?

在项目目录运行 npm install @alemonjs/qq-bot,或使用 pnpm add / yarn add / bun add。

@alemonjs/qq-bot 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@alemonjs/qq-bot 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@alemonjs/qq-bot 可以商用吗?

@alemonjs/qq-bot 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@alemonjs/qq-bot 的下载量有多少?

根据 npm 官方下载统计,@alemonjs/qq-bot 在 2026/10/06 – 2026/11/04 这 30 天内被下载 1,812 次,日均约 60 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@alemonjs/qq-bot 还在维护吗?

最新版本 2.1.44 发布于 2026/10/31(7 天前);至今共发布 100 个版本,其中过去 12 个月发布了 58 个;首次发布于 2024/12/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。