使用说明与权限规则
正向与反向 WebSocket SDK 提供相同的 API。除特别注明外,所有 API 都返回 Promise,成功时解析为业务数据,失败时抛出错误。
当前运行契约
本页对应萌卡 NT v2.0.6 和官方 Node.js SDK 当前契约,更新于 2026-09-08。正向、反向 SDK 均提供 227 个 action,其中包含 47 个服务管理 API。已删除的旧服务字段和旧 action 不恢复兼容;每个详情页说明当前参数、协议、准备条件、失败原因及限制。
2.0 管理 API 切割
插件服务通过框架 Token 认证后可直接调用管理 API。system_management 和 allowed_actions 已从服务配置与返回契约删除;admin_base_url 只用于管理员 SSO 和管理端入口,不参与 API 授权。插件应检查 get_plugin_context().management_api_version === 1,不得降级调用已删除的旧接口。
选择 Android 或 Linux QQ
v2.0.6 新增 主动申请加好友、主动申请入群、主动退群、修改群名、设置精华消息、戳一戳。旧 v2.0.5 不支持这些接口;各协议及实测范围以详情页为准。
官方 SDK 推荐先创建协议作用域,再调用原有方法;接口参数顺序不会改变:
const androidApi = api.forProtocol('android')
const linuxApi = api.forProtocol('linuxqq')
await linuxApi.send_group_msg(self_id, group_id, message)
直接发送账号 action 时,显式使用 client_type: 'android' | 'linuxqq'。SDK 无协议作用域的便捷方法默认选择 Android;不要依赖原始请求省略协议,新 action 会拒绝缺少协议的请求,同一 QQ 双协议在线也不会自动切换会话。
Linux QQ 账号仍通过统一的 /api/v1/accounts 创建和管理。控制台登录时,由框架调用 /api/v1/accounts/:self_id/sso/WTLoginQRCode 创建二维码,再通过 /api/v1/accounts/:self_id/sso/WTLoginQRCodeQuery 查询状态;这两个接口属于登录后的管理端 REST 链路,不是插件 WebSocket action。不要使用 scan_qr、auth_qr 或 Android 安全验证二维码接口代替 Linux 登录链路。
专属 Key 与事件
send_packet 和 30 个 QQ 宠物 action 由框架使用实例绑定的专属 Key 鉴权。同一实例的合法 WS 共用实例授权,插件不传 access_key、不保存完整 Key。v2.0.6 支持管理员明确确认的实例接管;接管后旧实例不能取得新授权,已获准的在途请求仍按原审计记录回报。清空 Key 后需要领取全新 Key 重新激活;框架仅在验证签名、nonce、Key 和实例均匹配的清空状态后撤下本地激活,网络超时不误清理。升级要求及状态刷新说明见通信协议。
当前原生事件共 26 类,包含账号上线、离线、申请、消息与结构化通知。事件按账号实际节点产生,按插件订阅权限投递;WS 不绑定固定节点。API 成功不等于事件已到达,断线不保证补发,详见事件目录与可靠性。
专属 Key
31 个接口以下接口复用原 API 文档,仅额外要求框架实例先绑定专属 Key;插件调用参数保持不变。
系统信息
23 个接口消息与媒体
46 个接口好友与空间
33 个接口群聊管理
45 个接口账号、登录与等级任务
23 个接口框架服务管理
26 个接口QQ 宠物
30 个接口QQ 农场
1 个接口通用约定
通用约定
- Bot 业务 API 的
self_id是执行操作的在线 Bot QQ 号。 - 服务管理 API 由已通过服务 Token 认证的插件调用;不再使用
system_management或allowed_actions。账号类 API 的self_id为目标 QQ,并通过client_type选择 Android 或 Linux。 - 同一 QQ 可以同时存在 Android 与 Linux QQ 会话。推荐使用
api.forProtocol('android' | 'linux');插件原始请求使用client_type选择协议。 - 省略协议选择器时固定使用 Android。Linux 不支持的 action 会返回明确错误,不会转交同 QQ 的 Android 实例。
- Android 密码、安全验证与 Linux QQ 原生扫码/票据登录是两套独立流程;不要混用登录 API、密码、协议 ID 或设备指纹。
- 插件服务不再绑定节点。普通账号 action 通过
self_id + client_type找到账号,并在账号自己的登录节点上执行。 get_bot_list不接受all_nodes;创建账号时必须给出账号的node_id,编辑账号时可用node_id移动其登录节点。- Bot API 通常要求目标 Bot 在线。
- SDK默认请求超时为 30 秒;红包与头像为 60 秒,语音、视频和批量等级任务为 5 分钟。
- 同一插件连接上的 API 会并发执行,当前每连接最多同时执行 16 个 action;响应可能乱序,但 SDK 会按请求 ID 解析对应 Promise。
- 连续
await会由调用方形成串行;需要并发时先发起多个调用,再使用Promise.all。 file_path中的本地路径由萌卡NT后端读取。插件与后端不在同一主机时,应传后端可访问的 HTTP(S) 地址。
获取登录信息
get_login_infoAndroid + Linux QQ读取当前账号 ID、昵称和客户端类型
获取当前在线 Bot 的登录号、昵称和客户端协议。
调用
const info = await api.get_login_info(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
user_id: 123456789,
nickname: '示例账号',
client_type: 'android',
}
client_type 为 android 或 linux。接口只读取框架进程内的账号状态,不会发起 QQ 协议请求,也不会返回密码、登录票据或其他敏感身份信息。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取运行状态
get_statusAndroid + Linux QQ读取当前账号连接状态与本地收发统计
获取当前在线 Bot 的连接状态与基础运行计数。
调用
const status = await api.get_status(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
online: true,
good: true,
client_type: 'android',
stat: {
packet_received: 1024,
packet_sent: 128,
online_time: 3600,
},
}
online 只有在账号状态为在线且本地 MSF 连接处于已连接状态时才为 true。统计值直接来自框架进程内运行数据,不额外向 QQ 服务端查询。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取版本信息
get_version_infoAndroid + Linux QQ读取萌卡 NT 和插件协议版本
获取萌卡 NT 框架版本、插件协议版本和当前账号协议。
调用
const version = await api.get_version_info(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
app_name: 'Mengka-NT',
protocol_version: 'v11',
app_version: 'x.y.z',
client_type: 'linux',
}
app_version 使用当前运行二进制的框架版本,不写死在 SDK 中;client_type 为当前账号的 android 或 linux 平台。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
检查图片发送能力
can_send_imageAndroid + Linux QQ查询当前账号平台是否支持图片发送
检查当前在线 Bot 是否具备图片发送能力。
调用
const result = await api.can_send_image(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{ yes: true }
使用 api.forProtocol('android' | 'linuxqq') 选择账号协议,框架按账号实际节点路由并检查在线状态。v2.0.6 此能力标志仍对 Android 返回 true、Linux 返回 false,并非逐种消息场景的探测结果。
注意:Linux 群图片发送链路已在 v2.0.6 修复并实测,但此标志尚未同步,不能把 false 解释为所有 Linux 图片接口都不支持。接入方应结合具体发送接口的协议说明及实际结果判断;好友图片上传全链路未包含在已完成的实测范围内。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
检查语音发送能力
can_send_recordAndroid + Linux QQ查询当前账号平台是否支持语音发送
检查当前在线 Bot 是否具备语音发送能力。
调用
const result = await api.can_send_record(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{ yes: true }
使用 api.forProtocol('android' | 'linuxqq') 选择账号协议,框架按账号实际节点路由并检查在线状态。v2.0.6 此能力标志对 Android 返回 true、Linux 返回 false。这是框架本地能力标志,不会发出测试语音,也不是任意语音编码、上传或转换流程的成功保证。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
下载文件
download_file无需账号协议将公网 HTTP/HTTPS 文件安全下载到框架隔离目录
将公开 HTTP(S) 地址的文件下载到萌卡 NT 框架目录下,并返回后端可直接读取的本地绝对路径。该接口是框架级接口,不需要 self_id。
调用
const result = await api.download_file({
url: 'https://example.com/files/example.zip',
headers: {
Authorization: 'Bearer example-token',
},
})
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url |
string | 是 | 仅支持公开的 HTTP(S) 地址 |
thread_count |
number | 否 | 兼容字段;当前版本使用稳定的单连接下载 |
headers |
object | string[] | 否 | 下载请求头;数组格式为 Header-Name: value |
返回值
{
file: '/framework/data/plugin-downloads/随机前缀-example.zip',
}
文件始终保存在框架目录的 data/plugin-downloads 中,不会写入系统临时目录或框架目录之外。单个文件最大 128 MiB,最多跟随 5 次重定向;本机、内网和保留网段地址会被拒绝,防止插件借下载接口访问框架内部服务。
下载失败时会返回明确的 HTTP 状态、文件大小或地址安全错误,不会保留未完成的 .part 文件。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
上传文件流
upload_file_stream无需账号协议分片上传文件到框架临时目录
按 stream_id 分片上传文件。新流必须填写 total_chunks,每个分片填写 Base64 chunk_data 与从 0 开始的 chunk_index。分片可乱序,重复提交相同分片不会重复计数。
await api.upload_file_stream({
stream_id: 'job-1', total_chunks: 2, chunk_index: 0,
chunk_data: 'SGVsbG8g', file_size: 11, filename: 'hello.txt'
})
await api.upload_file_stream({ stream_id: 'job-1', chunk_index: 1, chunk_data: 'V29ybGQ=' })
const result = await api.upload_file_stream({ stream_id: 'job-1', is_complete: true })
可选 expected_sha256 用于完整性校验,verify_only 查询状态,reset 清理未完成流。file_retention 单位毫秒,默认 5 分钟,填 0 表示不自动删除完成文件。未完成流 10 分钟无活动会自动回收,所有文件均限定在框架目录的 data/stream-temp。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
清理流临时文件
clean_stream_temp_file无需账号协议清理上传流状态与临时文件
清理全部未完成流和框架目录 data/stream-temp 中的流式传输文件,不影响其他媒体缓存。
await api.clean_stream_temp_file({})
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
测试流式传输
test_download_stream无需账号协议发送十个测试分片并返回完成结果
发送 10 个 data_chunk 测试帧,随后返回 data_complete,用于检查插件的流式帧消费逻辑。
await api.test_download_stream({ error: false })
传 error: true 时,10 个测试帧发送完毕后返回失败响应。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
流式下载文件
download_file_stream无需账号协议通过分片帧下载文件
以 action_stream 分片帧下载文件。该接口只读取明确传入的安全来源,不查询 QQ 群文件、私聊文件或媒体服务。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file |
string | 是 | 公开 HTTP(S)、base64://、Data URL,或框架 data/plugin-downloads、data/stream-temp 内文件 |
chunk_size |
number | 否 | 分片原始字节数,默认 65536,范围 1 到 4194304 |
file_id 不受支持。只传 file_id 会直接失败,框架不会回退调用 QQ 文件接口。文件总大小上限为 128 MiB;HTTP(S) 下载禁止本机、内网、保留网段和带凭据 URL。
const frames = []
const complete = await api.download_file_stream(
{ file: 'https://example.com/file.bin', chunk_size: 65536 },
frame => frames.push(frame),
)
第一帧为 data_type=file_info,随后为一个或多个 Base64 file_chunk;Promise 最终返回 data_type=file_complete、总分片数和总字节数。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
流式下载图片
download_file_image_stream无需账号协议通过分片帧下载图片并返回宽高
安全来源和分片顺序与 download_file_stream 相同。首个 file_info 额外返回图片 width、height;内容不能被识别为图片时请求失败。
await api.download_file_image_stream(
{ file: 'data:image/png;base64,iVBORw0KGgo...' },
frame => console.log(frame),
)
该接口不接受仅有 file_id 的 QQ 媒体解析请求。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
流式下载语音
download_file_record_stream无需账号协议通过分片帧下载语音并可转换格式
流式读取安全来源中的语音文件。参数和分片顺序与 download_file_stream 相同。
可选 out_format:mp3、amr、wma、m4a、spx、ogg、wav、flac。指定格式时由框架管理的 FFmpeg 容器完成转换,转换最多等待 2 分钟;未运行 FFmpeg 时会返回明确错误。
await api.download_file_record_stream(
{ file: 'https://example.com/voice.ogg', out_format: 'mp3' },
frame => console.log(frame),
)
该接口不通过 file_id 查询 QQ 文件或媒体服务。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
获取在线客户端
get_online_clientsAndroid + Linux QQ返回账号在线设备列表
获取当前 QQ 账号的在线客户端列表。萌卡 NT 直接使用 QQ Android 9.2.70 下发的 RegisterProxy.PushParams 设备数据,不通过名称猜测,也不返回固定占位值。
const clients = await api.get_online_clients(106606)
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 要查询的在线 Bot QQ 号 |
no_cache |
boolean | 否 | 兼容 Go-CQHTTP 参数;安卓端的设备变更由 QQ 服务端主动推送 |
成功时直接返回客户端数组:
[
{
"app_id": 1,
"device_name": "DESKTOP",
"device_kind": "Windows",
"client_type": 2,
"state": 1,
"platform_id": 3,
"new_client_type": 2
}
]
app_id、客户端类型、状态和平台字段来自 QQ 服务端;device_kind 优先使用服务端平台名称。账号刚登录且设备推送尚未到达时会返回空数组,收到推送后会自动更新。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
设置在线状态
set_online_status仅 Android设置在线、离开、忙碌、隐身及扩展状态
设置当前在线 Bot 的基础在线状态或 QQ 扩展状态。底层使用 QQ Android 9.2.70 的真实状态请求,不依赖 PC QQ。
调用
await api.set_online_status(self_id, status, ext_status, battery_status)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
status |
number | string | 是 | 基础状态:10 在线、30 离开、40 隐身、50 忙碌、60 Q我吧、70 请勿打扰 |
ext_status |
number | string | 是 | QQ 扩展状态 ID;普通基础状态填写 0 |
battery_status |
number | string | 是 | 电量状态值 0-100;仅当 ext_status=1000 时写入请求,其余状态填写 0 |
数值参数同时接受 JSON number 和十进制字符串,便于兼容现有 OneBot/NapCat 插件。
返回值
成功返回 null。
示例
// 普通在线
await api.set_online_status(123456789, 10, 0, 0)
// 显示 76% 电量
await api.set_online_status(123456789, 10, 1000, 76)
// 离开
await api.set_online_status(123456789, 30, 0, 0)
离线请使用账号管理接口
该 action 只修改 QQ 在线展示状态,不接受离线状态。需要断开账号时请调用 stop_account_login。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置自定义在线状态
set_diy_online_status仅 Android设置自定义状态图标和文字
设置当前在线 Bot 的自定义状态图标和文字。底层使用 QQ Android 9.2.70 的真实自定义状态请求。
调用
const message = await api.set_diy_online_status(
self_id,
face_id,
face_type,
wording,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
face_id |
number | string | 是 | QQ 自定义状态图标 ID,必须大于 0 |
face_type |
number | string | 否 | 图标类型,默认 1 |
wording |
string | 否 | 状态文字,默认一个空格 |
数值参数同时接受 JSON number 和十进制字符串。
返回值
返回 QQ 服务端给出的状态设置结果文字,例如:
set status success
示例
await api.set_diy_online_status(
123456789,
1,
1,
'API 验证',
)
需要恢复普通状态时,调用:
await api.set_online_status(123456789, 10, 0, 0)
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置正在输入状态
set_input_status仅 Android向指定好友同步正在输入或结束输入状态
向指定好友同步正在输入或结束输入状态。
调用
await api.set_input_status(self_id, user_id, event_type)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 好友 QQ 号 |
event_type |
number | 否 | 1 表示正在输入,0 表示结束 |
目标必须是当前账号的好友。成功返回空对象。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取用户在线状态
nc_get_user_statusAndroid + Linux QQ查询指定 QQ 当前的在线状态与扩展状态
查询指定 QQ 当前的基础在线状态和扩展状态。
调用
const status = await api.nc_get_user_status(self_id, user_id)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 要查询的 QQ 号 |
返回值包含 status、ext_status 等 QQ 服务端实时字段。好友隐私设置可能限制可见状态。
v2.0.6 修复(v2.0.6)
修复 Linux 账号按数字 QQ 查询时返回 316 的寻址参数错误,Android 和 Linux 均沿用本接口,无需增加参数或切换接口。此修复不在已发布的 v2.0.5 中。
公开状态不等同于框架内的登录状态;判断框架账号是否在线应查询 get_bot_list 或订阅账号上下线事件。本接口不提供陌生账号 UID,也不会触发好友申请事件。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
重启框架服务
set_restart无需账号协议保留账号缓存会话并重启当前框架进程
重启当前萌卡 NT 框架进程。调用成功后先返回 null,随后关闭本地 QQ 连接并保留缓存会话,再使用原启动参数重新启动框架。
该接口会短暂中断全部插件连接和管理页面请求,应只授予可信插件。
await api.set_restart({})
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
检查网址安全性
check_url_safely无需账号协议由 QQ Android 服务返回安全、未知或危险等级
使用当前在线 Android QQ 登录态,请求 QQ 服务器判断网址安全等级。该接口会返回真实的服务端判定,不使用固定的“安全”占位值。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行检测的在线 Bot QQ 号 |
url |
string | 是 | 完整的 http:// 或 https:// 网址,最长 4096 字符 |
返回值
{
level: 1,
}
level 含义:
1:安全。2:未知,QQ 服务器没有给出明确安全结果。3:危险。
调用示例
{
"action": "check_url_safely",
"params": {
"self_id": 1060221,
"url": "https://www.qq.com/"
}
}
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
英文翻译为中文
translate_en2zh无需账号协议调用 QQ Android 批量翻译服务
使用 QQ Android 的批量翻译服务,将英文文本翻译为中文。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行翻译的在线 Bot QQ 号 |
words |
string[] | 是 | 英文文本列表,每次最多 50 项 |
返回值
{
words: ["你好", "世界"],
}
返回列表与请求列表顺序一致;如果 QQ 服务器返回数量不匹配,框架会直接返回错误,不会用空文本补齐。
调用示例
{
"action": "translate_en2zh",
"params": {
"self_id": 1060221,
"words": ["hello", "world"]
}
}
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
发送原始协议包
send_packet仅 Android使用当前账号会话发送已组装的原生协议包
使用当前 QQ 9.2.70 登录会话发送已组装的原生协议包。
调用
const responseHex = await api.send_packet(self_id, cmd, data, true, reserve)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
cmd |
string | 是 | SSO 命令名 |
data |
string | 是 | 请求体十六进制字符串,最大 4 MiB |
rsp |
boolean | 否 | 是否等待回包,默认 true |
reserve |
string | 否 | 自定义 reserve 十六进制;省略时由框架生成标准 reserve |
等待回包时返回小写十六进制字符串;rsp=false 时成功返回 null。
专属 Key
此 action 要求当前框架实例已经绑定有效的专属 Key。框架自动从本机安全存储读取 Key 并完成鉴权;插件不得在配置、action 外层或 params 中提交 access_key。
Key 被禁用、过期、超过限额、实例签名不匹配或验证服务不可用时,框架都会在发包前拒绝调用。Key 的绑定和轮换由框架管理员完成,不向插件暴露。
高权限接口
插件必须只发送自身业务明确需要的命令和数据。专属 Key 调用会记录关联用户、插件、框架实例、发送 QQ、命令、请求内容、发送时间和执行结果;协议正文按敏感数据加密保存。禁止将 Key 写入源码、URL或日志。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
获取在线机型显示
_get_model_show仅 Android使用账号会话和设备指纹查询 QQ 服务端可用机型名称
获取当前 QQ 账号与设备型号可用的在线机型显示名称。接口由萌卡 NT 后端直接使用当前账号的 Android 9.2.70 登录态、设备指纹和 QQ 会员机型服务完成。
const result = await api.get_model_show(1060221, 'Xiaomi 14 Pro')
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 要查询的在线 Bot QQ 号 |
model |
string | 否 | 手机型号;未填写时使用账号绑定指纹中的型号 |
成功时返回:
{
"variants": [
{
"model_show": "Xiaomi 14 Pro",
"need_pay": false
}
]
}
need_pay 表示该显示名称是否要求 QQ 会员权益。查询结果来自 QQ 服务端,不使用固定占位数据。
该接口复用框架现有 PsKey 能力后请求 QQ 会员 Web 服务,不增加新的 MSF/OIDB 命令。插件统一使用公开 action get_model_show。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
设置在线机型显示
_set_model_show仅 Android设置在线机型名称,或恢复 QQ 默认显示
设置当前 QQ 账号的在线机型显示名称。接口由萌卡 NT 原生后端使用账号会话和设备指纹调用 QQ 服务,不依赖其他机器人框架。
await api.set_model_show(1060221, 'Xiaomi 14 Pro', 'Xiaomi 14 Pro')
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 要设置的在线 Bot QQ 号 |
model |
string | 否 | 手机型号;未填写时使用账号绑定指纹中的型号 |
model_show |
string | 否 | 要显示的机型名称;传空字符串时恢复 QQ 默认显示 |
建议先调用 get_model_show 获取当前账号可用的显示名称,再选择 need_pay=false 或账号已具备权益的项目。成功时返回空数据。
该操作仅修改 QQ 展示机型,不修改框架设备指纹;传入空 model_show 可恢复 QQ 默认显示。插件统一使用公开 action set_model_show。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
发送群聊消息
send_group_msgAndroid + Linux QQ向指定群聊发送消息
发送群聊消息。
调用
const result = await api.send_group_msg(self_id, group_id, message)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 目标群聊 ID |
message |
Segment[] | 是 | 消息段数组 |
支持 text、reply、at、image、voice、video 和 face 等群聊消息段,详见消息段。
video 必须作为消息数组中的唯一消息段单独发送。
返回值
{
success: true,
message_id: 123456789,
msg_seq: 123,
msg_random: 456,
}
message_id 可直接用于后续引用回复;msg_seq 与 msg_random 可用于 recall_group_msg。
示例
await api.send_group_msg(123456789, 987654321, [
{ type: 'text', data: { text: '你好 🎉 [bq190]' } },
{ type: 'at', data: { uin: '112233445' } },
])
text 直接支持 Unicode emoji,并会把 [bq190] 解析为 QQ 自带的 190 号表情。需要精确控制表情消息段时,也可以使用 { type: 'face', data: { kind: 'qq_face', face_id: '190' } }。
引用回复
把收到的群消息事件或本接口返回的 message_id 放入 reply 段,即可发送 QQ 原生引用回复:
await api.send_group_msg(123456789, 987654321, [
{ type: 'reply', data: { message_id: event.message_id } },
{ type: 'text', data: { text: '已收到,我来处理。' } },
])
兼容 OneBot 写法 { type: 'reply', data: { id: event.message_id } }。引用消息必须属于当前群,一条消息只能包含一个 reply 段,且引用段后至少需要一个正文消息段。消息缓存过期后应重新从消息事件或历史消息接口获取 message_id。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
发送好友消息
send_friend_msgAndroid + Linux QQ向指定好友发送消息
发送好友消息。
适用协议
Android 与 Linux QQ 均使用萌卡 NT 原生好友消息链路执行。
调用
const result = await api.send_friend_msg(self_id, user_id, message)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 好友 QQ 号 |
message |
Segment[] | 是 | 消息段数组,支持 text、reply、image 和 QQ 原生 face |
返回值
{ success: true, message_id: 123456789, msg_seq: 123, msg_random: 456 }
示例
await api.send_friend_msg(123456789, 112233445, [
{ type: 'text', data: { text: '你好 🎉 [bq190]' } },
])
text 直接支持 Unicode emoji,并会把 [bq190] 解析为 QQ 自带的 190 号表情。结构化写法为 { type: 'face', data: { kind: 'qq_face', face_id: '190' } }。
user_id 必须使用 QQ 号,不接受 UID。
引用回复
把当前好友会话中消息事件的 message_id 放入 reply 段:
await api.send_friend_msg(123456789, 112233445, [
{ type: 'reply', data: { message_id: event.message_id } },
{ type: 'text', data: { text: '好的,已经看到了。' } },
])
也兼容 { type: 'reply', data: { id: event.message_id } }。引用消息必须属于当前好友会话,不能拿其他好友或群聊的 message_id 进行引用。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
发送消息
send_msgAndroid + Linux QQ按好友或群聊目标复用现有消息发送链路
萌卡 NT 通用消息发送接口,根据 message_type 路由到原生私聊或群聊发送链路。
调用
const result = await api.send_msg(self_id, message_type, target_id, message)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_type |
private | group |
是 | 消息目标类型 |
target_id |
number | 是 | 私聊时为好友 QQ 号,群聊时为群号 |
message |
string | Segment | Segment[] | 是 | 文本、单个消息段或消息段数组 |
底层协议参数也可以直接传 user_id 或 group_id。省略 message_type 时只能填写其中一项,框架会自动判定目标类型。
返回值
{ message_id: 123 }
示例
await api.send_msg(123456789, 'group', 778899, [
{ type: 'text', data: { text: '群消息' } },
])
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
获取群聊历史消息
get_group_msg_historyAndroid + Linux QQ从 QQ 服务器按消息序号分页读取群聊历史消息
从 QQ 服务器读取指定群聊的历史消息。该接口使用 Android QQ 9.2.70 的 MessageSvc.PbGetGroupMsg,返回的 message_id 可以继续用于 get_msg、撤回、转发和标记已读。
调用示例
const result = await api.get_group_msg_history({
self_id: 1060221,
group_id: 123456789,
message_seq: 0,
count: 20,
reverseOrder: false,
})
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
message_seq |
number | 否 | 分页锚点;传 0 从最新消息开始 |
count |
number | 否 | 返回数量,默认 20,范围 1-100 |
reverseOrder |
boolean | 否 | 是否反转本页消息顺序,默认 false;也兼容 reverse_order |
v2.0.6 修复(v2.0.6):message_seq=0 先读取服务器最新群消息序号,不依赖本地缓存,也不发送虚构的最大序号。返回的实际消息保存账号范围内的 message_id,可继续调用 get_msg;服务端已删除且没有发送者、时间的占位记录不作为消息返回。查询历史不会向插件重播消息事件。Android 双节点测试证据与 Linux 验收分开记录。
返回值
{
"messages": [
{
"time": 1720000000,
"self_id": 1060221,
"post_type": "message",
"message_type": "group",
"message_id": 123456,
"group_id": 123456789,
"user_id": 106606,
"message": [{ "type": "text", "data": { "text": "你好" } }],
"raw_message": "你好"
}
],
"next_message_seq": 9980,
"has_more": true
}
继续向前翻页时,把上一次返回的 next_message_seq 传给 message_seq。
该接口是只读查询。Android 使用上述 9.2.70 协议;Linux QQ 使用对应的原生历史消息能力,不会转发到同 QQ 的 Android 实例。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取好友历史消息
get_friend_msg_historyAndroid + Linux QQ从 QQ 服务器按消息时间分页读取好友漫游消息
从 QQ 服务器读取指定好友的一日漫游消息。该接口使用 Android QQ 9.2.70 的 MessageSvc.PbGetOneDayRoamMsg,返回结构与实时好友消息一致。
调用示例
const result = await api.get_friend_msg_history({
self_id: 1060221,
user_id: 106606,
message_seq: 0,
count: 20,
reverseOrder: false,
})
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
user_id |
number | 是 | 好友 QQ 号 |
message_seq |
number | 否 | 分页锚点;可传上一页的 next_message_seq 或已返回的 message_id,传 0 从最新消息开始 |
count |
number | 否 | 返回数量,默认 20,范围 1-100 |
reverseOrder |
boolean | 否 | 是否反转本页消息顺序,默认 false;也兼容 reverse_order |
返回值
{
"messages": [
{
"time": 1720000000,
"self_id": 1060221,
"post_type": "message",
"message_type": "private",
"message_id": 234567,
"user_id": 106606,
"target_id": 1060221,
"message": [{ "type": "text", "data": { "text": "你好" } }],
"raw_message": "你好"
}
],
"next_message_seq": 1719999000,
"has_more": true
}
next_message_seq 在好友漫游协议中实际表示上一页最早消息的时间游标,调用方只需原样回传,不要自行换算。
该接口是只读查询。Android 使用上述 9.2.70 协议;Linux QQ 使用对应的原生历史消息能力,不会转发到同 QQ 的 Android 实例。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
转发单条好友消息
forward_friend_single_msg仅 Android将进程内缓存消息重新发送给指定好友
将一条缓存消息的标准消息段重新发送给指定好友。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 来源消息 ID |
user_id |
number | 是 | 目标好友 QQ 号 |
await api.forward_friend_single_msg(1060221, message_id, 106606)
这是普通消息重发,不会生成 QQ 的合并转发卡片。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
转发单条群消息
forward_group_single_msg仅 Android将进程内缓存消息重新发送到指定群聊
将一条缓存消息的标准消息段重新发送到指定群聊。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 来源消息 ID |
group_id |
number | 是 | 目标群号 |
await api.forward_group_single_msg(1060221, message_id, group_id)
这是普通消息重发,不会生成 QQ 的合并转发卡片。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
上传好友图片
upload_friend_imageAndroid + Linux QQ上传好友聊天图片
上传好友聊天图片,并返回可直接传给 send_friend_msg 的图片消息段。
调用
const image = await api.upload_friend_image(
self_id,
user_id,
file_path,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 目标好友 QQ 号 |
file_path |
string | 是 | 后端可访问的本地路径、file:// 或 HTTP(S) 地址 |
文件名由后端根据图片 MD5 自动生成,图片类型由后端设置为 1000。 |
返回值
{ type: 'image', data: { file_id: 'FILE_ID' } }
示例
const image = await api.upload_friend_image(
3879548525,
106030,
'D:/Pictures/3840x2160.jpg',
)
await api.send_friend_msg(3879548525, 106030, [image])
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
设置 QQ 头像
set_qq_avatar仅 Android通过 Highway 上传当前 Bot 头像
设置当前 QQ Bot 的头像。后端不发送媒体 OIDB 请求,图片会直接通过 Highway HTTP 上传。
调用
const result = await api.set_qq_avatar(self_id, file_path)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
file_path |
string | 是 | 后端本地路径、file:// 或后端可访问的 HTTP(S) 地址 |
图片大小上限为 5MB。建议使用 PNG 或 JPEG 图片。
路径属于后端主机
插件和萌卡NT不在同一台主机时,插件本机路径对后端不可见。此时应提供后端可访问的 HTTP(S) 地址。
返回值
{ success: true }
QQ头像 CDN 可能存在短暂缓存,上传成功后旧头像仍可能显示一段时间。
示例
await api.set_qq_avatar(
123456789,
'https://example.com/avatar.png',
)
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
上传群聊图片
upload_group_imageAndroid + Linux QQ上传图片并生成图片消息段
上传群聊图片,并返回可直接发送的图片消息段。
调用
const image = await api.upload_group_image(
self_id,
group_id,
file_path,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 目标群聊 ID |
file_path |
string | 是 | 后端本地路径、file:// 或后端可访问的 HTTP(S) 地址 |
文件名由后端根据图片 MD5 自动生成,图片类型由后端设置为 1000。 |
返回值
{ type: 'image', data: { file_id: 'FILE_ID' } }
示例
const image = await api.upload_group_image(
123456789,
987654321,
'D:/images/example.png',
)
await api.send_group_msg(123456789, 987654321, [image])
插件与萌卡NT不在同一台主机时,不要传插件主机的本地路径;应传后端可访问的 HTTP(S) 地址。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
上传群聊语音
upload_group_voiceAndroid + Linux QQ上传音频并生成语音消息段
上传群聊语音,并返回可直接发送的语音消息段。
调用
const voice = await api.upload_group_voice(self_id, group_id, file_path)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 目标群聊 ID |
file_path |
string | 是 | 后端本地路径、file:// 或后端可访问的 HTTP(S) 音频地址 |
后端通过 FFmpeg 解码常见音频格式,转换为单声道 24kHz PCM 后编码为 Silk,并生成语音波形。需要先安装并运行 FFmpeg 镜像。
返回值
{
type: 'voice',
data: {
file_id: 'FILE_ID',
duration: 5,
},
}
返回段只能发送到上传时指定的群。
示例
const voice = await api.upload_group_voice(
123456789,
987654321,
'D:/voices/example.mp3',
)
await api.send_group_msg(123456789, 987654321, [voice])
插件与萌卡NT不在同一台主机时,应传后端可访问的 HTTP(S) 地址。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
上传群聊视频
upload_group_videoAndroid + Linux QQ上传 MP4 视频并生成视频消息段
上传群聊 MP4 视频,并返回可直接发送的视频消息段。
调用
const video = await api.upload_group_video(self_id, group_id, file_path)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 目标群聊 ID |
file_path |
string | 是 | MP4 的后端本地路径、file:// 或后端可访问的 HTTP(S) 地址 |
后端通过已安装并运行的 FFmpeg 镜像读取视频尺寸与时长,并自动提取 PNG 封面。
返回值
{
type: 'video',
data: {
file_id: 'FILE_ID',
},
}
返回段可直接传给 send_group_msg,并应发送到上传时指定的群聊。视频必须作为唯一消息段单独发送。
示例
const video = await api.upload_group_video(
123456789,
987654321,
'D:/videos/example.mp4',
)
await api.send_group_msg(123456789, 987654321, [video])
插件与萌卡NT不在同一台主机时,应传后端可访问的 HTTP(S) 地址。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
获取群聊合并转发消息
get_group_forward_msgAndroid + Linux QQ获取合并转发的完整内容
获取群聊合并转发消息的完整内容。
调用
const result = await api.get_group_forward_msg(
self_id,
sender_uin,
res_id,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
sender_uin |
number | 是 | 合并转发消息发送者 QQ 号 |
res_id |
string | 是 | 合并转发资源 ID |
返回值
{
res_id: 'RESOURCE_ID',
messages: [],
}
res_id 通常来自收到的合并转发卡片消息段。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取合并转发消息
get_forward_msgAndroid + Linux QQ从消息 ID 或资源 ID 获取合并转发节点
获取合并转发消息的节点内容,可使用 message_id 或简写字段 id。
传入框架消息事件中的 message_id 时,会自动使用消息缓存中的真实发送者和合并转发资源 ID;也可以直接传入 send_group_forward_msg 返回的 res_id。
const result = await api.get_forward_msg({
self_id: 123456789,
message_id: '合并转发消息的 message_id 或 res_id'
})
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | string | 是 | 框架消息 ID 或合并转发资源 ID;兼容别名 id |
sender_uin |
number | 否 | 直接传资源 ID 时可指定原始发送者 QQ;通常无需填写 |
返回值:
{
"messages": [
{
"type": "node",
"data": {
"user_id": 123456789,
"nickname": "发送者昵称",
"content": [{ "type": "text", "data": { "text": "内容" } }],
"time": 1787600000
}
}
]
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
发送群聊合并转发消息
send_group_forward_msgAndroid + Linux QQ创建文本合并转发消息
上传文本合并转发消息并返回可发送的合并转发消息段。
调用
const result = await api.send_group_forward_msg(
self_id,
group_id,
messages,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 目标群聊 ID |
messages |
object[] | 是 | 合并转发节点数组 |
| NapCat 标准节点结构: |
{
type: 'node',
data: {
user_id: 123456789,
nickname: '示例用户',
time: 1710000000,
content: [{ type: 'text', data: { text: '内容' } }],
},
}
也兼容萌卡 NT 旧版扁平节点:
{
user_id: 123456789,
nickname: '示例用户',
time: 1710000000,
message: [{ type: 'text', data: { text: '内容' } }],
}
time 使用 Unix 秒。非 text 消息段会被忽略。
节点也可以填写 data.id,引用框架近 7 天消息缓存中的
message_id。对应消息必须仍在缓存且包含可转发的消息段。
返回值
{
success: true,
res_id: 'RESOURCE_ID',
message: [{ type: 'ark', data: {} }],
uploaded_messages: 1,
discarded_messages: 0,
discarded_segments: 0,
}
示例
const forward = await api.send_group_forward_msg(self_id, group_id, messages)
await api.send_group_msg(self_id, group_id, forward.message)
当前实现的该 action 只负责上传合并转发内容并生成消息段,不会直接发送;参数中不存在 upload_only。需要发送时,把返回的 message 交给 send_group_msg。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
生成好友分享 Ark
ArkSharePeer仅 Android根据现有好友资料生成联系人分享 Ark
生成指定好友的联系人分享 Ark。
调用
const result = await api.ArkSharePeer(self_id, user_id, phone_number)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 当前好友 QQ 号 |
phone_number |
string | 否 | 卡片中显示的手机号 |
返回 { result, errMsg, arkMsg },其中 arkMsg 可作为 Ark 消息内容继续发送。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
生成好友分享 Ark(通用 action)
send_ark_share仅 Android与 `ArkSharePeer` 使用同一套萌卡原生处理链路
与 ArkSharePeer 使用同一套萌卡 NT 原生联系人分享链路,参数与返回值一致。
调用
const result = await api.send_ark_share(self_id, user_id, phone_number)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 当前好友 QQ 号 |
phone_number |
string | 否 | 卡片中显示的手机号 |
详见 ArkSharePeer。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
生成群聊分享 Ark
ArkShareGroup仅 Android根据现有群资料生成群聊分享 Ark
生成指定群聊的分享 Ark。
调用
const ark = await api.ArkShareGroup(self_id, group_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 当前账号已加入的群号 |
返回 Ark JSON 字符串。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
生成群聊分享 Ark(通用 action)
send_group_ark_share仅 Android与 `ArkShareGroup` 使用同一套萌卡原生处理链路
与 ArkShareGroup 使用同一套萌卡 NT 原生群聊分享链路,参数与返回值一致。
调用
const ark = await api.send_group_ark_share(self_id, group_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 当前账号已加入的群号 |
详见 ArkShareGroup。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
发送群红包
send_group_red_packet仅 Android发送拼手气、普通、专属、语音或口令群红包
向指定群聊发送 QQ 群红包,支持拼手气、普通、专属、语音和口令五种类型。
调用
const result = await api.send_group_red_packet(
self_id,
group_id,
'lucky',
100,
2,
payment_password,
'恭喜发财',
)
total_amount 使用“分”为单位。上例表示总金额 1 元、共 2 份。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 接收红包的群号 |
red_packet_type |
string | 是 | 红包类型:lucky、normal、exclusive、voice 或 command |
total_amount |
number | 是 | 红包总金额,单位为分 |
total_num |
number | 是 | 红包份数 |
payment_password |
string | 正式发送时是 | QQ 钱包支付密码,仅用于本次请求 |
wishing |
string | 否 | 祝福语、语音口令或文字口令 |
target_uins |
number[] | 专属红包时是 | 可领取专属红包的 QQ 号列表 |
options.dry_run |
boolean | 否 | 仅校验参数和发送链路,不执行支付 |
options.probe_confirm |
boolean | 否 | dry_run 时额外检查支付确认路由 |
红包类型对应关系:
| 类型 | 说明 |
|---|---|
lucky |
拼手气红包,每份金额随机 |
normal |
普通红包,每份金额相同 |
exclusive |
专属红包,需同时传入 target_uins |
voice |
语音红包,wishing 为语音口令 |
command |
口令红包,wishing 为文字口令 |
原始 action 参数
{
"action": "send_group_red_packet",
"params": {
"self_id": 123456789,
"group_id": 987654321,
"red_packet_type": "normal",
"total_amount": 100,
"total_num": 2,
"wishing": "恭喜发财",
"target_uins": [],
"payment_password": "本次请求的支付密码"
}
}
返回值
{
status: 'success',
red_packet_type: 'normal',
group_id: 987654321,
total_amount: 100,
total_num: 2
}
支付密码不会写入框架配置。调用方也不应记录、缓存或输出该字段。建议先使用 dry_run: true 检查参数和路由,再执行正式发送。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
查询红包详细信息
get_red_packet_info仅 Android查询收到的 QQ 红包状态与金额信息
查询群消息中 red_packet 消息段对应的 QQ 红包详细信息。
调用
const redPacket = event.message.find(segment => segment.type === 'red_packet')
const result = await api.get_red_packet_info(
event.self_id,
event.group_id,
event.sender.user_id,
redPacket.data,
)
也可以直接把完整的 red_packet 消息段作为第 4 个参数传入,官方 SDK 会自动读取其中的 data。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 红包所在群号 |
sender_uin |
number | 是 | 红包发送人 QQ 号 |
red_packet |
object | 是 | 收到的 red_packet 消息段 data |
red_packet.title |
string | 否 | 红包标题 |
red_packet.listid |
string | 是 | 红包列表 ID |
red_packet.authkey |
string | 是 | 红包鉴权串 |
red_packet.channel |
number | 否 | 红包渠道,缺省为 0 |
red_packet.pay_flag |
number | 是 | 红包支付标记,取自收到的 red_packet 消息段 |
red_packet.hb_from |
number | 是 | 红包来源标记,取自收到的 red_packet 消息段 |
原始 action 参数
未使用官方 SDK 时,当前后端接收的是展开后的红包字段,不接收嵌套的 red_packet 对象:
{
"action": "get_red_packet_info",
"params": {
"self_id": 644691423,
"group_id": 714169244,
"sender_uin": 51974055,
"title": "恭喜发财",
"listid": "10000448012608253500114336737900",
"authkey": "45c7afde0cb06eed0198c763b46a580a",
"channel": 1,
"pay_flag": 0,
"hb_from": 0
}
}
请直接使用收到的红包消息段数据,不要自行重新生成 listid、authkey。官方 SDK 会自动把第 4 个位置参数展开成当前后端实际接收的字段。
返回值
返回 QQ 红包服务解密后的 JSON 对象,例如:
{
retcode: '0',
retmsg: 'ok',
pre_grap_token: 'rand=...&sign=...&ts=...&ver=1',
send_object: {
channel: '1',
recv_amount: '0',
recv_num: '0',
send_listid: '10000452012608021400100537757900',
send_name: '示例用户',
send_uin: '350873596',
total_amount: '100',
total_num: '1',
wishing: '恭喜发财',
},
state: '16',
}
pre_grap_token 位于返回对象顶层。正式领取时,将它作为 grab_red_packet 的第 5 个参数传入。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
领取红包
grab_red_packet仅 Android领取收到的 QQ 群红包
领取群消息中 red_packet 消息段对应的 QQ 红包。
调用
const redPacket = event.message.find(segment => segment.type === 'red_packet')
const info = await api.get_red_packet_info(
event.self_id,
event.group_id,
event.sender.user_id,
redPacket.data,
)
const result = await api.grab_red_packet(
event.self_id,
event.group_id,
event.sender.user_id,
redPacket.data,
info.pre_grap_token,
)
也可以直接把完整的 red_packet 消息段作为第 4 个参数传入,官方 SDK 会自动读取其中的 data。
pre_grap_token 由 get_red_packet_info 返回,位于响应对象顶层。正式领取会将其作为 action 参数顶层的 pre_grap_token 发送。
Bot 的 skey、tenpay.com PsKey、昵称、设备指纹、协议 AppID 和红包加密上下文均由后端自动获取。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 红包所在群号 |
sender_uin |
number | 是 | 红包发送人 QQ 号 |
red_packet |
object | 是 | 收到的 red_packet 消息段 data |
red_packet.title |
string | 否 | 红包标题 |
red_packet.listid |
string | 是 | 红包列表 ID |
red_packet.authkey |
string | 是 | 红包鉴权串 |
red_packet.channel |
number | 否 | 红包渠道,缺省为 0 |
red_packet.pay_flag |
number | 是 | 红包支付标记,取自收到的 red_packet 消息段 |
red_packet.hb_from |
number | 是 | 红包来源标记,取自收到的 red_packet 消息段 |
pre_grap_token |
string | 是 | get_red_packet_info 返回对象顶层的预领取 token |
原始 action 参数
未使用官方 SDK 时,当前后端接收展开后的红包字段,pre_grap_token 同样放在 params 顶层:
{
"action": "grab_red_packet",
"params": {
"self_id": 644691423,
"group_id": 714169244,
"sender_uin": 51974055,
"title": "恭喜发财",
"listid": "10000448012608253500114336737900",
"authkey": "45c7afde0cb06eed0198c763b46a580a",
"channel": 1,
"pay_flag": 0,
"hb_from": 0,
"pre_grap_token": "get_red_packet_info 返回的 pre_grap_token"
}
}
请直接使用收到的红包消息段数据,不要自行重新生成 listid、authkey。官方 SDK 会自动把第 4 个位置参数展开成当前后端实际接收的字段。
返回值
返回 QQ 红包服务解密后的领取结果 JSON 对象。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取群聊可领取红包
get_group_red_packets仅 Android获取指定群聊中当前仍可领取的红包
获取指定群聊中当前仍可领取的红包。
调用
const packets = await api.get_group_red_packets(self_id, group_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行查询的 Bot QQ 号 |
group_id |
number | 是 | 群号 |
返回值
返回红包数组。没有可领取红包时返回空数组。
[
{
sender_uin: 123456789,
title: '恭喜发财',
listid: '红包列表 ID',
authkey: '领取凭据',
channel: 1,
pay_flag: 0,
hb_from: 0,
time: 1710000000,
},
]
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取可领取红包
get_up_for_grabs仅 Android与群聊可领取红包查询使用同一套萌卡原生处理链路
获取指定群聊中当前仍可领取的红包,与 get_group_red_packets 返回相同结果。
调用
const packets = await api.get_up_for_grabs(self_id, group_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行查询的 Bot QQ 号 |
group_id |
number | 是 | 群号 |
返回值
返回红包数组。没有可领取红包时返回空数组。字段与 get_group_red_packets 相同。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取消息
get_msgAndroid + Linux QQ读取框架保留的标准消息引用和消息段
读取框架当前进程已观察到的 OneBot 消息数据,不请求 QQ 历史消息。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 消息事件中的 message_id;兼容传近期 msg.seq |
返回 message_type、message_id、message_seq、发送者、标准消息段、原始文本,以及群消息可用的 group_id。
缓存按账号严格隔离,保留 7 天且每账号最多 4096 条;它是进程内缓存,框架重启后不会保留。不存在、已过期或重启前的消息会直接返回缓存未命中,不会自动拉取 QQ 历史记录。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
生成音乐 Ark 卡片
get_music_ark仅 Android根据 QQ 或网易云歌曲信息生成带内容绑定签名的可播放音乐卡片
根据 QQ Android 9.2.70 实际接收的音乐分享结构,生成可由 send_msg、send_group_msg 或 send_friend_msg 发送的 Ark 音乐卡片。
调用方提供歌曲名称、歌手、跳转地址、封面和音频地址;框架向音乐卡片签名服务提交这些公开展示字段,并校验返回值确实包含 view=music 和内容绑定 token。框架不会向签名服务发送 QQ 登录凭据、插件令牌或群聊信息。
签名依赖
QQ 会校验音乐卡片内容与 token,不能通过复制旧卡片 token 或修改抓包 JSON 生成新歌曲。默认签名服务可由部署环境变量 MENGKA_MUSIC_SIGN_URL 替换;服务不可用时接口会明确失败,不会返回必然被 QQ 拦截的伪卡片。
调用
const { data: musicArk } = await api.get_music_ark(self_id, {
type: 'qq',
title: '一半',
content: '柯基林',
url: 'https://i.y.qq.com/v8/playsong.html?songid=718815077',
audio: 'https://example.com/audio/one-half.mp3',
image: 'https://example.com/image/one-half.jpg',
})
await api.send_group_msg(self_id, group_id, [
{ type: 'ark', data: musicArk },
])
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
type |
string | 否 | qq、163(也接受 netease);缺省为 qq |
title |
string | 是 | 歌曲标题,最多 200 字;也接受 song |
content |
string | 是 | 歌手或卡片说明,最多 300 字;也接受 desc、artist、singer |
url |
string | 是 | 点击卡片后的 HTTP(S) 跳转地址;也接受 jumpUrl、jump_url、jump |
audio |
string | 是 | HTTP(S) 音频直链;也接受 musicUrl、music_url、audio_url |
image |
string | 是 | HTTP(S) 封面地址;也接受 image_url、picUrl、pic_url、preview、cover |
qq 和 163 都生成 view=music 可播放卡片,并自动填写对应的来源名称、应用 ID 与图标。
返回值
{
"data": {
"app": "com.tencent.music.lua",
"config": {},
"extra": {},
"meta": {},
"prompt": "[分享]一半",
"ver": "0.0.0.1",
"view": "music"
}
}
将 data 原样放入 { "type": "ark", "data": ... } 消息段。不要把整个返回对象作为消息段的 data。
错误说明
self_id必须对应当前调用连接可用的在线账号。- 所有 URL 必须是带主机名的完整
http://或https://地址。 - 缺少
audio时会在生成阶段直接报错,不会产生无法播放的卡片。 - 签名服务不可用、返回非 JSON、非音乐卡片或缺少 token 时,接口会返回明确错误。
self_id只用于选择调用账号和执行插件权限校验,不会被发送给外部签名服务。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
分页获取消息表情回应
fetch_emoji_like仅 Android分页获取指定群消息的表情回应用户
分页获取群消息指定表情的回应用户。
调用
const page = await api.fetch_emoji_like({
self_id: 106606,
message_id: 123456789,
emoji_id: '76',
count: 100,
cookie: '',
emoji_type: 0,
})
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Android Bot QQ 号 |
message_id |
number | 是 | 框架缓存中的群消息 ID |
emoji_id |
string | 是 | QQ 表情回应 ID |
count |
number | 否 | 单页数量,默认 10,最大 100 |
cookie |
string | 否 | 上一页返回的分页游标,第一页留空 |
emoji_type |
number | 否 | 表情类型,默认由框架根据 emoji_id 判断 |
返回 emojiLikesList、下一页 cookie、isFirstPage 和 isLastPage。继续翻页时原样传入上次返回的 cookie。
该接口只读取回应用户,不会添加或取消表情回应。当前仅支持 Android QQ。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取全部消息表情回应
get_emoji_likes仅 Android自动翻页获取指定群消息的全部表情回应用户
自动翻页获取群消息指定表情的全部回应用户。
调用
const result = await api.get_emoji_likes({
self_id: 106606,
message_id: 123456789,
emoji_id: '76',
emoji_type: 0,
})
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Android Bot QQ 号 |
message_id |
number | 是 | 框架缓存中的群消息 ID |
emoji_id |
string | 是 | QQ 表情回应 ID |
emoji_type |
number | 否 | 表情类型,默认 0 |
返回 { emoji_like_list },每项包含 user_id 和 nick_name。
框架最多自动读取 10 页,并在服务端返回末页、空游标或重复游标时立即停止。该接口不会添加或取消表情回应。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
发送私聊消息
send_private_msgAndroid + Linux QQ按用户 ID 使用萌卡原生好友消息链路发送消息
按 user_id 向好友发送消息。该 action 已作为萌卡 NT 正式 API 注册,并复用 send_friend_msg 的原生发送链路。
调用
const result = await api.forProtocol('android').send_private_msg({ self_id, user_id, message })
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 接收消息的好友 QQ 号 |
message |
string | object | array | 是 | 文本、单个消息段或消息段数组 |
返回值
成功返回 { message_id: number },可用于查询、回复或撤回;该接口不返回 success、msg_seq 或 msg_random,不要套用 send_friend_msg 的返回结构。调用失败通过 action 错误返回。非好友群临时会话请使用独立的 send_group_temp_msg,不要把群成员 QQ 号直接当作好友调用。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
发送群临时会话消息
send_group_temp_msgAndroid + Linux QQ通过共同群聊向非好友群成员发起临时私聊
通过共同群聊向群成员发送 QQ 原生临时会话消息。目标 QQ 不需要与发送账号建立好友关系。
调用
const result = await api.send_group_temp_msg(self_id, group_id, user_id, message)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 临时会话的来源群号 |
user_id |
number | 是 | 来源群内的目标成员 QQ 号 |
message |
Segment[] | 是 | 消息段数组,支持 text、reply、image 和 QQ 原生 face |
框架会在发送前从 QQ 服务器读取群成员列表,确认发送账号和目标 QQ 都在该群中。group_id 会写入 Android QQ 的临时会话协议路由,不会降级成普通好友私聊。
如果群设置禁止普通成员发起临时会话,普通成员调用会直接返回权限错误;群主和管理员仍可正常发送。
返回值
{
success: true,
message_id: 123456789,
msg_seq: 123,
msg_random: 456,
message_type: 'private',
sub_type: 'group',
group_id: 987654321
}
示例
await api.send_group_temp_msg(123456789, 987654321, 112233445, [
{ type: 'text', data: { text: '你好,我从群成员列表联系你。' } },
])
收到的临时会话事件仍属于私聊消息,但会额外携带 sub_type: 'group' 和来源 group_id。
引用回复
临时会话支持 QQ 原生引用回复。被引用消息必须来自同一来源群与同一目标成员:
await api.send_group_temp_msg(self_id, group_id, user_id, [
{ type: 'reply', data: { message_id: event.message_id } },
{ type: 'text', data: { text: '收到。' } },
])
该能力只通过萌卡原生 send_group_temp_msg 开放,不注册 OneBot 私聊兼容入口。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
撤回消息
delete_msgAndroid + Linux QQ根据消息引用自动分派群聊或私聊撤回
撤回一条框架近期收到或发送的消息。框架根据 message_id 自动选择群聊或私聊的安卓协议撤回链路。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 消息事件或发送接口返回的消息 ID |
await api.delete_msg(1060221, message_id)
消息引用默认保留 7 天;引用过期、目标消息已不可撤回或服务端拒绝时会返回明确错误。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
标记群聊已读
mark_group_msg_as_readAndroid + Linux QQ将指定群消息序号作为群聊已读游标上报
把指定群消息标记为已读。框架从 message_id 解析真实群号和消息序号,再通过安卓协议上报已读游标。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 群消息 ID |
await api.mark_group_msg_as_read(1060221, message_id)
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
标记私聊已读
mark_private_msg_as_readAndroid + Linux QQ将指定好友消息时间作为私聊已读游标上报
把指定好友消息标记为已读。框架从 message_id 解析对端 QQ 和消息时间,再通过安卓协议上报已读游标。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 私聊消息 ID |
await api.mark_private_msg_as_read(1060221, message_id)
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
标记消息已读
mark_msg_as_readAndroid + Linux QQ自动识别群聊或私聊并上报已读游标
标记一条消息已读。框架根据消息引用自动选择群聊序号或私聊时间游标。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 群聊或私聊消息 ID |
await api.mark_msg_as_read(1060221, message_id)
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
设置群头像
set_group_portrait仅 Android按 QQ Android 9.2.70 的真实上传链路设置群聊头像
设置指定群聊的头像。萌卡NT会按 QQ Android 9.2.70 的 Highway command_id=3000 上传链路,先获取当前账号的 Highway 会话,再将公开群号转换为 QQ 内部群 UIN 后提交图片。
调用
const result = await api.set_group_portrait(self_id, group_id, file)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number / string | 是 | 公开群号 |
file |
string | 是 | 本地路径、file://、HTTP(S)、base64:// 或 Base64 data URL |
图片必须是有效的 GIF、JPEG 或 PNG,大小不超过 10 MiB。调用账号必须是群主或具备修改群头像的管理员权限。
路径属于后端主机
插件和萌卡NT不在同一台主机时,插件本机路径对后端不可见。此时应使用 HTTP(S)、base64:// 或 data URL。
返回值
{
result: 0,
errMsg: '',
new_seq: 24,
}
result 为 0 表示 QQ 已接受上传;非零值会作为调用错误返回。权限不足时 QQ 会返回 No Perm,不会被框架伪装为上传成功。群头像 CDN 可能有短暂缓存。
示例
await api.set_group_portrait(
1060221,
106500,
'https://example.com/group-avatar.png',
)
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
上传私聊文件
upload_private_fileAndroid + Linux QQ通过 QQ Android 9.2.70 离线文件通道向好友发送文件
将本地文件或可下载的 HTTP(S) 文件发送给指定 QQ 好友。框架使用 QQ Android 9.2.70 的离线文件通道,依次完成签名申请、Highway 上传和私聊文件消息下发。
const result = await api.upload_private_file({
self_id: 2082083,
user_id: 1060221,
file: 'D:/Mengka-NT/files/report.txt',
name: 'report.txt',
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
user_id |
number | 是 | 接收文件的好友 QQ 号;也兼容 target_uin |
file |
string | 是 | 框架所在机器的本地文件路径、file:// 地址或 HTTP(S) 下载地址;也兼容 file_path |
name |
string | 是 | 好友侧显示的文件名;也兼容 file_name |
成功时返回:
{
"success": true,
"file_id": "文件 UUID",
"file_name": "report.txt",
"file_size": 128,
"message_id": 4399468640647658,
"msg_seq": 7117,
"client_seq": 10321
}
file_id 会缓存文件校验信息,可继续交给 get_private_file_url 获取下载地址;message_id 使用框架统一消息引用,可用于消息查询等后续操作。
路径与好友关系
正向 WebSocket 调用时,本地路径指框架所在机器,不是插件所在机器。目标 QQ 必须能被当前账号解析为有效好友;文件大小、上传频率和风险控制仍以 QQ 服务端返回为准。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
发送合并转发消息
send_forward_msgAndroid + Linux QQ按 `user_id` 或 `group_id` 自动选择私聊或群聊目标
萌卡 NT 通用合并转发接口。填写 user_id 时发送给好友,填写
group_id 时发送到群聊;两个目标参数必须且只能填写一个。
私聊示例
const result = await api.send_forward_msg({
self_id,
user_id: 123456789,
messages: [{
type: 'node',
data: {
user_id: 123456789,
nickname: '示例用户',
content: '这是一条合并转发内容',
},
}],
})
群聊示例
const result = await api.send_forward_msg({
self_id,
group_id: 123456789,
messages,
})
节点结构、消息引用、返回字段与 send_private_forward_msg 和 send_group_forward_msg 一致。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
发送私聊合并转发消息
send_private_forward_msgAndroid + Linux QQ创建文本合并转发消息并发送给指定好友
创建文本合并转发消息并发送给指定好友,使用当前账号的原生发送链路。
调用
const result = await api.forProtocol('android').send_private_forward_msg({
self_id,
user_id,
messages,
})
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
user_id |
number | 是 | 接收合并转发的好友 QQ 号 |
messages |
object[] | 是 | 合并转发节点数组 |
upload_only |
boolean | 否 | 只上传并返回 Ark 消息段,不发送给好友 |
标准节点示例:
{
type: 'node',
data: {
user_id: 123456789,
nickname: '示例用户',
time: 1710000000,
content: [{ type: 'text', data: { text: '内容' } }],
},
}
content 也可以直接填写字符串。节点使用 data.id 时,会引用框架
近期缓存的 message_id。当前版本生成合并转发正文时支持 text
消息段,其余消息段会计入返回值中的 discarded_segments。
返回值
{
success: true,
message_id: 'MESSAGE_REFERENCE',
res_id: 'RESOURCE_ID',
forward_id: 'RESOURCE_ID',
uploaded_messages: 1,
discarded_messages: 0,
discarded_segments: 0,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
生成小程序 Ark 卡片
get_mini_app_ark仅 Android生成可发送的小程序 Ark 数据
根据内置模板或完整小程序参数生成可发送的 Ark 数据。
调用
const result = await api.get_mini_app_ark(self_id, {
type: 'bili',
title: '视频标题',
desc: '视频简介',
jumpUrl: 'https://www.bilibili.com/video/BV...',
})
主要参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
type |
string | 否 | 内置模板:bili 或 weibo |
title |
string | 是 | 卡片标题 |
desc |
string | 否 | 卡片说明 |
picUrl |
string | 否 | 封面地址 |
jumpUrl |
string | 否 | 小程序跳转地址 |
webUrl |
string | 否 | Web 备用地址 |
rawArkData |
boolean | 否 | 返回 QQ 原始结构 |
不使用内置模板时,可额外传 appId、sdkId、iconUrl、versionId、scene、templateType、businessType、verType 和 shareType。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取 AI 声音角色
get_ai_characters仅 Android获取群聊可用的 AI 声音角色列表
获取指定群聊当前可用的 AI 声音角色。
调用
const categories = await api.get_ai_characters(self_id, group_id, 1)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
chat_type |
number | 否 | 会话类型,默认 1 |
返回分类数组;每个分类包含可用于合成的角色 ID 和展示名称。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
生成 AI 语音
get_ai_record仅 Android合成 AI 语音并返回可访问地址
使用指定 AI 声音角色合成语音并返回访问地址。
调用
const url = await api.get_ai_record(self_id, group_id, character, text, 1)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
character |
string | 是 | 角色 ID |
text |
string | 是 | 要合成的文字 |
chat_type |
number | 否 | 会话类型,默认 1 |
合成可能需要数秒,成功返回临时语音 URL。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
发送群聊 AI 语音
send_group_ai_record仅 Android合成并直接发送群聊 AI 语音
合成并直接向指定群聊发送 AI 语音。
调用
await api.send_group_ai_record(self_id, group_id, character, text, 1)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Android Bot QQ 号 |
group_id |
number | 是 | 目标群号 |
character |
string | 是 | get_ai_characters 返回的角色 ID |
text |
string | 是 | 要合成并发送的文字 |
chat_type |
number | 否 | 会话类型,默认 1 |
参数规则与 get_ai_record 相同。成功表示 QQ 已接受发送流程,返回 { message_id: 0 }。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
识别语音文字
fetch_ptt_text仅 Android识别框架消息缓存中的群语音
识别框架近期收到并缓存的群语音文字。
调用
const result = await api.fetch_ptt_text(self_id, message_id, 0)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 群语音事件中的框架消息 ID |
format |
number | 否 | 语音格式提示,通常填 0 |
成功返回 { text }。消息引用或语音元数据过期后无法再次识别。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
设置消息表情回应
set_msg_emoji_like仅 Android添加或取消群消息表情回应
为群消息添加或取消指定表情回应。
调用
await api.set_msg_emoji_like(self_id, message_id, emoji_id, true)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
message_id |
number | 是 | 框架缓存中的群消息 ID |
emoji_id |
string | 是 | QQ 表情回应 ID |
set |
boolean | 否 | true 添加,false 取消 |
仅支持群消息。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
标记所有消息已读
_mark_all_as_read仅 Android批量上报框架近期缓存的最新会话游标
将框架近期缓存中的所有会话标记为已读。框架会合并内存与 Redis 消息引用,只为每个群聊和每个好友上报最新游标。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
await api._mark_all_as_read(1060221)
该接口只处理框架已收到并保留引用的消息,不会假装清除 QQ 服务端上从未同步到框架的历史未读会话。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
处理事件快速操作
.handle_quick_operation仅 Android根据消息或申请事件上下文执行回复、撤回、群管理和申请处理
根据萌卡 NT 上报的消息事件或请求事件执行一组快速操作。反向事件处理与 WebSocket 插件均可直接调用。
await api.call('.handle_quick_operation', {
context,
operation
})
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
context |
object | 是 | 框架上报的原始消息事件或请求事件 |
operation |
object | 是 | 要执行的快速操作 |
消息事件支持:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
reply |
string / object / array | - | 回复文本、单个消息段或消息段数组 |
at_sender |
boolean | false |
群聊回复时先 @发送者,匿名消息会忽略 |
delete |
boolean | false |
撤回触发该事件的群消息 |
kick |
boolean | false |
将非匿名发送者移出群聊 |
reject_add_request |
boolean | false |
踢出后拒绝再次加群 |
ban |
boolean | false |
禁言非匿名发送者 |
ban_duration |
number | 1800 |
禁言秒数 |
请求事件支持:
| 字段 | 类型 | 说明 |
|---|---|---|
approve |
boolean | 同意或拒绝好友申请、加群申请或邀请 |
remark |
string | 同意好友申请时设置备注 |
reason |
string | 拒绝加群申请时填写理由 |
示例
收到群消息后回复、@发送者并禁言 10 分钟:
await api.call('.handle_quick_operation', {
context: event,
operation: {
reply: '已收到',
at_sender: true,
ban: true,
ban_duration: 600
}
})
说明
- 操作按照回复、撤回、踢出、禁言的顺序执行;任一步失败会返回明确的 action 名称和错误原因。
- 匿名群消息不执行
at_sender、kick或ban。 - 该 action 已在当前运行时正式注册。它会复用萌卡 NT 的消息发送、撤回、群管理和申请处理能力,不建立第二套协议实现。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取好友列表
get_friend_listAndroid + Linux QQ获取完整好友列表
获取 Bot 的完整好友列表。萌卡NT会自动完成分页。
v2.0.6 修复:分页使用服务端返回的完整分页凭据,以结束标记判断是否收齐。仅在整批读取成功后返回列表并更新好友数量;网络超时、分页凭据缺失或循环、响应账号不匹配、重复账号及损坏响应均返回错误,不以成功结果返回已读取的部分名单。此修复由 v2.0.6 提供。
内部单页请求调整为200条,避开较大分页响应发生记录缺口的边界;这不是最终好友数量上限,插件无需自行传递分页游标。
整批读取上限为60秒,调用方设置的更短超时仍然有效。资源保护上限为128页、100000条好友记录或64 MiB响应;触及上限时明确失败,不截断成功返回。total_count 是最终返回的好友条数,不是单页协议的结束标记。
调用
const result = await api.get_friend_list(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
friends: [],
total_count: 0,
self_uin: 123456789,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取单向好友列表
get_unidirectional_friend_list仅 Android获取当前账号的真实单向好友关系
获取当前账号的单向好友列表。单向好友是仍关注当前账号、但没有出现在普通双向好友列表中的用户。
const users = await api.get_unidirectional_friend_list({
self_id: 106606,
top: 0,
count: 99,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 要查询的在线 Bot QQ 号 |
top |
number | 否 | 分页起点,默认 0 |
count |
number | 否 | 本次请求数量,默认 99,最大 200 |
cookie |
string | 否 | QQ 服务端返回的分页游标;首批不填写 |
成功时直接返回用户数组:
[
{
"uin": 1122334455,
"uid": "u_example",
"nick_name": "示例用户",
"age": 0,
"source": "通过群聊"
}
]
nick_name 和 source 由框架解码 QQ Android 9.2.70 的真实响应得到,不使用好友缓存拼接。没有单向好友时返回空数组。
该接口只读取好友关系,不会添加或删除好友。当前仅支持 Android QQ。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取资料获赞
get_profile_like仅 Android获取当前登录 QQ 的真实资料获赞记录与统计
获取当前登录 QQ 的资料获赞记录。接口使用 QQ Android 9.2.70 的真实 VisitorSvc.ReqGetVoterList 请求,不读取网页缓存。
const result = await api.get_profile_like({
self_id: 2082083,
user_id: 2082083,
start: 0,
count: 10,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 要查询的在线 Bot QQ 号 |
user_id |
number | 否 | 查询目标;Android 9.2.70 当前只允许与 self_id 相同 |
start |
number | 否 | 分页起点,默认 0 |
count |
number | 否 | 本次返回数量,默认 10,最大 100 |
cookie |
string | 否 | 服务端分页游标的 Base64 文本;首批不填写 |
成功时返回:
{
"uid": "u_example",
"time": "1787612400",
"favoriteInfo": {
"userInfos": [],
"total_count": 0,
"last_time": 0,
"today_count": 0
},
"voteInfo": {
"userInfos": [
{
"uin": 1122334455,
"uid": "u_example_friend",
"nick": "示例用户",
"count": 1,
"latestTime": 1787612300,
"isFriend": true
}
],
"total_count": 100,
"new_count": 2,
"new_nearby_count": 0,
"last_visit_time": 1787612400
}
}
voteInfo.userInfos 是分页获赞用户;total_count 是累计获赞数,new_count 是当天获赞数。uid 和 isFriend 会在好友资料可用时补齐;非好友不会通过猜测生成 UID。
QQ 9.2.70 的此响应没有稳定提供 VIP/SVIP 标志,因此兼容字段 isvip、isSvip 当前返回 false。
该接口只读取本人获赞记录,不会点赞或修改个人资料。当前仅支持 Android QQ。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取可疑好友申请
get_doubt_friends_add_requestAndroid + Linux QQ获取 QQ 标记为可疑的待处理好友申请
获取 QQ 标记为可疑的待处理好友申请。
这不是所有普通好友申请的列表。返回空数组只表示本次没有查到可疑申请,不能据此判断是否收到普通申请。普通申请应监听 friend_request_received,保留事件账号、协议及 flag 后再由用户确认处理。
调用
const requests = await api.get_doubt_friends_add_request({
self_id: 106606,
count: 50,
})
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
count |
number | 否 | 返回数量,默认 50,最大 100 |
每项包含 flag、uin、nick、source、reason 和 time。后续处理必须原样使用 flag。
该接口只读取待处理申请,不会同意、拒绝或修改好友关系。当前仅支持 Android QQ。
Linux 原生普通申请列表没有本接口需要的可疑标记,调用会明确返回不支持,而不是返回空数组伪装查询成功。Linux 普通申请通过 friend_request_received 接收,并使用相同协议的 set_friend_add_request 处理。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
删除好友
delete_friend仅 Android删除指定好友
删除指定好友。
调用
const result = await api.delete_friend(self_id, target_uin)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
target_uin |
number | 是 | 要删除的好友 QQ 号 |
返回值
{ success: true, target_uin: 112233445 }
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取好友动态
get_qzone_friend_feeds仅 Android获取好友空间最新动态
获取好友空间首包中的最新动态。
调用
const result = await api.get_qzone_friend_feeds(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
self_id: 123456789,
feeds: [],
total_count: 0,
}
动态常用字段:
| 字段 | 说明 |
|---|---|
app_id |
动态应用标识 |
user_id |
发布者 QQ 号 |
nickname |
发布者昵称 |
create_time |
发布时间 |
feed_id |
动态标识 |
feeds_key |
动态操作键 |
url |
动态地址 |
text |
文本摘要 |
forward |
转发动态信息,可能省略 |
完整 feed 可直接传给点赞与取消点赞 API。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
发布空间动态
publish_qzone_feed仅 Android发布一条文本空间动态
执行前会强制查询当前 QQ 等级;等级低于 16 级时请求会被拒绝。
发布一条文本 QQ 空间动态。
调用
const result = await api.publish_qzone_feed(
self_id,
content,
visibility,
self_delete_after_one_day,
declare_ai_generated,
)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
content |
string | 是 | - | 动态文本,不能只包含空白字符 |
visibility |
number | 否 | 1 |
1 所有人可见、2 好友可见、5 仅自己可见 |
self_delete_after_one_day |
boolean | 否 | false |
是否在一天后自动删除 |
declare_ai_generated |
boolean | 否 | false |
是否声明内容由 AI 生成 |
返回值
{
self_id: 123456789,
feed: {},
client_feed_id: 'CLIENT_FEED_ID',
server_time: 1710000000,
}
返回的 feed 可用于 comment_qzone_feed、like_qzone_feed 或 unlike_qzone_feed。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
点赞好友动态
like_qzone_feed仅 Android点赞指定动态
执行前会强制查询当前 QQ 等级;等级低于 16 级时请求会被拒绝。
点赞一条好友空间动态。
调用
api.like_qzone_feed(self_id, feed)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
feed |
object | 是 | get_qzone_friend_feeds 返回的完整动态对象 |
返回值
此 API 不等待响应,不返回 Promise。
const { feeds } = await api.get_qzone_friend_feeds(self_id)
api.like_qzone_feed(self_id, feeds[0])
转发动态会根据 feed.forward 自动处理。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
取消好友动态点赞
unlike_qzone_feed仅 Android取消指定动态的点赞
取消对好友空间动态的点赞。
调用
api.unlike_qzone_feed(self_id, feed)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
feed |
object | 是 | get_qzone_friend_feeds 返回的完整动态对象 |
返回值
此 API 不等待响应,不返回 Promise。
const { feeds } = await api.get_qzone_friend_feeds(self_id)
api.unlike_qzone_feed(self_id, feeds[0])
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取 QQ 名片
get_summary_cardAndroid + Linux QQ获取自己或指定用户的 QQ 名片
获取 QQ 名片信息。
v2.0.5 起,此已有 action 纳入服务管理能力发现。插件通过服务令牌认证后调用;使用 api.forProtocol('android') 明确账号协议,self_id 决定框架内实际账号及其运行节点。
适用协议
当前由萌卡 NT 的安卓协议实例执行。
调用
查询当前 Bot:
const result = await api.get_summary_card(self_id)
查询指定用户:
const result = await api.get_summary_card(self_id, target_uin)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
target_uin |
number | 否 | 目标 QQ 号,省略时查询自己 |
返回值
返回目标用户的名片结构化数据。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
点赞 QQ 名片
like_summary_cardAndroid + Linux QQ点赞指定用户的 QQ 名片
点赞指定用户的 QQ 名片。
适用协议
v2.0.6支持 Android 与 Linux QQ;Linux 使用当前账号的原生点赞服务。v2.0.5 的 Linux 旧链路可能返回业务错误码 151。
调用
const result = await api.like_summary_card(
self_id,
target_uin,
like_count,
)
const linuxResult = await api.forProtocol('linuxqq').like_summary_card(self_id, target_uin, 1)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
target_uin |
number | 是 | - | 目标 QQ 号 |
like_count |
number | 否 | 1 |
点赞次数 |
client_type |
string | 否 | android |
WS 请求字段;SDK 通过 forProtocol('linuxqq') 指定,多协议账号应明确协议 |
返回值
{ code: 0, msg: '成功' }
code 和 msg 来自 QQ 名片点赞响应。
仅 code === 0 表示操作成功;额度、风控和服务端拒绝仍按实际结果返回。Linux 需要解析目标原生 UID,无法确认身份时明确失败,不用 QQ 数字冒充 UID。点赞成功不会由框架伪造 profile_liked;请在目标账号订阅原生事件另行确认。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
获取 skey
get_skey仅 Android获取当前 Bot 的 skey
获取当前 Bot 会话的 skey。
调用
const result = await api.get_skey(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{ skey: 'SKEY' }
该凭据属于当前 Bot 会话,应仅在插件运行期间使用。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取 User-Agent
get_user_agentAndroid + Linux QQ获取当前 Bot 协议和设备指纹对应的 User-Agent
获取当前 Bot 协议和设备指纹对应的 QQ Android WebView User-Agent。
v2.0.5 起,此已有 action 纳入服务管理能力发现。插件通过服务令牌认证后调用;使用 api.forProtocol('android') 明确账号协议,不能把服务连接当成固定账号节点。
调用
const result = await api.get_user_agent(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | Bot QQ 号,登录验证过程中也可调用 |
返回值
{
user_agent: 'Mozilla/5.0 ...'
}
返回值根据 Bot 当前绑定的协议版本和设备指纹生成。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取 clientkey
get_clientkey仅 Android获取十六进制 clientkey
获取当前 Bot 会话的 clientkey。
调用
const result = await api.get_clientkey(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{ clientkey: 'HEX_ENCODED_CLIENTKEY' }
clientkey 使用十六进制编码。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取 PsKey
get_pskeyAndroid + Linux QQ获取指定域名的 PsKey
获取指定域名的 PsKey。
v2.0.6补充 Linux 原生域名凭据获取。请显式选择账号协议;不会跨协议借用 Android 登录票据。返回的
pskey是敏感凭据,不应写入日志、前端页面或公开报告。精华查询等已有框架 API 会在内部处理凭据,插件无需自行获取。
调用
const result = await api.get_pskey(self_id, domain)
// Linux 账号:使用协议作用域明确选择。
const linuxResult = await api.forProtocol('linuxqq').get_pskey(self_id, 'qun.qq.com')
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
domain |
string | 是 | 目标域名 |
client_type |
string | 否 | WS 请求字段;SDK 通过 forProtocol('linuxqq') 指定,多协议账号应始终明确协议 |
返回值
{
domain: 'DOMAIN',
pskey: 'PSKEY',
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取媒体 RKey
get_rkey仅 Android读取框架后台已维护的媒体 RKey 缓存
读取当前账号用于私聊、群聊和媒体资源访问的 RKey。接口只返回框架登录后由后台刷新任务维护的缓存,不会因为插件调用而额外发送 RKey 请求。
调用
const keys = await api.get_rkey(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
返回数组;每项包含 type、type_id、rkey、created_at、ttl 和 expired。后台缓存尚未完成首次刷新或已经过期时会明确报错,调用方稍后重试即可。
RKey 属于敏感临时凭证,不应写入日志或长期保存。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取媒体 RKey(通用 action)
nc_get_rkey仅 Android与 `get_rkey` 使用同一套萌卡原生缓存
get_rkey 的另一公开 action,参数和返回值完全一致,并复用同一套萌卡 NT 媒体密钥缓存。
调用
const keys = await api.nc_get_rkey(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
详见 get_rkey。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取媒体 RKey 服务信息
get_rkey_server仅 Android读取私聊、群聊 RKey 与统一过期时间
以服务信息结构返回框架后台缓存中的私聊和群聊媒体 RKey,不会在 API 调用阶段新增 QQ 协议请求。
调用
const server = await api.get_rkey_server(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
name: 'Mengka NT',
private_rkey: '...',
group_rkey: '...',
expired_time: 1770000000,
}
expired_time 为两类 RKey 中较早的过期时间。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取最近会话
get_recent_contact仅 Android获取框架近期观察到的私聊与群聊会话
根据框架当前进程已经接收或观察到的群聊、私聊事件生成近期会话,不读取手机 QQ 数据库,也不向 QQ 请求会话列表。
调用
await api.get_recent_contact(self_id, count)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
count |
number | 否 | 返回会话数量,默认 10,范围 1 到 100 |
返回结果按最后消息从新到旧排列,群聊和私聊分别去重。lastestMsg 保持历史插件使用的字段拼写。
[
{
"peerUin": "106500",
"peerName": "测试群",
"msgTime": "1787620800",
"msgId": "123456789",
"lastestMsg": {
"message_type": "group",
"group_id": 106500,
"message": [{ "type": "text", "data": { "text": "测试" } }],
"raw_message": "测试"
}
}
]
缓存按账号隔离,保留 7 天且每账号最多 4096 条;框架重启后会从空缓存重新积累。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
设置好友备注
set_friend_remark仅 Android设置或清除指定好友的备注
设置或清除指定好友的备注。该接口使用 QQ Android 9.2.70 的好友备注协议,并在发送前把 QQ 号解析为真实 QQNT UID。
调用
await api.forProtocol('android').set_friend_remark({ self_id, user_id, remark })
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行操作的在线 Bot QQ 号 |
user_id |
number | 是 | 好友 QQ 号 |
remark |
string | 是 | 新备注;传空字符串会清除备注 |
返回值
成功时返回空数据:
null
如果目标不是当前账号的好友,或无法解析其 QQNT UID,接口会直接返回可读错误,不会把数字 QQ 号伪装成 UID 发送。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
处理好友申请
set_friend_add_requestAndroid + Linux QQ同意或拒绝好友申请,可在同意时设置备注
处理好友申请。框架按所选账号协议回读当前申请列表,匹配真实且待处理的 flag:Android 使用对应好友系统消息,Linux 使用原生申请查询与处理协议。不会借用另一个 Android 登录会话处理 Linux 请求。
调用
await api.call('set_friend_add_request', {
self_id: event.self_id,
client_type: event.client_type,
flag: event.flag,
approve: true,
remark: '新朋友',
})
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行操作的 Bot QQ 号 |
client_type |
string | 是 | 原事件的 android 或 linuxqq,不能替换为另一协议 |
flag |
string | 是 | 好友申请事件中的不透明请求标识,必须原样传入 |
approve |
boolean / string | 否 | 是否同意,默认 true;字符串 "false" 表示拒绝 |
remark |
string | 否 | 同意好友申请时设置的好友备注 |
返回
成功时返回空数据;申请已处理、flag 过期或不存在时返回明确错误。
Linux 的备注设置是同意后的独立步骤;若同意成功但备注失败,错误会明确说明申请已处理,不能再次同意。实际好友关系由列表回读和原生 friend_added 分别确认,不因处理 API 成功直接生成事件。
拒绝时传 approve: false。拒绝不会建立好友关系或产生 friend_added;已拒绝的旧 flag 不能再次处理。对方重新发起申请时,以新事件中的 flag 为准,不复用旧标识。
WARNING
不要自行生成或解析 flag。框架会在每次处理前重新查询 QQ 当前申请列表,避免使用已经失效的请求字段。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
主动申请加好友
send_friend_requestAndroid + Linux QQ提交好友申请,不等同于好友关系已建立
向指定 QQ 主动提交好友申请,不是同意已收到的申请。
v2.0.6 新增
本接口在 v2.0.5 基线上新增,已发布的 v2.0.5 不提供此 action。测试环境已验证 Android 与 Linux 发起申请、跨节点双 WS 事件投递、真实 flag 同意及双方好友列表回读。Linux 使用当前会话的原生 UID 请求,不借用 Android 会话。当前 Linux 仍需框架已解析目标 UID;完全陌生且没有 UID 缓存的账号尚未完成验收,解析失败会明确报错。请勿自动重试或批量发送申请。
调用
const result = await api.forProtocol('android').send_friend_request(
1060221, 2082083, '你好,请通过好友申请', '新朋友'
)
直接通过 WebSocket 调用时:
{
"type": "action",
"id": "friend-request-1",
"action": "send_friend_request",
"params": {
"self_id": 1060221,
"client_type": "android",
"user_id": 2082083,
"message": "你好,请通过好友申请",
"remark": "新朋友"
}
}
参数
以下为 SDK 的四个位置参数。WebSocket 请求另须在 params 内提供协议选择器 client_type:只接受 android 或 linuxqq。SDK 默认明确发送 android,协议作用域会覆盖此值;它不是第五个位置参数。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 发起申请的在线账号 |
user_id |
number | 是 | 目标 QQ,不能与发起账号相同 |
message |
string | 否 | 申请说明,默认空字符串,UTF-8 最多 127 字节,不允许空字符 |
remark |
string | 否 | 好友备注,默认空字符串,UTF-8 最多 127 字节,不允许空字符 |
框架负责账号路由、签名和登录票据。调用方不传专属 Key、原生数据包或节点绑定字段。调用前需要已认证的服务连接及指定协议在线账号。
返回语义
| 字段 | 说明 |
|---|---|
status |
submitted、policy_rejected、rejected 或 verification_required |
submitted |
仅表示原生接口是否确认提交;不表示已经成为好友或对方已收到事件 |
user_id |
目标 QQ |
policy |
原生目标好友验证策略值 |
result |
原生业务结果码,不伪造成功 |
error_code |
原生业务错误码 |
message |
原生错误说明(可能为空) |
示意成功数据:
{"status":"submitted","submitted":true,"user_id":2082083,"result":0,"error_code":0,"message":""}
verification_required 不会绕过验证码或账号风控,也不返回内部验证票据。参数错误、网络超时、签名失败、响应缺少业务结果或账号不匹配均返回 action 错误。超时代表结果未知,不能按发送失败立即重试。同一协议账号对同一目标在 30 秒内禁止重复提交。
当前支持原生无需验证(策略 0)及发送申请说明(策略 1)。问题答案验证或未知策略返回 verification_required,不会把申请说明当作问题答案提交。策略 0 的单向添加不保证接收方也建立关系,仍须回读确认。
策略 0 不产生待审批申请,不能等待 friend_request_received 或使用它不存在的 flag。原生 friend_added 按实际发生关系变化的账号分别投递;只有发起方新增关系时,不应要求接收方也收到新增事件。Android 和 Linux 发起的单向添加均已完成两个测试 QQ、双协议、跨节点和双 WS 实测;这不代表无缓存陌生账号、全部验证策略或全部事件已验收。
建议搭配
接收方订阅 friend_request_received 并声明 request 权限;只能使用真实事件携带的 flag 调用 处理好友申请。提交返回值不会生成 flag 或模拟接收事件。最后通过 获取好友列表 确认双方关系。可疑好友列表不是普通好友申请的完整列表。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
主动申请入群
send_group_join_request仅 AndroidAndroid 提交入群说明,不等同于账号已入群
主动申请加入群聊。v2.0.6 新增;v2.0.5 不支持此接口。
目前仅支持 Android 发起。Linux 调用明确返回 GROUP_JOIN_PROTOCOL_UNSUPPORTED,不将 Android 请求套用到 Linux 会话。
调用
const result = await api.forProtocol('android').send_group_join_request(
1060221, 305977791, '申请说明'
)
{
"action": "send_group_join_request",
"params": {
"self_id": 1060221,
"client_type": "android",
"group_id": 305977791,
"message": "申请说明"
}
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线账号 QQ,10000 至 4294967295 |
client_type |
string | 是 | 当前必须为 android |
group_id |
number | 是 | 群号,10000 至 4294967295 |
message |
string | 否 | 申请说明,默认空;有效 UTF-8,最多 255 字节,不含空字符;不截断文字 |
返回
{ "group_id": 305977791, "submitted": true, "status": "submitted", "result": 0 }
result 保留服务器业务状态。非零时 submitted: false、status: "rejected";缺少状态、响应异常和网络失败作为调用错误返回。submitted 仅表示提交成功,不代表管理员已同意或账号已经入群。
同一账号对同一群的提交间隔至少 60 秒,包含结果不确定的尝试。框架和 SDK 均不自动重试;超时后先查询群通知和实际成员状态,避免重复申请。验证码、问答、付费等策略没有自动绕过流程。
管理员通过 group_request_received 获取本次 request_id、request_type、request_extra,使用该事件的账号和协议调用 approve_group_apply 或 reject_group_apply。申请和成员事件以真实 QQ 数据为准,不因提交/审批成功直接生成。
验证范围
两个测试账号互换申请者和群主,已完成 Android 主动申请、群主 Android/Linux 接收、跨协议拒绝与同意、再次申请采用新编号、四会话成员关系确认及双正向/单反向 WS 投递验证。拒绝没有产生虚假加入事件;批准后群主和申请者均收到原生加入通知。Linux 主动提交是不支持的能力,不是等待开启的选项;邀请待审批等其他流程未包含在本次实测范围内。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
主动退群
leave_groupAndroid + Linux QQ当前账号退出群聊,禁止群主调用,不提供解散群能力
当前账号主动退出群聊。v2.0.6 新增;已发布 v2.0.5 不支持此接口。
调用
await api.forProtocol('android').leave_group({ self_id: 1060221, group_id: 305977791 })
// Linux 会话使用 api.forProtocol('linuxqq'),不会借用 Android 会话。
{
"action": "leave_group",
"params": { "self_id": 1060221, "client_type": "android", "group_id": 305977791 }
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 当前在线账号 QQ |
client_type |
string | 是 | android 或 linuxqq |
group_id |
number | 是 | 群号,1 至 4294967295 |
框架根据账号及协议选择实际运行节点,不传 node_id。操作前重新查询成员身份,仅允许普通成员和管理员退出;群主及无法确认的成员身份会被拒绝。本接口不提供解散群能力,群主需先完成所有权转让。
返回与事件
{ "group_id": 305977791, "submitted": true, "status": "submitted" }
该返回仅表示服务器确认请求,不证明成员变化事件已经送达。通过 get_group_member_list 回读成员关系,并监听真实原生通知产生的 group_member_left。包含明确原因的主动退群通知返回 reason: "left";退群账号自己的简略通知可能只有群号,此时省略 reason 和操作者字段,不得根据字段缺失推断主动退出或被移除。API 不根据请求成功合成事件。
群主调用返回 GROUP_OWNER_CANNOT_LEAVE。网络超时返回 GROUP_LEAVE_RESULT_UNKNOWN,必须先查询群成员状态,不自动重试。业务拒绝保留服务器错误码;空响应、格式错误或缺少明确状态均不视作成功。
验证状态
参数、身份保护、原生响应和四份 SDK 的契约测试已通过。测试环境的两个账号已分别通过 Android/Linux 主动退群、群主侧双协议接收正确的 reason: left、重新申请、审批和四会话成员回读;群主自身调用均被拒绝。
自身入口修复后,上述范围另通过两个运行节点、两条正向 WS 加一条反向 WS 对照,以及反向连接重连后交换账号协议再次操作。两轮三通道共 120 次事件投递、40 个账号范围内事件标识逐条一致,包含退群者自身通知;这仅覆盖本页已列出的退群、申请与恢复入群路径。
v2.0.6 已包含推送顺序、旧登录会话取消与成员事件去重提交顺序的修复。受影响的踢出、拒绝、新申请及批准恢复路径已完成双账号、双协议、两节点和三 WS 回归。此前缺少完整抓包的历史漏发不能反推为单一原因;未覆盖的外部客户端通知模板仍不属于此验证范围。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
修改群名
set_group_nameAndroid + Linux QQ设置群名称,以服务器确认及通知为准
修改群名。v2.0.6 新增;不能只替换 SDK 后调用 v2.0.5 服务。Android 和 Linux QQ 均使用明确的账号协议选择器,Android/Linux 已在双账号、跨节点及三 WS 的列明操作场景中验证,不代表所有外部客户端模板均可用。
await api.forProtocol('android').set_group_name({
self_id: 2082083, group_id: 1108676556, group_name: '测试群'
})
| 对象参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| self_id | number | 是 | 已登录账号 |
| group_id | number | 是 | 要管理的群 |
| group_name | string | 是 | 非空 UTF-8 文本,最多 60 字节 |
直接发送 WS action 时还必须传 client_type: android | linuxqq。账号需要具备 QQ 服务端允许的群管理权限。
成功返回 {success: true, group_id, group_name, read_back_verified: true}。只有提交后读回群名相符才返回成功。读回失败不代表修改未生效,请先查询确认,不要自动重复操作。参数错误、离线、网络超时或原生拒绝均返回 action 错误。
可搭配 get_group_list 和 group_name_changed;事件需声明 group_event。操作成功和真实事件投递分别验收,不通过 API 返回值合成事件。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置精华消息
set_group_essenceAndroid + Linux QQ设置或取消已缓存群消息的精华状态
设置或取消群精华消息。v2.0.6 新增;Android/Linux QQ 使用同一明确协议契约,Android/Linux 已在双账号、跨节点及三 WS 的列明操作场景中验证,不代表所有外部客户端模板均可用。
await api.forProtocol('android').set_group_essence({
self_id: 2082083, group_id: 1108676556, message_id: messageId, enabled: true
})
| 对象参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| self_id | number | 是 | 已登录账号 |
| group_id | number | 是 | 消息所在群 |
| message_id | number | 是 | 当前账号收到、发送或读取历史时由框架保存的群消息 ID |
| enabled | boolean | 是 | true 设置,false 取消,不提供默认值 |
直接 WS 调用还须提供 client_type: android | linuxqq。消息引用必须属于当前账号和指定群,不接受任意序列号、随机数或原生包。缓存失效时先重新获取群历史消息引用。
成功返回 {success: true, group_id, message_id, enabled},表示原生接口确认操作,不表示事件已投递。权限、参数、无效引用、超时和原生业务错误返回 action 错误;超时先读回,禁止盲目重试。通过 get_essence_msg_list 核对,订阅 group_essence_changed 时声明 group_event。取消仅操作自己明确选定的消息。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
戳一戳
send_pokeAndroid + Linux QQ向好友或群成员发送普通戳一戳
向好友或群成员发送普通戳一戳。v2.0.6 新增;Android/Linux QQ 使用同一明确协议契约,Android/Linux 已在双账号、跨节点及三 WS 的列明操作场景中验证,不代表所有外部客户端模板均可用。
await api.forProtocol('android').send_poke({self_id: 2082083, user_id: 1060221})
await api.forProtocol('android').send_poke({self_id: 2082083, user_id: 1060221, group_id: 1108676556})
| 对象参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| self_id | number | 是 | 已登录账号 |
| user_id | number | 是 | 目标 QQ |
| group_id | number | 否 | 群内戳一戳的群号;省略或 0 为私聊 |
直接 WS 调用还须提供 client_type: android | linuxqq。好友关系、群成员资格与频率限制由 QQ 服务端判定,不绕过风控,不应循环批量调用。
成功返回 {success: true, user_id, group_id};参数、网络、离线和原生拒绝返回 action 错误。超时结果未知,不自动重试。user_poked 事件需按会话声明 friend_event 或 group_event,提交成功不等同于真实事件已到达。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
处理可疑好友申请
set_doubt_friends_add_request仅 Android同意指定可疑好友申请
同意一条可疑好友申请。
调用
await api.set_doubt_friends_add_request(self_id, flag, true)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
flag |
string | 是 | 列表接口返回的原始标识 |
approve |
boolean | 否 | 当前仅支持 true |
成功返回 null。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
发布空间动态(完整参数)
send_qzone_msg仅 Android发布带图片、可见范围和指定好友范围的空间动态
发布可带图片、可见范围和指定好友范围的空间动态。
调用
const result = await api.send_qzone_msg(
self_id,
'动态正文',
['https://example.com/image.jpg'],
1,
[],
)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
content |
string | 否 | 动态文字,与图片至少填写一项 |
images |
string[] | 否 | 图片 URL 或框架可读取的文件来源 |
ugc_right |
number | 否 | 空间可见范围,默认 1 |
target_uins |
number[] | 否 | 指定可见好友列表 |
成功返回 { tid },可用于后续删除。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 发送成功只代表 QQ 服务端已受理;业务侧仍应记录 message_id,并按事件或查询结果确认后续状态。
删除空间动态
delete_qzone_msg仅 Android按动态 tid 删除本人空间动态
删除当前账号发布的空间动态。
调用
await api.delete_qzone_msg(self_id, tid)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
tid |
string | 是 | 发布接口返回的动态标识 |
成功返回 null。删除结果以再次查询空间动态为准。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
评论好友动态
comment_qzone_feed仅 Android评论指定动态
评论一条好友 QQ 空间动态,支持纯文字、纯图片及图文同时发送。
调用
const result = await api.comment_qzone_feed(self_id, feed, content, images)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
feed |
object | 是 | get_qzone_friend_feeds 返回的完整动态对象 |
content |
string | 否 | 评论文字;不发送文字时传空字符串 |
images |
array | 否 | 图片列表,可传公网 HTTP(S) URL 字符串,或 { url, width, height } 对象,最多 9 张 |
content 与 images 至少填写一项。动态内部所需的标识由框架根据 feed 自动处理。
返回值
{
self_id: 123456789,
comment_id: 'COMMENT_ID',
content: '评论内容',
images: [
{ url: 'https://example.com/image.jpg', width: 1080, height: 1080 },
],
created_at: 1710000000,
}
示例
const { feeds } = await api.get_qzone_friend_feeds(self_id)
// 纯文字
await api.comment_qzone_feed(self_id, feeds[0], '写得真不错', [])
// 纯图片
await api.comment_qzone_feed(self_id, feeds[0], '', [
'https://example.com/comment.jpg',
])
// 图文同时发送
const result = await api.comment_qzone_feed(self_id, feeds[0], '配图评论', [
{ url: 'https://example.com/comment.jpg', width: 1080, height: 1080 },
])
console.log(result.comment_id, result.images)
框架会下载图片并自动上传到当前账号的 QQ 空间媒体存储,再提交评论。图片地址必须能由框架服务器通过公网访问;不支持内网地址。本地文件需先放到可访问的 HTTP(S) 地址。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
设置 QQ 资料
set_qq_profile仅 Android设置当前账号昵称、性别和个性签名,并回读最新名片
设置当前 QQ Bot 的昵称、性别和个性签名。昵称与性别使用 QQ Android 9.2.70 的资料编辑协议;个性签名使用内容审核与富签名保存链路,并支持重复提交同一个值。
调用
const result = await api.set_qq_profile(self_id, nickname, personal_note, sex)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 否 | 在线 Bot QQ 号;当前连接只管理一个 Bot 时可省略 |
nickname |
string | 是 | 新 QQ 昵称,不能为空 |
personal_note |
string | 否 | 新个性签名;显式传入空字符串时清空签名 |
sex |
number | string | 否 | 0 未知、1 男、2 女;省略时不修改 |
返回值
{
success: true,
summary_card: {
nickname: '新的昵称',
sign: '新的个性签名'
}
}
框架在写入后重新读取 QQ 名片。QQ 当前把个性签名放在 richSign 中时,框架会自动解析并同步到标准 sign 字段。重复提交相同签名会直接返回成功,不会把 QQ 审核服务的重复内容回执误报为失败。
示例
await api.set_qq_profile(123456789, '萌卡机器人', '今天也要开心', 1)
资料修改会真实同步到 QQ
昵称、性别和个性签名都是账号级资料。调用前应明确提示管理员,并避免在定时任务中反复修改。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置 QQ 个性签名
set_self_longnick仅 Android按 QQ Android 9.2.70 的审核与保存链路设置或清空当前账号签名
设置或清空当前 QQ Bot 的个性签名。实现严格复用 QQ Android 9.2.70 的真实链路:先通过 Signature.auth 审核内容,再把服务端返回的 key 和审核后签名内容写入 ProfileService.SetRichSig。清空签名使用客户端独立的 OidbSvc.0x510_0 请求。
调用
const result = await api.set_self_longnick(self_id, longNick)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 否 | 在线 Bot QQ 号;当前连接只管理一个 Bot 时可省略 |
longNick |
string | 是 | 新个性签名;显式传入空字符串时清空签名 |
兼容参数名 long_nick,但新插件建议统一使用 longNick。
返回值
{
success: true,
summary_card: {
sign: '新的个性签名'
}
}
保存成功后框架会读取一次最新 QQ 名片。若 QQ 名片服务短暂延迟,接口仍返回 success: true,并在 readback_warning 中说明读取失败原因;可稍后调用 get_summary_card 再确认。
示例
// 设置签名
await api.set_self_longnick(123456789, '今天也要开心')
// 清空签名
await api.set_self_longnick(123456789, '')
内容会经过 QQ 审核
审核未通过时接口直接返回失败,不会继续发送保存请求。框架不会使用原始文本绕过审核,也不会把审核前的 RichStatus 数据直接写入 QQ。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取群聊列表
get_group_listAndroid + Linux QQ获取完整群聊列表
获取 Bot 的完整群聊列表。萌卡NT会自动完成分页。
调用
const result = await api.get_group_list(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
groups: [],
total_count: 0,
self_uin: 123456789,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群聊成员列表
get_group_member_listAndroid + Linux QQ获取指定群聊的成员
获取指定群的完整成员列表。
调用
const result = await api.get_group_member_list(self_id, group_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
返回值
{
group_id: 987654321,
members: [],
total_count: 0,
}
成员常用字段包括 uin、nickname、card、level、title、join_time 和 last_speak_time。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群聊系统通知
get_group_system_notifications仅 Android获取群聊申请与通知
获取 Bot 的群聊系统通知列表。
调用
const result = await api.get_group_system_notifications(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
notifications: [],
total_count: 0,
}
通知中的 request_id、request_type 与 request_extra 可用于处理入群申请。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
同意加入群聊申请
approve_group_apply仅 Android同意指定申请
同意入群申请。
调用
const result = await api.approve_group_apply(
self_id,
group_id,
request_id,
request_type,
request_extra,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
request_id |
number | 是 | 请求 ID |
request_type |
number | 是 | 请求类型 |
request_extra |
number | 否 | 附加请求标识 |
请求字段来自 group_notice/apply 事件或 get_group_system_notifications。
返回值
返回申请处理结果。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
拒绝加入群聊申请
reject_group_apply仅 Android拒绝指定申请
拒绝入群申请。
调用
const result = await api.reject_group_apply(
self_id,
group_id,
request_id,
request_type,
reason,
request_extra,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
request_id |
number | 是 | 请求 ID |
request_type |
number | 是 | 请求类型 |
reason |
string | 否 | 拒绝理由 |
request_extra |
number | 否 | 附加请求标识 |
返回值
返回申请处理结果。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
同意群聊邀请
approve_group_invite仅 Android同意好友发来的群聊邀请
同意好友发来的群聊邀请。
调用
const result = await api.approve_group_invite(self_id, group_id, msgseq)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 邀请加入的群聊 ID |
msgseq |
number | 是 | 邀请通知的请求序号 |
group_id 和 msgseq 从 get_group_system_notifications 返回的同一条邀请通知中取得。
框架会按 QQ Android 9.2.70 返回的实际通知类型处理,不再把邀请类型写死。
返回值
返回邀请处理结果。请求已处理或已失效时会返回错误,不会伪造成功结果。
测试环境已完成真实链路验证:框架向 1060221 发出群 106500 的邀请,用户在 QQ 客户端确认后,框架通过群成员查询确认该账号已入群。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
设置群聊管理员
set_group_adminAndroid + Linux QQ设置或取消管理员
设置或取消群聊管理员。
v2.0.6 检查 SSO 错误以及原生命令、服务号和显式状态;缺少状态、空响应、畸形响应及重复状态字段均按失败处理。非零服务状态保留错误码。网络或响应异常不能证明操作未执行,请先回读成员角色确认,不要直接重复操作。
操作响应和事件送达是独立结果。框架 API 发起的管理员修改通过服务器状态回读确认变化,已验证目标成员和群主的 Android/Linux 经双正向及单反向 WS 收到设置、取消和恢复事件。回读事件带有 source: "server_readback",详见群管理变化。其他客户端直接修改不属于此实测范围。
调用
const result = await api.set_group_admin(
self_id,
group_id,
target_uin,
set_admin,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
target_uin |
number | 是 | 目标成员 QQ 号 |
set_admin |
boolean | 是 | true 设置,false 取消 |
返回值
{
group_id: 987654321,
target_uin: 112233445,
set_admin: true,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
群聊打卡
group_sign仅 Android在指定群聊打卡
执行群聊打卡。
调用
const result = await api.group_sign(self_id, group_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
返回值
返回打卡文案、累计天数、群排名、详情地址与结构化响应字段。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
设置群聊成员禁言
set_group_muteAndroid + Linux QQ设置或取消成员禁言
设置或取消群聊成员禁言。
适用协议
Android 与 Linux QQ 均使用萌卡 NT 原生群管理链路执行。
调用
const result = await api.set_group_mute(
self_id,
group_id,
target_uin,
duration_sec,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
target_uin |
number | 是 | 目标成员 QQ 号 |
duration_sec |
number | 是 | 禁言秒数,0 取消禁言 |
返回值
{
group_id: 987654321,
target_uin: 112233445,
duration_sec: 600,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置群聊全员禁言
set_group_mute_allAndroid + Linux QQ开启或取消全员禁言
开启或取消全员禁言。
适用协议
Android 与 Linux QQ 均使用萌卡 NT 原生群管理链路执行。
调用
const result = await api.set_group_mute_all(self_id, group_id, mute)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
mute |
boolean | 是 | true 开启,false 取消 |
返回值
{ group_id: 987654321, mute: true }
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置群聊专属头衔
set_group_special_titleAndroid + Linux QQ设置或清除成员专属头衔
设置或清除群聊成员的专属头衔。框架解析目标成员的原生 UID,使用当前账号的登录会话执行;不会修改成员昵称或群名片。
调用
const result = await api.set_group_special_title(
self_id,
group_id,
user_id,
title,
)
success: true 表示服务端确认设置请求成功。空响应、畸形响应、命令/服务号不匹配及服务端拒绝均作为错误返回。设置成功不等于事件已投递;框架会回读实际成员头衔,确认变化后补发标记 source: 'server_readback' 的 group_title_changed,并与原生推送去重。设置与恢复已通过双账号、Android/Linux、跨节点及三 WS 验证;不承诺其他客户端的任意通知模板或断线期间事件必达。详见服务器回读确认。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
user_id |
number | 是 | 目标成员 QQ 号 |
title |
string | 是 | 专属头衔,传空字符串清除头衔 |
返回值
{
success: true,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
移出群聊成员
kick_group_memberAndroid + Linux QQ将指定成员移出群聊
将指定成员移出群聊,可同时拒绝该成员后续的加群申请。
协议与结果校验
修复 Linux 调用旧移除服务失败的问题,按指定群的成员列表取得目标 UID,在当前 Linux 会话内执行,不借用 Android 会话。方法名称与参数不变。
响应必须通过原生命令、群号、目标 UID 和逐成员结果校验;空响应、目标不匹配或服务端拒绝不会当作成功。若网络中断或响应无法确认,先查询群成员列表,不要自动重复移除。API 成功与 group_member_left 实际收到是两项不同检查;本接口不合成退出事件。
v2.0.6 已完成两个测试 QQ、Android/Linux、跨节点和双正向及单反向 WS 的踢出、拒绝新申请、再次申请及批准恢复验证。全部外部通知模板、邀请待审批等未覆盖分支不据此视为通过。
适用协议
Android 与 Linux QQ 均使用萌卡 NT 账号会话执行;调用前应确认 Bot 在目标群内具备移出成员权限。
调用
const result = await api.kick_group_member(
self_id,
group_id,
user_id,
reject_add_request,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
user_id |
number | 是 | 被移出成员的 QQ 号 |
reject_add_request |
boolean | 是 | true 表示同时拒绝该成员后续的加群申请 |
返回值
{
success: true,
}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
批量移出群聊成员
set_group_kick_membersAndroid + Linux QQ按顺序复用单人移出链路,单次最多 20 人
批量将指定成员移出群聊。该接口兼容 NapCat 同名 action,在 Android 9.2.70 协议下按成员顺序调用已经验证的单人移出群聊链路。
调用
const result = await api.set_group_kick_members(
self_id,
group_id,
user_ids,
reject_add_request,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
user_ids |
number[] | 是 | 被移出成员的 QQ 号数组,兼容别名 user_id,单次最多 20 个 |
reject_add_request |
boolean | 否 | 是否同时拒绝这些成员后续的加群申请,默认 false |
数组中的重复 QQ 会自动去重;不允许移出当前 Bot。执行过程中任一成员失败时,接口会停止并在错误信息中返回已完成数量和失败 QQ,避免调用方误判为全部成功。
返回值
全部成员处理成功时返回空对象:
{}
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
撤回群聊消息
recall_group_msgAndroid + Linux QQ撤回指定群聊消息
撤回群聊消息。
调用
const result = await api.recall_group_msg(
self_id,
group_id,
msg_seq,
msg_random,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
msg_seq |
number | 是 | 消息序列号 |
msg_random |
number | 是 | 消息随机数 |
消息标识可来自 send_group_msg 返回值、群聊消息事件或撤回事件。
返回值
{ success: true }
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
获取 @全体成员 剩余次数
get_group_at_all_remain仅 Android查询当前账号和群聊的实时 @全体成员权限与限额
查询当前 QQ 在指定群聊中使用 @全体成员 的权限与剩余次数。
const result = await api.get_group_at_all_remain({
self_id: 106606,
group_id: 106500,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行查询的在线 Bot QQ 号 |
group_id |
number | 是 | 目标群号 |
成功时返回:
{
"can_at_all": true,
"remain_at_all_count_for_uin": 20,
"remain_at_all_count_for_group": 20,
"prompt_message_for_uin": "剩余20次",
"prompt_message_for_group": "",
"show_at_all_label": true
}
次数和权限由 QQ 服务端根据账号身份、群设置与当前限额实时计算,框架不会自行推算。
该接口只读取权限与限额,不会发送 @全体成员 消息或修改群设置。当前仅支持 Android QQ。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群荣誉信息
get_group_honor_info仅 Android获取龙王、群聊之火、群聊炽焰和快乐源泉榜单
获取指定群聊的实时荣誉榜单。接口使用萌卡 NT 当前账号的 Android 登录态访问 QQ 官方群荣誉服务。
const honor = await api.get_group_honor_info(106606, 106500, 'all')
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 发起查询的在线 Bot QQ 号 |
group_id |
number | 是 | 目标群号 |
type |
string | 否 | all、talkative、performer、legend 或 emotion,默认 all |
返回萌卡原生结构:
{
"group_id": 106500,
"type": "all",
"current_talkative": {
"user_id": 106606,
"nickname": "群成员",
"avatar": "https://example.com/avatar.jpg",
"description": "9天,最长蝉联3天"
},
"rankings": {
"talkative": [],
"performer": [],
"legend": [],
"emotion": []
}
}
QQ 当前没有可用的“冒尖小春笋”查询端点,因此原生接口不接受 strong_newbie,也不保留只为兼容旧框架存在的空字段。
该接口只复用现有 PsKey 获取链路并执行 QQ 官方 HTTPS 查询。type=all 会依次读取四类榜单,但不会修改群资料或账号状态。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群精华消息
get_essence_msg_listAndroid + Linux QQ获取指定群聊的精华消息列表
获取指定群聊的精华消息列表。框架使用当前账号的登录态读取 QQ 群精华服务,自动读取分页。插件不需要提供 Cookie、SKey 或 PsKey,框架也不会把这些凭据返回给插件。
以下查询修复属于v2.0.6;v2.0.5 的旧查询链路仍可能返回
12002。
const messages = await api.get_essence_msg_list({
self_id: 1060221,
client_type: 'android',
group_id: 123456789,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
client_type |
string | 是 | android 或 linuxqq |
group_id |
number | 是 | 群号 |
成功时返回数组,每项包含 msg_seq、msg_random、sender_id、sender_nick、operator_id、operator_nick、message_id、operator_time 和 content。
content 将原生文本、QQ 表情、图片、文件与分享内容转换为消息段。发送者和操作者 QQ 使用服务器返回值;message_id 是执行查询账号自己的公共消息引用,不可跨账号复用。
登录态失效、网络失败、超时、非法消息标识或分页异常会返回错误,不会伪装成空列表。正常的空列表返回 []。单次读取最多 100 页;超过上限会明确报错,不返回看似完整的部分数据。
该接口只读取精华消息,不会设置或删除精华。v2.0.6支持 Android 和 Linux QQ;Linux 使用该协议会话自己的原生域名凭据,不要求 Android 的 SKey,也不会借用另一个协议账号的登录态。
两个测试 QQ 的 Android/Linux 会话、两个运行节点及两条正向 WS 已完成设置、查询存在、取消、查询消失的交叉验证;事件投递另行逐条校验。这不代表已发布的 v2.0.5 已包含修复。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群组今日打卡列表
get_group_signed_list仅 Android获取群聊当天的打卡成员和排名
获取指定群聊当天的打卡成员列表。接口使用萌卡 NT 当前账号的 Android 登录态访问 QQ 官方群打卡 TRPC Web 服务。
const members = await api.get_group_signed_list(1060221, 123456789)
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行查询的在线 Bot QQ 号 |
group_id |
number | 是 | 目标群号 |
成功时返回数组:
[
{
"user_id": 106606,
"nickname": "群内昵称",
"signed_at": 1788134400,
"rank": 1
}
]
rank 已按 QQ 服务端的编码规则换算为实际名次。接口不使用 OneBot 的 nick / time 兼容字段。
PsKey 缓存未命中时会复用框架已有的 OidbSvcTcp.0x102a,随后只请求 QQ 官方 HTTPS 服务;该接口不会执行群打卡,也不会修改任何群数据。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群文件系统信息
get_group_file_system_info仅 Android获取文件数量限制和存储空间使用情况
获取群文件数量限制和存储空间使用情况。
const info = await api.get_group_file_system_info({
self_id: 1060221,
group_id: 106500,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
成功时返回:
{
file_count: 33,
limit_count: 1500,
used_space: 207497295,
total_space: 10737418240,
}
空间字段单位为字节,数值来自 QQ 群文件服务端。
该接口只读取容量与文件计数,不会上传、移动、重命名或删除群文件。当前仅支持 Android QQ。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
创建群聊
create_group仅 Android创建普通 QQ 群,并可在创建成功后邀请成员
使用当前在线的安卓协议 Bot 创建普通 QQ 群。底层按 QQ 9.2.70 的创建群链路执行:先创建群聊,再按需邀请成员。
调用
const result = await api.create_group({
self_id: 1060221,
group_name: '萌卡 NT API 验证群',
description: '用于验证安卓协议群聊接口',
user_ids: [106606],
invite_message: 'API 联调邀请',
})
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行创建操作的在线 Bot QQ 号 |
group_name |
string | 是 | 群名称;也兼容 name |
description |
string | 否 | 群简介;也兼容 introduction |
user_id |
number | 否 | 创建成功后邀请的单个 QQ 号 |
user_ids |
number[] | 否 | 创建成功后邀请的 QQ 号列表,一次最多 20 个 |
invite_message |
string | 否 | 邀请附言;也兼容 message、reason |
group_option |
number | 否 | 创建时的入群验证选项;也兼容 verify_type |
group_class_ext |
number | 否 | 群分类扩展值;也兼容 classify |
返回值
没有填写邀请成员时:
{
created: true,
group_id: 987654321,
group_uin: 1234567890,
owner_id: 1060221,
group_size: 1,
group_name: '萌卡 NT API 验证群',
invite_attempted: false,
invite_success: false,
}
填写邀请成员时,返回值会额外包含 invite_user_ids 和 invite。创建群聊和邀请成员是两个独立阶段;如果群已创建但邀请失败,接口仍返回 created: true、新群的 group_id 以及 invite_error,调用方不应自动重试整个创建请求,以免生成重复群聊。
权限与风控
创建群聊、邀请成员是否成功由 QQ 服务端根据账号权限、频率和安全状态决定。接口不会绕过安全验证、邀请确认或账号风控。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
设置成员邀请策略
set_group_member_invite_policy仅 Android控制普通成员能否直接邀请他人入群
设置群聊普通成员的邀请策略。接口会先读取 Android QQ 群详情,只修改对应权限位,提交后再次读取并校验结果,避免覆盖其他群设置。
const result = await api.set_group_member_invite_policy({
self_id: 1060221,
group_id: 123456789,
policy: "require_approval",
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
policy |
string | 是 | disabled、require_approval、no_approval 或 no_approval_under_100 |
成功时返回群号、回读后的策略、底层权限位以及 read_back_verified: true。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置成员权限
set_group_member_permissions仅 Android单独开启或关闭成员邀请、上传等权限位
单独开启或关闭一个群成员权限。接口使用 Android QQ 9.2.70 群详情与群设置链路,并在提交后回读验证。
const result = await api.set_group_member_permissions({
self_id: 1060221,
group_id: 123456789,
permission: "invite",
allow: true,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
permission |
string | 是 | 当前支持 upload_album、temporary_session、create_group |
allow |
boolean | 是 | 是否允许 |
成功时返回修改后的权限位与 read_back_verified: true。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置新成员历史消息可见性
set_group_new_member_history_visibility仅 Android控制新成员是否能查看入群前历史消息
设置新加入群聊的成员是否可以查看入群前的历史消息。接口使用 Android QQ 9.2.70 的群设置链路,并在提交后回读校验。
const result = await api.set_group_new_member_history_visibility({
self_id: 1060221,
group_id: 123456789,
visible: true,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
visible |
boolean | 是 | 是否允许新成员查看历史消息;也兼容字段名 enable |
成功时返回群号、当前可见状态、底层群标志位以及 read_back_verified: true。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
设置群加群选项
set_group_add_option仅 Android设置入群验证方式、问题与答案
设置群聊的入群验证方式。请求使用 Android 9.2.70 群资料协议写入,并在写入后重新读取群资料确认生效。
await api.set_group_add_option({
self_id: 1060221,
group_id: 123456789,
add_type: 4,
group_question: "请说明来意",
group_answer: "",
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
add_type |
number | 否 | QQ 群资料中的入群验证类型,默认 0 |
group_question |
string | 否 | 入群问题 |
group_answer |
string | 否 | 预设答案 |
成功时返回群号、最终验证类型、问题、答案和 read_back_verified: true。只有群主或有相应权限的管理员可以修改。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置群搜索选项
set_group_search仅 Android设置群号和条件搜索开关
设置群聊的搜索开关。请求使用 Android 9.2.70 群资料协议写入,并在写入后重新读取确认。
await api.set_group_search({
self_id: 1060221,
group_id: 123456789,
no_finger_open: 1,
no_code_finger_open: 0,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
no_finger_open |
number | 二选一 | 按群号搜索开关值 |
no_code_finger_open |
number | 二选一 | 按条件搜索开关值 |
两个搜索字段至少填写一个;未填写的字段保持不变。成功响应包含最终值和 read_back_verified: true。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
设置机器人入群选项
set_group_robot_add_option仅 Android设置机器人账号入群时是否允许及是否需要审核
设置机器人账号加入群聊时的准入方式。接口使用 Android QQ 的 OidbSvcTrpcTcp.0xf00_3 写入,并通过 OidbSvcTrpcTcp.0xef0_1 回读确认服务器已应用设置。
await api.set_group_robot_add_option({
self_id: 1060221,
group_id: 123456789,
robot_member_switch: 0,
robot_member_examine: 2,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 QQ 账号 |
group_id |
number/string | 是 | 群号 |
robot_member_switch |
number | 二选一 | 0 允许机器人申请入群,1 禁止机器人入群 |
robot_member_examine |
number | 二选一 | 0 无需管理员审核,2 需要管理员审核 |
两个选项至少填写一个;未填写的字段不会写入,原设置保持不变。常用组合:
0 / 0:允许机器人直接入群。0 / 2:允许机器人申请,需管理员审核。1 / 2:禁止机器人入群。
成功返回 null,与 NapCat action 契约一致。返回成功前,框架已完成回读校验。只有群主或具备相应权限的管理员可以修改。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取群相册列表
get_qun_album_list仅 Android分页获取群相册及封面信息
分页获取群相册列表。接口直接调用 QQ Android 的 QunAlbum.trpc 服务,不依赖 PC QQ。
const result = await api.get_qun_album_list({ self_id: 1060221, group_id: 123456789, attach_info: '' })
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ |
group_id |
number | 是 | 群号 |
attach_info |
string | 否 | 上一页返回的游标,第一页留空 |
返回 album_list、attach_info 和 has_more。相册项包含 ID、名称、说明、上传数量、时间、创建者和封面信息。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群相册媒体列表
get_group_album_media_list仅 Android分页获取相册内的图片和视频
分页获取指定群相册中的图片和视频。
const result = await api.get_group_album_media_list({ self_id: 1060221, group_id: 123456789, album_id: 'album-id', attach_info: '' })
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ |
group_id |
number | 是 | 群号 |
album_id |
string | 是 | 相册 ID |
attach_info |
string | 否 | 上一页的 next_attach_info |
返回 media_list 和前后页游标。媒体项保留 lloc、batch_id、上传者、上传时间及图片/视频地址,供评论、点赞和删除接口使用。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
上传图片到群相册
upload_image_to_qun_album仅 Android使用当前 Android QQ 登录态分片上传图片
向已有群相册上传图片。框架使用当前 Android QQ 的 Qzone 登录态创建会话并分片上传。
await api.upload_image_to_qun_album({ self_id: 1060221, group_id: 123456789, album_id: 'album-id', album_name: '相册名称', file: 'https://example.com/a.jpg' })
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ |
group_id |
number | 是 | 群号 |
album_id |
string | 是 | 相册 ID |
album_name |
string | 是 | 相册名称 |
file |
string | 是 | HTTP(S)、file://、本地路径或 base64:// 图片 |
单文件上限 100 MiB。成功返回 photo_id 和图片地址。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
评论群相册媒体
do_group_album_comment仅 Android评论指定相册图片或视频
评论群相册中的指定媒体。
await api.do_group_album_comment({ self_id: 1060221, group_id: 123456789, album_id: 'album-id', lloc: 'media-lloc', content: '评论内容' })
self_id、group_id、album_id、lloc、content 均必填。lloc 从 get_group_album_media_list 的图片或视频封面信息中取得。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
点赞群相册媒体
set_group_album_media_like仅 Android点赞一批或指定相册媒体
点赞群相册的一批上传内容或其中一项媒体。
await api.set_group_album_media_like({ self_id: 1060221, group_id: 123456789, album_id: 'album-id', batch_id: '1234567890', lloc: 'media-lloc' })
self_id、group_id、album_id、batch_id 必填;lloc 可选。两者都可从媒体列表响应取得。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
取消群相册媒体点赞
cancel_group_album_media_like仅 Android取消一批或指定相册媒体的点赞
取消群相册媒体点赞。参数与 set_group_album_media_like 相同。
await api.cancel_group_album_media_like({ self_id: 1060221, group_id: 123456789, album_id: 'album-id', batch_id: '1234567890', lloc: 'media-lloc' })
lloc 为空时取消整批点赞;填写时取消指定媒体的点赞。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
删除群相册媒体
del_group_album_media仅 Android删除相册图片或视频
删除群相册中的图片或视频。
await api.del_group_album_media({ self_id: 1060221, group_id: 123456789, album_id: 'album-id', lloc: 'media-lloc' })
self_id、group_id、album_id、lloc 均必填。删除视频时可以填写视频 ID 或封面 lloc;框架会先读取媒体列表,补齐 QQ 删除协议需要的封面标识和批次 ID。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取群文件根目录
get_group_root_filesAndroid + Linux QQ获取根目录文件与文件夹,并自动处理分页
使用指定 Android 或 Linux QQ 在线会话获取群文件根目录。接口会自动处理 QQ 服务端分页,并分别返回文件与文件夹。
const result = await api.get_group_root_files({
self_id: 1060221,
group_id: 106500,
file_count: 50,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
file_count |
number | 否 | 单页请求数量,默认 50,范围 1-100 |
返回值包含 files 和 folders。文件字段包括 file_id、file_name、busid、file_size、upload_time、dead_time、modify_time、download_times、uploader、uploader_name 与 parent_folder_id;文件夹字段包括 folder_id、parent_folder_id、folder_name、creator、creator_name 和 total_file_count。
该接口是只读操作,账号必须已加入目标群并具有查看群文件的权限。
v2.0.6 对满页结束响应增加同位置窗口复核,file_count 仍用于初始请求,复核单次不超过 100 条。视图变化、重复记录、无效游标或末页完整性无法确认时返回错误;行为和验收限制见文件夹内容读取。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取群文件夹内容
get_group_files_by_folderAndroid + Linux QQ获取指定文件夹中的文件与子文件夹
使用指定 Android 或 Linux QQ 在线会话获取群文件夹中的文件与子文件夹。框架在账号实际节点请求原生群文件服务,不依赖其他协议的登录态或 PC QQ 本地数据库。
const result = await api.get_group_files_by_folder({
self_id: 1060221,
group_id: 106500,
folder_id: '/3d7e7839-1512-4e77-bb69-aa66124c603b',
file_count: 50,
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
folder_id |
string | 是 | 文件夹 ID;也兼容 folder |
file_count |
number | 否 | 单页请求数量,默认 50,范围 1-100 |
返回结构与 get_group_root_files 相同。接口会自动读取后续分页,不需要调用方维护分页游标。
分页与完整性
目录读取使用当前原生服务,支持 Android / Linux 在线会话。file_count 作为初始单页数量,遇到满页却标记结束的矛盾响应,会在同一偏移扩大窗口复核(单次最多 100 条),而不是直接返回残缺列表。满 100 条时再移动半个窗口,按原生顺序验证重叠的 50 条,然后继续确认尾部;不再仅因满 100 条而拒绝正常目录。已读取的文件与目录必须保持一致;视图矛盾、重复记录、游标停滞或无法确认末页完整性时返回错误。
整次目录读取总预算为 45 秒,调用方原有的更短截止时间仍然生效。限制按总条目 10000 条计算,而不是小页达到 100 页就截断;单次末页重叠复核另有 100 次上限。已实测 99/100/101 条目录在四会话、页大小 1/50/100 下的 36 份结果一致。更大规模、持续并发修改与极端陈旧计数仍需继续验收,不承诺无限目录大小。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
创建群文件夹
create_group_file_folder仅 Android由群主或管理员在根目录创建文件夹
在群文件根目录创建文件夹。
await api.create_group_file_folder({
self_id: 1060221,
group_id: 106500,
folder_name: 'API 测试资料',
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
folder_name |
string | 是 | 文件夹名称;也兼容 name,UTF-8 不超过 90 字节 |
成功时返回 ret_code: 0 以及本次提交的群号和文件夹名称。
群权限
QQ 服务端只允许群主或管理员创建群文件夹。普通成员调用会返回真实权限错误,框架不会使用其他在线 QQ 代替执行。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
删除群文件夹
delete_group_folder仅 Android按真实文件夹 ID 删除群文件夹
删除指定群文件夹。
await api.delete_group_folder({
self_id: 1060221,
group_id: 106500,
folder_id: '/3d7e7839-1512-4e77-bb69-aa66124c603b',
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
folder_id |
string | 是 | 文件夹 ID;也兼容 folder,不能传根目录 / |
成功时返回 ret_code: 0。
删除操作
QQ 服务端只允许群主或管理员删除文件夹。调用前应先通过目录查询确认 folder_id,不要使用名称猜测 ID;文件夹非空时是否允许删除由 QQ 服务端决定。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
上传群文件
upload_group_fileAndroid + Linux QQ通过 QQ Android 9.2.70 文件通道真实上传群文件
将本地文件或可下载的 HTTP(S) 文件真实上传到群文件。上传完成后,文件会直接出现在 QQ 群文件列表中。
const result = await api.upload_group_file({
self_id: 1060221,
group_id: 106500,
file: 'D:/Mengka-NT/files/report.txt',
name: 'report.txt',
folder: '/',
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
file |
string | 是 | 本地文件路径、file:// 地址或 HTTP(S) 下载地址;也兼容 file_path |
name |
string | 是 | 上传后显示的文件名;也兼容 file_name |
folder |
string | 否 | 目标文件夹 ID,默认 /;也兼容 folder_id、parent_folder_id |
upload_file |
boolean | 否 | 是否执行真实上传,默认 true;传 false 会直接返回错误 |
成功时返回 file_id、file_name、busid、file_size 和 parent_folder_id。这些字段可直接用于后续查询或删除。
账号与群权限
框架始终使用 self_id 指定的 QQ 执行上传,不会切换到其他在线账号。群文件容量、群身份和 QQ 服务端风控仍以该账号的实际结果为准。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
删除群文件
delete_group_file仅 Android删除群文件,缺省业务参数由框架自动查询补齐
删除指定群文件。
await api.delete_group_file({
self_id: 1060221,
group_id: 106500,
file_id: '/e2ca26cc-d974-4968-9b71-eec65c9e8590',
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
file_id |
string | 是 | 群文件 ID;也兼容 id |
busid |
number | 否 | 文件业务 ID;也兼容 bus_id,未填写时框架会自动查询 |
parent_folder_id |
string | 否 | 文件所在文件夹 ID;也兼容 folder_id、folder,未填写时框架会自动查询 |
成功时返回 ret_code: 0。仅提供 file_id 即可使用;框架会递归查询文件列表并补齐删除所需的业务 ID 和父文件夹。
删除权限
该操作会真实删除群文件。框架始终使用 self_id 指定的 QQ 执行,权限不足或文件不存在时会返回 QQ 服务端的真实错误。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
重命名群文件
rename_group_file仅 Android按文件 ID 重命名群文件
重命名指定群文件。
调用
await api.rename_group_file(self_id, group_id, file_id, '新文件名.zip')
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
file_id |
string | 是 | 群文件真实 ID |
new_name |
string | 是 | 新文件名 |
busid |
number | 否 | 文件业务 ID,省略时框架自动查询 |
current_parent_directory |
string | 否 | 当前目录 ID,省略时框架自动查询 |
成功返回 { ok: true }。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
移动群文件
move_group_file仅 Android在群文件目录之间移动文件
将指定群文件移动到另一目录。
调用
await api.move_group_file(self_id, group_id, file_id, target_parent_directory)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群号 |
file_id |
string | 是 | 群文件真实 ID |
target_parent_directory |
string | 是 | 目标目录 ID,根目录使用 / |
busid |
number | 否 | 文件业务 ID,省略时框架自动查询 |
current_parent_directory |
string | 否 | 当前目录 ID,省略时框架自动查询 |
成功返回 { ok: true }。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
修改群成员名片
set_group_cardAndroid + Linux QQ修改或清空指定成员在群内显示的昵称
修改指定群成员的群名片(群昵称),也可以传空字符串清空群名片。
修改其他成员时,当前 Bot 需要是群主或管理员;普通成员只能修改自己的群名片。最终权限由 QQ 群设置和服务器校验决定。
调用
const result = await api.set_group_card(
self_id,
group_id,
user_id,
card,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
group_id |
number | 是 | 群聊 ID |
user_id |
number | 是 | 目标成员 QQ 号 |
card |
string | 是 | 新群名片;传空字符串时清空群名片 |
返回值
{
success: true,
group_id: 106500,
user_id: 1060221,
card: '萌卡测试昵称',
}
清空群名片时,返回值中的 card 为 ''。
示例
await api.set_group_card(2082083, 106500, 1060221, '新群昵称')
// 清空群名片
await api.set_group_card(2082083, 106500, 1060221, '')
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取群公告
_get_group_notice仅 Android使用当前 Android QQ 登录态获取群公告
获取指定群聊的公告列表。接口使用萌卡 NT 当前账号的 Android 登录态访问 QQ 官方群公告服务,不依赖 NapCat、OneBot 或 PC QQ 本地数据库。
const notices = await api.get_group_notice(1060221, 123456789)
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行查询的在线 Bot QQ 号 |
group_id |
number | 是 | 目标群号 |
成功时返回公告数组:
[
{
"notice_id": "notice-id",
"sender_id": 106606,
"published_at": 1788134400,
"content": "公告内容",
"images": [],
"settings": {},
"read_count": 12
}
]
框架只返回一套原生字段,不提供 _get_group_notice 下划线别名,也不重复生成 OneBot 的 message.image / message.images 两套结构。
PsKey 缓存未命中时会复用框架已有的 OidbSvcTcp.0x102a 获取 qun.qq.com PsKey,随后只发起 QQ 官方 HTTPS 查询;接口不会新增 QQ 协议命令,也不会修改群公告。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
发布群公告
_send_group_notice仅 Android发布文字公告,并可附带本地、URL 或 Base64 图片
在指定 QQ 群发布公告。框架使用当前 QQ Android 9.2.70 登录态访问 QQ 官方群公告接口,不依赖 PC QQ 的本地服务。
const result = await api._send_group_notice({
self_id: 123456789,
group_id: 987654321,
content: '公告内容',
image: 'base64://...'
})
参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 当前在线 Bot QQ 号 |
group_id |
number | 是 | 目标群号 |
content |
string | 否 | 公告正文;与 image 不能同时为空 |
image |
string | 否 | 可选图片,支持框架目录内文件、HTTP(S) URL、base64:// 和 file:// |
返回
{
"notice_id": "公告 ID"
}
账号需要拥有发布群公告的权限。图片会先上传到 QQ 群公告图片接口,再将返回的图片 ID 和尺寸随公告正文发布。可用 _get_group_notice 回读,并用 _del_group_notice 删除。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
删除群公告
_del_group_notice仅 Android删除指定群聊中的公告
删除指定群聊中的公告。接口沿用当前 QQ Android 9.2.70 登录态访问 QQ 官方群公告接口,不依赖 PC QQ 能力。
await api._del_group_notice({
self_id: 1060221,
group_id: 123456789,
notice_id: "公告 ID",
})
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行请求的 QQ 账号 |
group_id |
number | 是 | 群号 |
notice_id |
string | 是 | _get_group_notice 返回的 notice_id |
成功时返回空数据。账号必须拥有删除该公告的管理权限;QQ 返回权限或登录态错误时,框架会保留错误码和提示,不会误报成功。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取 Bot 列表
get_bot_listAndroid + Linux QQ获取当前框架实例中的全部协议账号;不接受参数
获取当前框架实例中的全部 Bot 账号。插件 WS 服务不绑定账号节点;返回项中的 node_id 是账号自己的登录节点。
调用
const bots = await api.get_bot_list()
参数
无。2.0.3 已删除 all_nodes,传入任何参数都会失败。
返回值
返回账号数组。常用字段:
| 字段 | 说明 |
|---|---|
self_id |
Bot QQ 号 |
protocol_id |
当前协议 ID |
device_profile_id |
当前设备指纹 ID |
node_id |
账号登录节点 ID |
platform |
框架协议标识:android 或 linux |
client_type |
SDK 协议标识:android 或 linuxqq |
nickname |
Bot 昵称 |
status |
0 离线、1 在线、2 登录中 |
is_qq_vip |
是否已开通 QQ 会员 |
received, sent |
运行期收发消息计数 |
调用其他账号 API 时同时提交 self_id 与 client_type。框架会定位对应协议账号,并在该账号配置的登录节点上执行。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取 Bot 信息
get_bot_infoAndroid + Linux QQ获取指定 Bot 的运行信息
获取指定协议 Bot 的运行信息。框架根据 self_id + client_type 定位账号,并使用账号自己的登录节点。账号可以处于离线、登录中或在线状态。
调用
const bot = await api.forProtocol('android').get_bot_info(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | Bot QQ 号 |
返回值
{
self_id: 123456789,
protocol_id: 0,
device_profile_id: 1,
nickname: '示例账号',
status: 1,
login_time: 1710000000,
online_time: 3600,
last_active: 1710003600,
level: 42,
is_qq_vip: true,
friend_count: 100,
group_count: 20,
received: 1234,
sent: 567,
extra_info: '',
}
status:0 离线、1 在线、2 登录中。
is_qq_vip:是否已开通 QQ 会员,true 为已开通,false 为未开通。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取协议列表
get_protocol_listAndroid + Linux QQ获取可选协议
获取可用于创建或更新账号的协议列表。
调用
const protocols = await api.get_protocol_list()
参数
无。
返回值
返回完整协议数组。选择项目的数组下标即为 protocol_id。
const protocol_id = protocols.findIndex(item => item.type === 'TARGET_TYPE')
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取设备指纹列表
get_device_profile_listAndroid + Linux QQ获取可选设备指纹
获取可用于创建或更新账号的设备指纹列表。
调用
const profiles = await api.get_device_profile_list()
参数
无。
返回值
返回完整设备指纹数组。调用账号 API 时使用所选记录的 id 作为 device_profile_id。
每项还包含:
| 字段 | 说明 |
|---|---|
accountCount |
正在引用该指纹的账号数量 |
assignedAccounts |
关联账号数组,包含 self_id 与 platform |
当 accountCount > 0 时,系统管理接口 delete_device_profile 会拒绝删除,调用方应在界面中显示占用账号而不是只提供失败提示。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
添加账号
add_accountAndroid + Linux QQ创建账号并指定其登录节点
创建一个离线 Bot 账号,并指定该账号使用的登录节点。
调用
const account = await api.add_account({
self_id: 123456789,
password,
protocol_id,
device_profile_id,
node_id,
client_type: 'linuxqq',
})
参数
只接受对象参数,不再兼容旧的位置参数。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 5 到 12 位 QQ 号 |
password |
string | 是 | 账号密码 |
protocol_id |
number | 是 | 协议数组下标 |
device_profile_id |
number | 是 | 设备指纹记录 ID |
node_id |
number | 是 | 账号登录节点 ID;这是账号字段,不是插件服务绑定 |
client_type |
string | 否 | android 或 linuxqq,省略时为 Android |
框架会校验节点、设备指纹和协议记录是否存在。密码属于敏感值,不要写入 URL 或日志。
返回值
返回新账号的 self_id、protocol_id、device_profile_id、node_id 和初始运行状态。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
编辑账号
update_accountAndroid + Linux QQ编辑离线账号配置
更新一个离线 Bot 账号的协议、密码、设备指纹或登录节点。
调用
await api.update_account({
self_id: 123456789,
password,
protocol_id,
device_profile_id,
client_type: 'android',
target_client_type: 'linuxqq',
node_id,
})
参数
只接受对象参数,不再兼容旧的位置参数。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | QQ 号 |
password |
string | 是 | 新密码 |
protocol_id |
number | 是 | 新协议 ID |
device_profile_id |
number | 是 | 新设备指纹 ID |
node_id |
number | 否 | 目标登录节点 ID;省略时保留账号当前节点 |
client_type |
string | 否 | 当前协议:android 或 linuxqq,省略时为 Android |
target_client_type |
string | 否 | 修改后的协议;省略时保持当前协议 |
账号必须处于离线状态。node_id 只改变账号登录节点,不改变任何插件 WS 服务的作用域。
返回值
成功时返回空业务数据;失败时 action 结果包含明确错误信息。密码属于敏感值,不要写入 URL 或日志。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
停止账号会话
stop_account_loginAndroid + Linux QQ取消正在进行的登录,或下线已登录账号
停止指定 QQ 与协议当前正在进行的登录会话或下线已登录账号。
当前唯一 action 为 stop_account_login,旧名称 offline_account 已删除。
调用
const result = await api.stop_account_login(self_id, 'android')
// { stopped: true, status: 0 }
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
protocol |
string | 否 | android 或 linux,默认 android |
该接口用于取消等待扫码、滑块、短信或安全验证的流程,不删除账号或缓存。若会话已经结束,stopped 可能为 false。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
删除账号
delete_accountAndroid + Linux QQ删除指定协议的离线账号
删除当前插件所属节点下的离线账号。
调用
const self_id = 123456789 // 要删除的 Bot QQ 号
const result = await api.delete_account(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 账号 QQ 号;与 client_type 一起定位协议账号 |
账号必须处于离线状态。
返回值
{ code: 0, msg: '账号删除成功' }
失败时返回 { code: 1, msg: '错误信息' }。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
密码登录
login_accountAndroid + Linux QQ发起密码登录
对指定协议的离线账号发起密码登录。框架会在该账号自己的登录节点上执行。
调用
const self_id = 123456789 // 要登录的 Bot QQ 号
const result = await api.login_account(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 已创建且离线的 Bot QQ 号 |
返回值
{ code: Number, message: String }
验证状态可能额外包含 slider_url、identity_url、security_url 或 security_verify。
常见状态:
code |
含义 |
|---|---|
0 |
登录成功 |
140022008 |
需要滑块验证 |
140022007 |
需要身份验证 |
140022010 |
需要安全验证,查询安全验证方式 |
140022013 |
账号或密码错误 |
完整处理顺序见Bot 登录流程。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
检查登录缓存
check_cacheAndroid + Linux QQ检查本地登录缓存
检查账号的本地登录缓存是否完整有效。
调用
const self_id = 123456789 // 要检查的 Bot QQ 号
const result = await api.check_cache(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | Bot QQ 号;与 client_type 一起定位协议账号 |
返回值
{ valid: true }
仅在 valid === true 时调用 cache_login。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
缓存登录
cache_loginAndroid + Linux QQ使用本地缓存登录
使用本地缓存登录指定协议账号。框架会在该账号自己的登录节点上执行。
调用
const self_id = 123456789 // 要登录的 Bot QQ 号
const result = await api.cache_login(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 已创建且离线的 Bot QQ 号 |
返回值
成功:
{ code: 0, message: '登录成功' }
失败:
{
code: 1,
message: '错误信息',
cache_invalid: true,
}
cache_invalid 为 true 时改用 login_account。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
提交滑块验证
submit_sliderAndroid + Linux QQ提交滑块结果
提交滑块验证结果。
调用
const self_id = 123456789 // 正在登录的 Bot QQ 号
const result = await api.submit_slider(self_id, ticket, randstr)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在登录的 Bot QQ 号 |
ticket |
string | 是 | 滑块完成后返回的 ticket |
randstr |
string | 是 | 滑块完成后返回的 randstr |
返回值
返回结构与 login_account 一致。若返回另一种验证状态,继续按新的 code 处理。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
查询安全验证方式
get_security_verify_methodsAndroid + Linux QQ查询安全验证原因与可用方式
查询正在登录的 Bot 当前安全验证原因和可用验证方式。
调用
const self_id = 123456789 // 正在登录的 Bot QQ 号
const result = await api.get_security_verify_methods(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在等待安全验证的 Bot QQ 号 |
返回值
{
reason: {
prompt: '当前账号需要安全验证',
},
methods: {
prompt: '请选择验证方式',
verify_list: [4, 10],
sms_phone: {
sign: 'SMS_SIGN',
},
},
}
reason是QueryVerifyReason的原始结构化响应。methods是QueryVerifyList的原始结构化响应,包含当前可用的短信、扫码或其他验证方式。
常见状态:
methods.verify_list 包含值 |
含义 | 后续操作 |
|---|---|---|
4 |
支持接收短信(服务端下发验证码) | 用 methods.sms_phone.sign 调用 get_sms,verify_type 传 4 |
3 |
支持发送短信(用户用密保手机发送) | 用 methods.sms_phone.sign 调用 get_sms,verify_type 传 3 |
10 |
支持扫码验证 | 调用 create_login_qr 创建二维码,再调用 query_login_qr_status 查询状态 |
| 包含多个值 | 同时支持多种验证方式 | 选择任意一种可用方式 |
不包含 3、4、10 |
需要其他验证方式 | 使用 login_account 返回的 security_url 完成验证 |
3 和 4 共用 methods.sms_phone.sign,区别只在调用 get_sms / check_sms 时传的 verify_type。可用类型以 verify_list 为准,不要写死。
reason.prompt 或 methods.prompt 是当前验证原因或提示文案。QQ 返回的其他字段会按原始结构保留。
返回结构与 login_account 的 security_verify 字段一致。
完整流程见Bot 登录流程。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
创建登录二维码
create_login_qrAndroid + Linux QQ创建安全验证登录二维码
为正在等待安全验证的 Bot 创建登录二维码。
调用
const self_id = 123456789 // 正在登录的 Bot QQ 号
const result = await api.create_login_qr(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在等待安全验证的 Bot QQ 号 |
返回值
{
code: 0,
message: '二维码生成成功',
qr_url: 'https://accounts.qq.com/safe/scanresult?...',
guarantee_token: 'GUARANTEE_TOKEN',
expires_in: 180,
}
将 qr_url 渲染成二维码,并保留 guarantee_token 用于查询状态。二维码有效期单位为秒。
完整流程见Bot 登录流程。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
查询登录二维码状态
query_login_qr_statusAndroid + Linux QQ查询扫码状态并在确认后继续登录
查询 Bot 登录二维码的扫码状态。扫码确认后,服务端会自动继续 NTLogin。
调用
const self_id = 123456789
const result = await api.query_login_qr_status(self_id, guarantee_token)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在等待安全验证的 Bot QQ 号 |
guarantee_token |
string | 是 | create_login_qr 返回的轮询 token |
返回值
未扫码:
{ code: 0, message: '等待扫码', status: 'waiting', status_code: 0 }
已扫码、等待手机确认:
{ code: 0, message: '扫码成功,等待确认', status: 'scanned', status_code: 3 }
已失效:
{ code: 0, message: '二维码已失效', status: 'expired', status_code: 2 }
已确认时,status 为 confirmed,并返回与 login_account 相同的登录结果:
{ code: 0, message: '登录成功', status: 'confirmed', status_code: 1 }
收到 confirmed 或 expired 后应停止轮询。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
获取短信验证码
get_smsAndroid + Linux QQ下发安全验证短信
请求短信安全验证。
短信验证有两种类型,由 verify_type 指定,两者共用 get_sms / check_sms:
verify_type |
名称 | 说明 |
|---|---|---|
4 |
接收短信 | 服务端向密保手机下发验证码,用户把收到的验证码交回 |
3 |
发送短信 | 用户用密保手机把指定内容发送到指定号码,服务端回查是否收到 |
可用类型由 get_security_verify_methods 的 methods.verify_list 决定,不要写死。
调用
const self_id = 123456789 // 正在登录的 Bot QQ 号
// 接收短信
const result = await api.get_sms(self_id, 4, sign)
// 发送短信
const result = await api.get_sms(self_id, 3, sign)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在登录的 Bot QQ 号 |
verify_type |
number | 是 | 短信验证类型,4 接收短信,3 发送短信 |
sign |
string | 是 | security_verify.methods.sms_phone.sign |
verify_type 必填,且只接受 3 或 4,缺失或取值不合法会直接报错。
返回值
返回 GetSMS 的服务端原始响应,不作包装。
verify_type 为 4:
{
result: { state: 1, code: 1 },
sign: 'NEW_SMS_SIGN',
masked_phone: '166******00',
country_code: '86',
}
verify_type 为 3:
{
result: { state: 1, code: 1 },
sign: 'NEW_SMS_SIGN',
sms: '验证QQ',
send_to: '10690700511',
masked_phone: '166******00',
country_code: '86',
}
| 字段 | 说明 |
|---|---|
result.state |
1 为成功,其他值为失败,失败时 result.prompt 是原因 |
sign |
新的 sign,提交时必须用这个,不能沿用请求时传入的那个 |
sms |
仅 verify_type 为 3:需要用户发送的短信内容 |
send_to |
仅 verify_type 为 3:短信的接收号码 |
masked_phone |
打码后的密保手机号,用于提示用户 |
verify_type 为 3 时,需要引导用户用 masked_phone 对应的密保手机把 sms 的内容原样发送到 send_to,发送后再调用 check_sms 回查。
QQ 返回的其他字段会按原始结构保留。
完整流程见Bot 登录流程。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
提交短信验证码
check_smsAndroid + Linux QQ提交短信验证码并继续登录
提交短信安全验证,并继续登录。
verify_type 需要与 get_sms 时一致:
verify_type |
名称 | 提交内容 |
|---|---|---|
4 |
接收短信 | 提交用户收到的验证码 code |
3 |
发送短信 | 不提交 code,回查服务端是否已收到用户发出的短信 |
调用
const self_id = 123456789 // 正在登录的 Bot QQ 号
// 接收短信:提交用户收到的验证码
const result = await api.check_sms(self_id, 4, sms.sign, code)
// 发送短信:用户发完短信后回查,不需要 code
const result = await api.check_sms(self_id, 3, sms.sign)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在登录的 Bot QQ 号 |
verify_type |
number | 是 | 短信验证类型,4 接收短信,3 发送短信 |
sign |
string | 是 | get_sms 新返回的 sign |
code |
string | 视类型 | verify_type 为 4 时必填;为 3 时不需要传 |
verify_type 必填,且只接受 3 或 4,缺失或取值不合法会直接报错。
返回值
校验通过:服务端会自动继续 NTLogin Type 2,返回结构与 login_account 一致。
校验未通过:返回 CheckSMS 的服务端原始响应,不作包装。登录会话保留,可以用同一个 sign 重试。
{
result: {
state: 2,
code: 3,
prompt: '未收到短信,原因可能是:未使用密保手机发送;短信内容不正确;运营商不稳定。',
},
}
判断方式:出现 result.state 字段即为未通过,result.prompt 是可直接展示给用户的原因。
verify_type 为 3 时需要留出发送时间
用户发出短信后,服务端可能要几秒才能收到。此时 result.state 为 2、result.code 为 3,含义是「尚未收到」而非「验证失败」,属于可重试状态,应提示用户确认已用密保手机发送后再调用一次。
完整流程见Bot 登录流程。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
Android 扫描登录二维码
scan_qr仅 Android使用在线 Android Bot 扫描登录二维码
使用在线 Android Bot 识别一个 QQ 登录二维码。本接口是 Android 会话能力,不属于 Linux 原生账号管理链路。
调用
const androidApi = api.forProtocol('android')
const result = await androidApi.scan_qr(123456789, qrK)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行扫码动作的在线 Android Bot QQ 号 |
k |
string | 是 | 二维码中的 k 参数或包含 k 的完整 URL |
返回值
返回 QQ 的扫码结果,包括 code、message、status、设备名称和客户端信息。服务端提示可确认时,再调用 auth_qr。
不要传 client_type: 'linuxqq'。本接口不要自动高频重试:收到明确失败或二维码过期后,应停止当前流程并由用户重新获取二维码。
v2.0.6 修复
v2.0.6 修复平板扫码的 -10117(AppID 无效):读取同版本 Phone 协议的 appid,不把 subappid 当作 AppID,也不借用其他版本。协议目录必须保留相同 ver 的 Phone 项,缺少时明确报错。
该修复已通过两个 Android 平板测试账号授权各自 Linux 登录的完整流程验证;已发布 v2.0.5 尚不包含此修复。扫码成功仍需继续授权并查询原登录流程的最终状态,不能仅凭 code: 0 宣称 Linux 已上线。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 执行扫码或授权的 Android Bot 必须属于当前节点并处于在线状态;二维码参数 k 必须来自同一 Android 会话。该接口不参与 Linux 原生登录。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 不要把该接口用于 Linux QQ,也不要与 Linux 原生二维码轮询并发调用;高频重复提交可能触发 QQ 风控。
Android 授权登录二维码
auth_qr仅 Android使用在线 Android Bot 确认二维码授权
使用在线 Android Bot 确认一个已经扫描的 QQ 登录二维码。通常在 scan_qr 返回可确认状态后调用;本接口不属于 Linux 原生账号管理链路。
调用
const androidApi = api.forProtocol('android')
const result = await androidApi.auth_qr(123456789, qrK)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 执行授权动作的在线 Android Bot QQ 号 |
k |
string | 是 | 已扫描二维码中的 k 参数或完整 URL |
skip_phone_confirm |
boolean | 否 | 是否请求跳过手机端二次确认,默认 false;QQ 服务端可能忽略 |
返回值
返回 success、code、message、目标账号和设备信息。success: true 表示 Android 授权请求已受理,最终登录结果由二维码所属的原流程负责确认。
授权接口具有登录影响,不要自动无限重试。账号不一致、二维码过期或 Android Bot 离线时应重新开始完整流程。
v2.0.6同步修复平板协议扫码授权的 AppID 字段选择,使用同版本 Phone 项的 appid。两名测试账号均已完成扫码、授权、Linux 确认上线及双 WS 上线事件验证;最终账号状态仍应由 query_login_qr_status 或原登录流程确认。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 执行扫码或授权的 Android Bot 必须属于当前节点并处于在线状态;二维码参数 k 必须来自同一 Android 会话。该接口不参与 Linux 原生登录。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 不要把该接口用于 Linux QQ,也不要与 Linux 原生二维码轮询并发调用;高频重复提交可能触发 QQ 风控。
获取等级加速任务
get_level_tasksAndroid + Linux QQ获取 QQ 等级加速面板
刷新并获取当前 Bot 的 QQ 等级加速面板。
调用
const result = await api.get_level_tasks(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
uin: '123456789',
overall_info: {
total_days: 12.5,
vip_speed: 2,
base_days: 10,
extra_days: 2,
},
vip_info: { vip_list: [] },
base_info: { base_task_list: [] },
extra_info: { extra_task_list: [] },
is_freeze: false,
}
任务对象包含 title、sub_title、is_done、speed_days、jump_url 等字段。执行任务时使用任务的完整 title。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
执行等级加速任务
execute_level_tasksAndroid + Linux QQ执行指定的等级加速任务
按数组顺序执行指定的 QQ 等级加速任务。
调用
await api.execute_level_tasks(self_id, tasks)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
tasks |
string[] | 是 | 非空任务标题数组 |
框架会在执行前强制查询当前 QQ 等级,等级必须达到 16 级。低于 16 级时请求会被拒绝,任务不会执行;该限制同样应用于能够直接完成对应等级任务的原始 API,不能通过绕开本接口规避。
当前支持的任务标题:
去日签卡打一次卡每日登录QQ经典农场去免费小说看任一本书体验任一款小游戏15s看10秒漫剧发布一条空间说说点赞一条好友动态加一位好友去QQ会员福利社领福利券
建议从 get_level_tasks 返回的任务中选择标题。任务在本次调用内按数组顺序执行;任一任务报错时 Promise 会拒绝并包含任务标题。
返回值
全部执行成功时 Promise 解析为 null。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
注册滑块验证反代
register_captcha_proxy无需账号协议注册滑块反代并返回改写后的验证脚本
注册滑块验证反向代理:由后端抓取并改写 TCaptcha.js,把脚本中的验证域名指向插件自身的反代地址。
调用
const result = await api.register_captcha_proxy(
self_id,
url,
proxy_base,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 正在等待滑块验证的 Bot QQ 号 |
url |
string | 否 | 滑块验证 URL;缺省时使用后端当前登录流程中的滑块地址 |
proxy_base |
string | 否 | 滑块脚本中验证域名的反代地址前缀;缺省时使用默认反代前缀 |
返回值
{
uin: 123456789,
script: '改写后的 TCaptcha.js 内容',
}
script 为改写后的验证脚本,其验证域名已指向 proxy_base 对应的反代入口,前端可直接加载使用。
示例
const { uin, script } = await api.register_captcha_proxy(
123456789,
'https://ssl.qq.com/xxxx/slider?uin=123456789&sid=xxx',
'https://plugin-host.example.com/captcha',
)
需要账号处于登录中并已触发滑块验证;否则会返回错误。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
滑块验证反代请求
captcha_proxy无需账号协议反代转发滑块请求到腾讯验证服务
反向代理滑块页面发往腾讯验证服务的请求,由后端转发到 t.captcha.qq.com,并自动使用节点代理与登录会话 cookie。
调用
const result = await api.captcha_proxy(
self_id,
url,
method,
headers,
body,
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
url |
string | 是 | 目标请求地址(t.captcha.qq.com 下的路径) |
method |
string | 否 | HTTP 方法,默认 GET |
headers |
object | 否 | 需要透传的请求头,键值均为字符串 |
body |
string | 否 | 请求体,默认空 |
返回值
{
status: 200,
headers: { 'content-type': 'application/json' },
result: 'BASE64_ENCODED_BODY',
}
result 为响应体的 base64 编码;headers 仅包含响应头的首个取值。
示例
const resp = await api.captcha_proxy(
123456789,
'https://t.captcha.qq.com/cap_union_new_verify',
'GET',
{ Referer: 'https://example.com/' },
)
const body = Buffer.from(resp.result, 'base64').toString('utf-8')
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 不依赖 Bot 在线,但插件连接必须已授权;涉及文件时,路径或 URL 必须能被萌卡 NT 后端访问。
建议搭配
常见失败原因
- 插件未授权或连接已断开
- 后端无法读取给定路径或远程资源
- 请求超时或参数格式不符合接口要求
注意事项
获取插件上下文
get_plugin_context无需账号协议读取当前服务、节点、契约版本、可用管理 action 与管理端地址
读取当前插件服务的管理 API 上下文,适合在管理端启动时确认连接目标与契约版本。
v2.0.6 的 management_api_version 为 1,available_actions 共 47 项,包含 get_summary_card 和 get_user_agent。插件必须检查所需 action 是否在列表中,不能仅因版本字段为 1 就假定全部能力存在。该列表是管理能力子集,不是全部 227 个公开 action。
调用
const context = await api.get_plugin_context()
返回值
{
service_id: 1,
service_name: 'mengka-user-system',
management_api_version: 1,
available_actions: ['get_plugin_context', 'get_account_management_context', 'get_node_list'],
admin_base_url: 'http://127.0.0.1:7891'
}
available_actions 是当前版本的能力发现列表,不是逐项授权清单。当前服务通过 Token 认证后可直接调用这些管理 API。插件服务不再返回 node_id;账号 action 根据 self_id + client_type 使用账号自身登录节点。system_management 与 allowed_actions 已删除。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取账号管理上下文
get_account_management_context无需账号协议一次读取账号、协议、指纹和节点快照
一次读取插件账号管理页所需的框架快照,避免分别请求账号、协议、指纹和节点时得到不同时刻的数据。
调用
const context = await api.get_account_management_context()
返回值
{
api_version: 1,
accounts: [],
protocols: [],
device_profiles: [],
nodes: []
}
accounts 使用框架账号列表的完整字段和样式数据;插件前端不应自行删减字段或重新推导协议、节点与运行状态。当前插件应要求 api_version === 1。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
创建账号归属验证二维码
create_account_recovery_qr无需账号协议创建只用于证明 QQ 归属的临时二维码
创建一个只用于证明 QQ 归属的临时二维码。该链路使用临时 Linux 设备身份,不读写账号的持久设备指纹。
调用
const recovery = await api.create_account_recovery_qr()
返回值
{
recovery_token: 'temporary-token',
url: 'https://example.qq.com/qr',
state: 'waiting_for_scan',
expires_at: '2026-09-04T08:00:00Z'
}
前端应将 url 渲染为二维码,并使用 recovery_token 调用 query_account_recovery_qr_status。二维码只验证 QQ 归属,不执行登录、不修改密码、不生成或保存登录票据。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
查询账号归属验证
query_account_recovery_qr_status无需账号协议查询扫码状态,确认后只返回 QQ 号
查询账号归属验证二维码状态。扫码并在手机 QQ 确认后,只返回已验证的 QQ 号。
调用
const result = await api.query_account_recovery_qr_status(recovery.recovery_token)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
recovery_token |
string | 是 | create_account_recovery_qr 返回的临时会话令牌 |
返回值
// 等待扫码或确认
{ state: 'waiting_for_scan', verified: false }
// 手机 QQ 已确认
{ state: 'confirmed', verified: true, self_id: 106606 }
当 verified 为 true 时,插件可将框架中该 self_id 的全部协议账号数据归属给当前用户。不应只归属某一条 Android 或 Linux 记录。过期、取消或无效会话不得归属账号。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
获取节点列表
get_node_list无需账号协议获取全部节点及账号统计,不返回代理密码
获取框架全部节点及账号统计。
调用
const nodes = await api.get_node_list()
返回字段
| 字段 | 说明 |
|---|---|
id, name, enabled |
节点标识、名称和启用状态 |
proxy_enabled, proxy_type |
是否使用代理及 http/socks5 类型 |
host, port, proxy_username |
代理连接信息 |
remark, last_check |
备注与最近检测结果 |
account_count, online_account_count |
账号总数与在线数 |
返回值永不包含 proxy_password。需要编辑时,密码栏应默认留空并以“留空表示保留”提示用户。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 节点查询永不返回代理密码;更新时省略 proxy_password 表示保留,明确传空字符串表示清除。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
创建节点
create_node无需账号协议创建直连或 HTTP/SOCKS5 代理节点
创建直连或代理节点。
调用
const node = await api.create_node({
name: '华东节点',
enabled: true,
proxy_enabled: true,
proxy_type: 'socks5',
host: '127.0.0.1',
port: 1080,
proxy_username: 'user',
proxy_password: 'secret',
remark: '业务节点'
})
参数
name 必填。启用代理时,proxy_type 只支持 http 或 socks5,并必须提供有效的 host 与 1–65535 端口。
关闭代理(proxy_enabled: false)时无需提交代理字段:proxy_type 省略或为空时默认保存为 http,port 省略或为 0 时默认保存为 8080。明确提供的有效类型、端口、地址和认证信息会保留;这些字段只有启用代理后才用于连接。代理类型不支持其他值,端口必须在 1–65535 范围内(直连的 0 按上述默认值处理)。
const directNode = await api.create_node({
name: '直连节点',
enabled: true,
proxy_enabled: false
})
// directNode.proxy_type === 'http'; directNode.port === 8080
成功返回节点详情,但不会回显代理密码。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 节点查询永不返回代理密码;更新时省略 proxy_password 表示保留,明确传空字符串表示清除。
更新节点
update_node无需账号协议更新已停用节点,代理密码支持保留或清除
更新现有节点配置。
调用
const node = await api.update_node({
id: 2,
name: '华东节点',
enabled: false,
proxy_enabled: true,
proxy_type: 'http',
host: 'proxy.example.com',
port: 8080,
remark: '维护中'
})
规则
id与name必填;节点必须先停用再编辑。- 停用启用中的节点时,除
enabled: false外应提交原配置;不能同时修改名称、代理设置或备注。上例用于编辑已经停用的节点。 proxy_enabled: false时,proxy_type省略或为空默认保存为http,port省略或为0默认保存为8080;明确提供的有效代理设置会保留,不会因关闭代理而被清空。proxy_type仅支持http、socks5,有效端口为 1–65535。- 更新是完整配置提交;省略普通代理字段按空值或上述默认值处理,不表示保留原值。旧直连节点的空类型、零端口与
http / 8080视为等价,停用时自动规范化,无需手动修改数据库。 - 省略
proxy_password表示保留已保存的密码。 - 明确传入
proxy_password: ''表示清除密码。 - 成功返回节点详情,但不会回显代理密码。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 节点查询永不返回代理密码;更新时省略 proxy_password 表示保留,明确传空字符串表示清除。
删除节点
delete_node无需账号协议删除已停用且未被账号引用的节点
删除已停用且未被账号引用的节点。
调用
const result = await api.delete_node(node_id)
// { deleted: true, id: node_id }
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
number | 是 | 节点 ID |
启用中的节点或仍有关联账号的节点会被框架拒绝删除。调用前可结合 get_node_list 显示占用数量。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 节点查询永不返回代理密码;更新时省略 proxy_password 表示保留,明确传空字符串表示清除。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
测试节点延迟
test_node_latency无需账号协议测试节点代理 TCP 连接延迟
测试节点代理地址的 TCP 连接延迟,并更新节点最近检测状态。
调用
const result = await api.test_node_latency(node_id)
// { latency_ms: 42, node: { ... } }
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
number | 是 | 节点 ID |
仅对已启用代理的节点有效,连接超时为 8 秒。该数值表示代理端口可连接耗时,不等同于 QQ 业务请求延迟。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 节点查询永不返回代理密码;更新时省略 proxy_password 表示保留,明确传空字符串表示清除。
创建设备指纹
create_device_profile无需账号协议创建可选自定义名称的随机设备指纹
使用框架与前端“一键生成”相同的规则创建随机设备指纹。当前唯一 action 为 create_device_profile,旧名称 generate_device_profile 已删除。
调用
const profile = await api.create_device_profile({ name: '账号 106606 指纹' })
name 可省略;省略时框架自动生成名称。返回完整指纹记录,其 id 可直接用于 add_account。每个账号应使用独立指纹,避免多人复用。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
删除设备指纹
delete_device_profile无需账号协议删除未被任何账号使用的设备指纹
删除未被任何账号使用的设备指纹。
调用
const result = await api.delete_device_profile(profile_id)
// { deleted: true, id: profile_id }
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
number | 是 | 设备指纹 ID |
只要存在账号引用,框架就会拒绝删除。先通过 get_device_profile_list 查看 accountCount 与 assignedAccounts。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
获取账号设置
get_account_settings无需账号协议读取缓存登录、自动登录和离线清理设置
读取框架级账号运行设置。
调用
const settings = await api.get_account_settings()
返回值
{
cacheLogin: true,
autoLogin: true,
privacyMode: false,
silentMode: false,
autoDeleteOffline: false,
autoDeleteOfflineMinutes: 60
}
这些设置作用于整个框架,不是当前插件的本地偏好。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
更新账号设置
update_account_settings无需账号协议更新框架级账号设置并校验依赖关系
更新框架级账号运行设置。只提交需要修改的字段即可。
调用
const settings = await api.update_account_settings({
cacheLogin: true,
autoLogin: true,
privacyMode: false,
silentMode: false,
autoDeleteOffline: true,
autoDeleteOfflineMinutes: 60
})
autoDeleteOfflineMinutes 范围为 1–10080。开启 autoLogin 前必须开启 cacheLogin;关闭缓存登录会同时关闭自动登录。成功返回保存后的完整设置。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
获取账号离线通知
get_account_offline_notificationAndroid + Linux QQ读取指定 QQ 与协议的离线邮件通知设置
读取指定 QQ 与协议的离线邮件通知设置。
调用
const preference = await api.get_account_offline_notification(self_id, 'linux')
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
protocol |
string | 否 | android 或 linux,默认 android |
返回值
{
selfId: 106606,
platform: 'linux',
offlineEnabled: true,
email: 'notice@example.com',
defaultEmail: '106606@qq.com',
effectiveEmail: 'notice@example.com'
}
email 为用户保存的值;留空时 effectiveEmail 使用 defaultEmail。Android 与 Linux 设置相互独立。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
更新账号离线通知
update_account_offline_notificationAndroid + Linux QQ更新指定 QQ 与协议的离线邮件通知设置
更新指定 QQ 与协议的离线邮件通知设置。
调用
const preference = await api.update_account_offline_notification(
self_id,
{ offlineEnabled: true, email: 'notice@example.com' },
'android',
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
options.offlineEnabled |
boolean | 否 | 是否发送离线邮件 |
options.email |
string | 否 | 通知邮箱;留空使用 QQ@qq.com |
protocol |
string | 否 | android 或 linux,默认 android |
返回结构与 get_account_offline_notification 相同。非空邮箱必须是完整地址;Android 与 Linux 设置相互独立。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
清理账号缓存
clear_account_cacheAndroid + Linux QQ清理指定 QQ 和协议的本地登录缓存
清理指定 QQ 与协议的本地登录缓存。
调用
const result = await api.clear_account_cache(self_id, 'linux')
// { cleared: true }
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
protocol |
string | 否 | android 或 linux,默认 android |
第二个参数支持 android 或 linux,SDK 会转换为框架 client_type。同一 QQ 的两条协议缓存相互独立;清理后下次登录可能需要重新扫码或验证。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
提交身份滑块
submit_account_identity_captchaAndroid + Linux QQ提交身份验证滑块结果
向指定账号的身份验证流程提交滑块结果。
调用
const result = await api.submit_account_identity_captcha(
self_id,
ticket,
randstr,
'android'
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
ticket |
string | 是 | 滑块验证票据 |
randstr |
string | 是 | 滑块随机串 |
protocol |
string | 否 | android 或 linux,默认 android |
ticket 与 randstr 必须来自当前账号同一次验证会话。过期或跨会话复用会被拒绝。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
提交身份手机号
submit_account_identity_phoneAndroid + Linux QQ提交身份验证手机号并请求短信
向指定账号的身份验证流程提交手机号并请求下一步短信验证。
调用
const result = await api.submit_account_identity_phone(
self_id,
mobile,
'86',
'android'
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
mobile |
string | 是 | 手机号 |
area_code |
string | 否 | 国际区号,默认 86 |
protocol |
string | 否 | android 或 linux,默认 android |
area_code 默认 86。手机号属于敏感信息,不应写入 URL、前端持久缓存或业务日志。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
确认身份短信
confirm_account_identity_smsAndroid + Linux QQ确认身份验证短信已完成
确认指定账号的身份验证短信步骤已完成。
调用
const result = await api.confirm_account_identity_sms(
self_id,
mobile,
'86',
'android'
)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
mobile |
string | 是 | 已提交的手机号 |
area_code |
string | 否 | 国际区号,默认 86 |
protocol |
string | 否 | android 或 linux,默认 android |
必须与 submit_account_identity_phone 使用同一账号、协议、手机号和登录会话。确认结果由 QQ 服务端返回。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
重试身份验证登录
retry_account_identity_verifyAndroid + Linux QQ使用验证结果重试账号登录
在身份验证完成后使用验证参数重试登录。
调用
const result = await api.retry_account_identity_verify({
self_id,
client_type: 'android',
login_type: 2,
extra: { verify_sign }
})
login_type 与 extra 必须来自当前登录会话的验证结果。成功返回 Bot 信息;业务失败返回 code、message 与 extra_info,传输或权限失败会抛出错误。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
调用账号安全验证
open_account_security_accessAndroid + Linux QQ调用指定 SsoSecureAccess 验证类型
为指定账号调用底层 SsoSecureAccess 安全验证能力。
调用
const result = await api.open_account_security_access({
self_id,
client_type: 'android',
type: 'QueryVerifyList',
data: {}
})
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
client_type |
string | 否 | android 或 linuxqq |
type |
string | 是 | 当前登录流程支持的安全验证类型 |
data |
object | 否 | 该验证类型要求的业务参数 |
不要允许普通用户任意填写 type 或原始 data;管理插件应按已知验证步骤生成表单并校验输入。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
重试安全验证登录
retry_account_security_verifyAndroid + Linux QQ使用安全验证结果重试账号登录
在安全验证完成后使用验证参数重试登录。
调用
const result = await api.retry_account_security_verify({
self_id,
client_type: 'android',
login_type: 2,
extra: { verify_sign }
})
该接口与 retry_account_identity_verify 使用同一重试契约,仅用于不同的前端验证阶段。成功返回 Bot 信息;业务失败返回 code、message 与 extra_info。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
获取账号授权租约
get_account_access_list无需账号协议获取当前服务创建的账号授权租约
获取当前插件服务创建的账号授权租约。不会读取其他插件服务的租约。
调用
const all = await api.get_account_access_list()
const oneQQ = await api.get_account_access_list({ self_id })
每项包含 service_id、self_id、platform、owner_id、enabled、expires_at、metadata、updated_at 和 created_at。platform 为 android 或 linux。
同一 QQ 的 Android 与 Linux 是两条独立租约。列表可用于插件断线恢复后的周期对账。
协议与使用指南
- 适用协议
- 无需账号协议
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 授权租约按 self_id 与 platform 独立;同一 QQ 的 Android 和 Linux 权益不能互相替代。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
设置账号授权租约
set_account_accessAndroid + Linux QQ为指定 QQ 与协议创建或更新授权租约
创建或更新当前插件服务对指定 QQ 与协议的授权租约。
调用
const lease = await api.set_account_access({
self_id,
client_type: 'linuxqq',
owner_id: 'plugin-user-42',
enabled: true,
expires_at: '2026-10-01T00:00:00+08:00',
metadata: { source: 'order', order_id: 'M202609030001' }
})
规则
- 框架中必须已经存在相同
self_id与协议的账号。 enabled省略时为true;expires_at可省略表示无到期时间。- 时间支持 RFC 3339、
YYYY-MM-DD HH:mm:ss和YYYY-MM-DDTHH:mm:ss。 - 租约被停用或过期后,框架会阻止重新登录并停止已接管账号;未创建过任何插件租约的普通框架账号不受影响。
metadata只放追踪标识,不要保存令牌、密码或支付密钥。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 授权租约按 self_id 与 platform 独立;同一 QQ 的 Android 和 Linux 权益不能互相替代。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 该操作会修改 QQ 侧状态;调用前校验目标 ID,并避免在失败重试时重复执行。
清除账号授权租约
clear_account_accessAndroid + Linux QQ清除当前服务对指定 QQ 与协议的租约
清除当前插件服务对指定 QQ 与协议的授权租约。
调用
const result = await api.clear_account_access({
self_id,
client_type: 'linuxqq'
})
// { cleared: true }
只删除当前服务的对应租约,不影响其他服务。清除和设置“已停用租约”的业务语义不同:若要明确禁止已接管账号登录,应使用 set_account_access({ enabled: false })。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 授权租约按 self_id 与 platform 独立;同一 QQ 的 Android 和 Linux 权益不能互相替代。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
获取账号最近日志
get_account_recent_logsAndroid + Linux QQ获取指定 QQ 与协议最近 200 条账号日志
获取指定 QQ 与协议最近的账号运行日志。
调用
const result = await api.get_account_recent_logs(self_id, 'linux')
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 目标 QQ |
protocol |
string | 否 | android 或 linux,默认 android |
返回值
{
self_id,
platform: 'linux',
logs: [
{ id: 321, text: '账号已下线', created_at: '2026-09-03 12:00:00' }
]
}
最多返回最近 200 条。日志用于故障定位,不应向普通用户展示内部敏感信息;同一 QQ 的 Android 与 Linux 日志分别查询。
协议与使用指南
- 适用协议
- Android + Linux QQ
- 使用前准备
- 插件服务必须先使用框架服务 Token 完成 WebSocket 认证。当前契约不使用 system_management 开关或 allowed_actions 逐项授权。
const targetApi = api.forProtocol('linux') // 或 'android'原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- 服务 Token 无效或 WebSocket 连接已断开
- 插件与框架 management_api_version 不匹配
- 目标节点、账号或协议状态不符合管理操作要求
注意事项
- 这是跨节点或框架级管理能力;服务端必须以服务 Token 认证为边界,不能依赖前端按钮显隐,所有变更都应记录审计日志。
- 同一 QQ 可同时运行 Android 与 Linux;务必显式选择协议,避免把操作发送到错误会话。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取宠物资料
get_pet_profile仅 Android获取本人宠物资料
获取本人宠物资料。
调用
const result = await api.get_pet_profile(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
pet_id: 'PET_ID',
pet_name: '小卡',
user_id: '123456789',
birthday_at: 1700000000,
gender: 2,
avatar_url: 'https://example.com/avatar.png',
personality: '小太阳',
personality_url: 'https://example.com/personality.png',
species: '蒜头鹅',
job_name: '小乞丐',
level: { level: 7, current_exp: 20, level_exp: 100, exp_rate: 0.2 },
medals: [
{
medal_id: 'MEDAL_ID',
name: '初见',
progress: '1',
category: '成长',
image_url: 'https://example.com/medal.png',
requirement: '达成条件',
description: '勋章说明',
},
],
traits: ['粘人程度'],
}
主档案接口异常时,框架会自动读取 QQ 的宠物缓存档案以保证 pet_id 可用;缓存档案只保证返回 pet_id、pet_name 和 avatar_url,其他字段可能为空或省略。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取宠物勋章图鉴
get_pet_medal_gallery仅 Android获取全部勋章及获得、佩戴状态
获取本人宠物的完整勋章图鉴,以及每枚勋章的获得和佩戴状态。
调用
const result = await api.get_pet_medal_gallery(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
pet_id: 'PET_ID',
medals: [
{
medal: {
medal_id: 'MEDAL_ID',
name: '成长达人',
progress: '3',
category: '成长',
image_url: 'https://example.com/medal.png',
requirement: '达到三级',
description: '勋章说明',
},
acquired: true,
equipped: false,
},
],
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取宠物数值
get_pet_vitals仅 Android根据 pet_id 获取本人或好友宠物的心情、饱腹、清洁和金币
根据宠物 pet_id 获取当前数值。既可查询自己的宠物,也可查询好友的宠物。
调用
const result = await api.get_pet_vitals(self_id, pet_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
pet_id |
string | 是 | 要查询的宠物 ID,可传自己或好友的 pet_id |
self_id 只用于选择发起请求的在线 Bot;实际数值查询目标由 pet_id 决定。自己的 pet_id 可从 get_pet_profile 返回值获取,好友的 pet_id 可从 get_friend_pet_profile、get_pet_pk_friends 或 get_pet_pk_strangers 返回值获取。
框架会分别读取基础数值区和货币区,因此一次调用会产生两次底层查询。旧版只传 self_id 的调用仍兼容为查询本人宠物,新代码应明确传入 pet_id。
返回值
{
mood: 100,
hunger: 100,
cleanliness: 100,
total: 100,
gold: 315,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取宠物三维属性
get_pet_attributes仅 Android获取力量、智力、魅力等成长属性
获取本人宠物的力量、智力、魅力等成长属性。属性名称由 QQ 宠物服务下发。
调用
const result = await api.get_pet_attributes(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
pet_id: 'PET_ID',
attributes: [
{ group: 1, name: '力量', value: 88 },
{ group: 2, name: '智力', value: 99 },
{ group: 3, name: '魅力', value: 77 },
],
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取食物目录
get_pet_food_catalog仅 Android获取食物目录与库存
获取宠物食物目录与库存。
调用
const result = await api.get_pet_food_catalog(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
biscuit_count: 10,
feed_count: 10,
message: '',
foods: [
{ name: '饼干', food_id: '1', balance: 10 },
],
}
food_id、resource_id 和 name 均可作为喂食参数。QQ 未下发默认饼干目录时,框架会补充名称 饼干 和 food_id 1。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
给宠物喂食
feed_pet仅 Android使用指定名称或 ID 的食物喂食
给宠物喂食。
调用
const result = await api.feed_pet(self_id, pet_id, food)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
pet_id |
string | 是 | get_pet_profile 返回的宠物 ID |
food |
string | 是 | get_pet_food_catalog 返回的食物名称、food_id 或 resource_id |
返回值
{
success: true,
pet_id: 'PET_ID',
food_name: '饼干',
food_id: '1',
message: '',
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
购买宠物食物
buy_pet_food仅 Android按食物名称或 ID 购买宠物食物
使用宠物金币购买饼干。QQ 当前购买协议只支持饼干,其他食物只能使用已有库存。
调用
const result = await api.buy_pet_food(self_id, pet_id, food, count)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
pet_id |
string | 是 | - | get_pet_profile 返回的宠物 ID |
food |
string | 是 | - | 饼干的名称、food_id 或 resource_id |
count |
number | 否 | 1 |
购买数量,范围为 1–999 |
返回值
{
success: true,
pet_id: 'PET_ID',
food_name: '饼干',
food_id: '1',
balance: 10,
gold: 300,
bought: 1,
cost_gold: 15,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取洗护用品目录
get_pet_bath_catalog仅 Android获取洗护用品与价格
获取宠物洗护用品目录。
调用
const result = await api.get_pet_bath_catalog(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
[
{
item_id: 'ITEM_ID',
name: '香皂片',
image_url: 'https://example.com/item.png',
gold_price: 2,
clean_gain: 10,
mood_gain: 1,
description: '香皂片:清洁值+10,心情值+1',
default_count: 10,
step: 1,
minimum: 1,
maximum: 99,
silhouette_url: 'https://example.com/silhouette.png',
selected_preview_url: 'https://example.com/selected.png',
soaping_url: 'https://example.com/soaping.png',
},
]
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取洗护用品库存
get_pet_bath_inventory仅 Android获取洗护用品持有数量
获取宠物洗护用品库存。
调用
const result = await api.get_pet_bath_inventory(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
[
{ item_id: 'ITEM_ID_1', name: '香皂片', count: 10 },
{ item_id: 'ITEM_ID_2', name: '沐浴球', count: 0 },
]
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
给宠物洗护
bathe_pet仅 Android按名称或 ID 使用洗护用品
使用洗护用品给宠物洗护。
调用
const result = await api.bathe_pet(self_id, pet_id, item, count)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
pet_id |
string | 是 | get_pet_profile 返回的宠物 ID |
item |
string | 是 | get_pet_bath_catalog 返回的用品名称或 item_id |
count |
number | 否 | 使用数量,默认 1,范围 1~99 |
返回值
{
success: true,
pet_id: 'PET_ID',
item_name: '香皂片',
item_id: 'ITEM_ID',
count: 1,
cleanliness: 100,
mood: 100,
remaining: 9,
completed: true,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
购买洗护用品
buy_pet_bath_item仅 Android按名称或 ID 购买洗护用品
购买宠物洗护用品。
调用
const result = await api.buy_pet_bath_item(self_id, pet_id, item, count)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
pet_id |
string | 是 | - | get_pet_profile 返回的宠物 ID |
item |
string | 是 | - | get_pet_bath_catalog 返回的用品名称或 item_id |
count |
number | 否 | 1 |
购买数量,范围为 1–999 |
返回值
{
success: true,
pet_id: 'PET_ID',
item_name: '香皂片',
item_id: 'ITEM_ID',
count: 1,
result: 0,
order_id: 'ORDER_ID',
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取活动概览
get_pet_activity_overview仅 Android获取学习或打工概览
获取宠物学习或打工概览。
调用
const result = await api.get_pet_activity_overview(self_id, activity)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
activity |
string | 是 | school / 学习 或 work / 打工 |
返回值
{
activity: 'school',
current_stage: 1,
current_career_type: 0,
last_sub_event_type: 0,
entries: [
{
name: '初级学园',
scene_code: 6100,
status_code: 0,
message: '',
stage: 1,
},
],
}
current_career_type 和 last_sub_event_type 主要用于打工场景;未下发的可选字段会省略。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取活动选项
get_pet_activity_options仅 Android获取可选课程、岗位或冒险
获取宠物当前可选的课程、岗位或冒险。
调用
const result = await api.get_pet_activity_options(self_id, activity, friend_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
activity |
string | 是 | school / 学习、work / 打工 或 adventure / 冒险 |
friend_id |
number | 否 | 雇佣的好友 QQ 号,仅打工和冒险可用 |
返回值
{
activity: 'school',
career_name: '初级学园 1年级',
options: [
{
name: '蹦蹦跳跳体能课',
icon_url: 'https://example.com/icon.png',
cost: '体力 -10',
duration: '1小时',
duration_seconds: 3600,
reward: '力量 +5',
description: '课程说明',
warning: '',
can_do: true,
unavailable_reason: '',
sub_event_type: 6101,
},
],
}
warning 始终返回。空字符串表示 QQ 服务端没有下发软警示;非空时保留 0x9ab2_1 选项 #17 的原始文案。它与 unavailable_reason 不同:前者是可继续执行时的疲劳等软提示,后者是当前不可执行的硬拦原因。
| 字段 | OIDB 字段 | 说明 |
|---|---|---|
warning |
选项 #17 |
疲劳等软警示;无警示时为 "" |
unavailable_reason |
选项 #51 |
选项不可执行的原因 |
sub_event_type |
选项 #52 |
发起活动时使用的子事件类型 |
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
开始宠物活动
start_pet_activity仅 Android开始学习、打工或冒险
开始宠物学习、打工或冒险。
调用
const result = await api.start_pet_activity(self_id, activity, option_name, friend_id, sub_event_type)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
activity |
string | 是 | school / 学习、work / 打工 或 adventure / 冒险 |
option_name |
string | 否 | 活动选项中的名称;与 sub_event_type 至少传一个 |
friend_id |
number | 否 | 雇佣的好友 QQ 号,仅打工和冒险可用 |
sub_event_type |
number | 否 | get_pet_activity_options 返回的稳定子事件类型;传入后优先按此字段选项 |
返回值
{
success: true,
pet_id: 'PET_ID',
activity: 'school',
option_name: '蹦蹦跳跳体能课',
sub_event_type: 6101,
story_id: '6100_xxx',
started: true,
hired_friend_id: '',
hired_pet_id: '',
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取活动状态
get_pet_activity_status仅 Android获取当前活动状态
获取宠物当前活动状态。
调用
const result = await api.get_pet_activity_status(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
story_id: '6400_xxx',
state_code: 0,
remaining_seconds: 0,
duration_seconds: 0,
started_at: 0,
recallable: false,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
结算宠物活动
settle_pet_activity仅 Android结算当前活动
结算宠物当前活动。
调用
const result = await api.settle_pet_activity(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
success: true,
pet_id: 'PET_ID',
story_id: '6700_xxx',
settled: true,
reward_gold: 20,
}
reward_gold 仅在冒险任务(story_id 以 6700_ 开头)结算时返回,数值直接解析自本次结算奖励,不通过结算前后余额差值推算。学习和打工结算保持原返回结构。
当前没有可结算活动时返回错误。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
鼓励活动中的宠物
encourage_pet_activity仅 Android鼓励当前活动中的宠物
鼓励活动中的宠物。
调用
const result = await api.encourage_pet_activity(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
success: true,
credit: 1,
messages: ['鼓励成功'],
toast: '',
}
当前没有可鼓励活动时返回错误。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取宠物疲劳状态
get_pet_fatigue_status仅 Android获取学习/打工目录下发的疲劳档位与收益倍率
读取 QQ 宠物学习/打工目录下发的疲劳警示,并解析当前疲劳档位和收益倍率。
框架会同时读取可用打工职业和当前学习阶段的目录,合并两边所有非空 warning,并采用其中最严重的疲劳档位。疲劳来源是目录选项的 warning,不是 unavailable_reason。
调用
const result = await api.get_pet_fatigue_status(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
返回值
{
fatigued: true,
tier: 8,
benefitRate: 0.25,
todayHours: 8,
reason: '今日已打工8小时,后续收益为25%',
warnings: ['今日已打工8小时,后续收益为25%'],
}
| 字段 | 说明 |
|---|---|
fatigued |
是否进入疲劳收益档位 |
tier |
8 表示 8 小时档,12 表示 12 小时档,未疲劳为 0 |
benefitRate |
当前收益倍率:1、0.25 或 0.1 |
todayHours |
从服务端警示文本中解析出的今日累计小时数 |
reason |
最严重疲劳档位对应的原始警示;只有非档位警示时取首条,无警示时为“未检测到疲劳警示” |
warnings |
打工和学习目录中的所有非空警示,去重并保留服务端原文 |
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取 PK 好友列表
get_pet_pk_friends仅 Android获取可 PK 的好友
获取可进行宠物 PK 的好友列表。
调用
const result = await api.get_pet_pk_friends(self_id, cursor)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
cursor |
string | 否 | '' |
上一页返回的 next_cursor |
返回值
{
friends: [
{
pet_id: 'pet-123',
pet_name: '小卡',
user_id: '123456789',
nickname: '昵称',
dominant_type: 1,
power: 10,
pet_status: 1,
pet_resolved: true,
},
],
next_cursor: 'NEXT_CURSOR',
has_more: false,
source: 'pet_pool',
}
source 为 pet_pool 时,列表来自宠物服务并已携带真实宠物资料。宠物服务未返回候选项时,框架会返回普通 QQ 好友基础列表,source 为 qq_friend_fallback、pet_resolved 为 false;后续调用 PK 接口时,框架会根据 user_id 自动查询真实宠物资料。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取推荐 PK 对手
get_pet_pk_strangers仅 Android获取宠物服务推荐的陌生人对手
获取 QQ 宠物服务推荐的陌生人 PK 对手。该接口与好友候选使用同一官方命令,但使用推荐对手模式。
调用
const result = await api.get_pet_pk_strangers(self_id, cursor)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
cursor |
string | 否 | 空字符串 | 上一页返回的 next_cursor |
返回值
{
friends: [
{
pet_id: 'PET_ID',
pet_name: '对手宠物',
user_id: '123456789',
nickname: '对手昵称',
dominant_type: 1,
power: 66,
pet_resolved: true,
},
],
next_cursor: 'NEXT_CURSOR',
has_more: true,
source: 'pk_stranger_pool',
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取宠物互动消息
get_pet_interaction_messages仅 Android获取来访、投喂等互动动态
获取本人宠物的来访、投喂、洗护等互动动态。
调用
const result = await api.get_pet_interaction_messages(self_id, limit)
参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
self_id |
number | 是 | - | 在线 Bot QQ 号 |
limit |
number | 否 | 20 |
返回数量,范围 1~50 |
返回值
{
limit: 20,
messages: [
{
user_id: '123456789',
segments: [{ type: 'text', text: '来看你了' }],
timestamp: 1700000000,
message_id: 'MESSAGE_ID',
pet_name: '小萌',
event_type: 7,
},
],
}
segments 是 QQ 服务下发 JSON 的结构化结果;若上游返回的内容不是合法 JSON,框架会保留到 raw_segments。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
获取宠物 PK 数值
get_pet_pk_power仅 Android根据 pet_id 获取本人或好友宠物战力
根据宠物 pet_id 获取 PK 战力。既可查询自己的宠物,也可查询好友的宠物。
调用
const result = await api.get_pet_pk_power(self_id, pet_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
pet_id |
string | 是 | 要查询的宠物 ID,可传自己或好友的 pet_id |
self_id 只用于选择发起请求的在线 Bot;实际战力查询目标由 pet_id 决定。自己的 pet_id 可从 get_pet_profile 返回值获取,好友的 pet_id 可从 get_friend_pet_profile 或 get_pet_pk_friends 返回值获取。
旧版只传 self_id 的调用仍兼容为查询本人宠物,新代码应明确传入 pet_id。当服务端返回的 power 为 0 或缺失时,框架抛出 pk_power_missing,调用方不应把该目标判定为可挑战。
返回值
{
dominant_type: 0,
power: 10,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
戳一戳好友宠物
poke_friend_pet仅 Android与好友宠物互动
戳一戳好友宠物。
调用
const result = await api.poke_friend_pet(self_id, friend_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
friend_id |
number | 是 | 好友 QQ 号 |
返回值
{
success: true,
friend_id: 123456789,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取好友宠物资料
get_friend_pet_profile仅 Android获取好友宠物资料与当前数值
获取好友宠物资料与当前数值。
调用
const result = await api.get_friend_pet_profile(self_id, friend_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
friend_id |
number | 是 | 好友 QQ 号 |
客户端版本限制
该接口必须调用 QQ 的好友宠物资料协议,部分 Android 运行版本会返回 code=1000120。pet_id 不能替代这里的好友 QQ,也不能凭空还原宠物资料和当前数值。
只需要喂食、洗护、访问或 PK 时,可以从 get_pet_pk_friends 或调用方的好友宠物缓存取得 pet_id,然后使用这些操作新增的 friend_pet_id 参数绕过资料解析。
返回值
{
friend_id: '123456789',
pet_id: 'PET_ID',
pet_name: '好友宠物',
avatar_url: 'https://example.com/avatar.png',
personality: '活泼',
species: '蒜头鹅',
job_name: '职业名称',
vitals: {
mood: 100,
hunger: 90,
cleanliness: 88,
total: 278,
gold: 0,
},
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 本地路径按后端主机解释;插件与框架不在同一主机时,请传后端可访问的 HTTP(S) 地址。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
给好友宠物喂食
feed_friend_pet仅 Android使用指定食物给好友宠物喂食
使用指定食物给好友宠物喂食。
调用
const result = await api.feed_friend_pet(self_id, friend_id, food, friend_pet_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
friend_id |
number | 是 | 好友 QQ 号 |
food |
string | 是 | get_pet_food_catalog 返回的食物名称、food_id 或 resource_id |
friend_pet_id |
string | 否 | 已缓存的好友宠物 ID;传入后跳过受客户端版本限制的好友资料解析 |
不传 friend_pet_id 时保持原行为:框架先从宠物好友池或好友资料接口解析真实宠物 ID。已有本地好友宠物缓存时,建议同时传 friend_id 与 friend_pet_id。
返回值
{
success: true,
friend_id: '123456789',
pet_id: 'PET_ID',
pet_name: '好友宠物',
food_name: '饼干',
food_id: '1',
message: '',
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
给好友宠物洗护
bathe_friend_pet仅 Android使用指定用品给好友宠物洗护
使用指定洗护用品给好友宠物洗护。
调用
const result = await api.bathe_friend_pet(self_id, friend_id, item, count, friend_pet_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
friend_id |
number | 是 | 好友 QQ 号 |
item |
string | 是 | get_pet_bath_catalog 返回的用品名称或 item_id |
count |
number | 否 | 使用数量,默认 1,范围 1~99 |
friend_pet_id |
string | 否 | 已缓存的好友宠物 ID;传入后跳过受客户端版本限制的好友资料解析 |
friend_id 仍是好友 QQ 号,不能改传宠物 ID。缓存直连必须同时提供好友 QQ 和 friend_pet_id,以保留洗护协议需要的双方身份。
返回值
{
success: true,
friend_id: '123456789',
pet_id: 'PET_ID',
pet_name: '好友宠物',
item_name: '香皂片',
item_id: '1',
count: 1,
cleanliness: 100,
mood: 100,
remaining: 9,
completed: true,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
访问好友宠物
visit_friend_pet仅 Android访问好友的宠物页面
访问好友的宠物页面。
调用
const result = await api.visit_friend_pet(self_id, friend_id, friend_pet_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
friend_id |
number | 是 | 好友 QQ 号 |
friend_pet_id |
string | 否 | 已缓存的好友宠物 ID;传入后跳过受客户端版本限制的好友资料解析 |
访问上报同时需要好友 QQ 和好友宠物 ID,因此 friend_pet_id 是新增可选参数,不会替代或改变原 friend_id 的语义。
返回值
{
success: true,
friend_id: '123456789',
pet_id: 'PET_ID',
pet_name: '好友宠物',
visited: true,
rule_count: 1,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
发起宠物 PK
start_pet_pk仅 Android与指定好友的宠物开始 PK
与指定好友的宠物开始 PK。
调用
const result = await api.start_pet_pk(self_id, friend_id, friend_pet_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
friend_id |
number | 是 | 对手 QQ 号 |
friend_pet_id |
string | 否 | 已缓存的对手宠物 ID;传入后跳过受客户端版本限制的好友资料解析 |
PK 协议需要“对手 QQ + 对手 petId”成对传输;保留 friend_id 并额外传 friend_pet_id 才是安全的缓存直连方式。
返回值
{
success: true,
pet_id: 'SELF_PET_ID',
friend_id: '123456789',
friend_pet_id: 'FRIEND_PET_ID',
friend_pet_name: '好友宠物',
story_id: '6900_xxx',
started: true,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取宠物 PK 状态
get_pet_pk_status仅 Android查询指定 PK 任务状态
获取宠物 PK 状态。
调用
const result = await api.get_pet_pk_status(self_id, story_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
story_id |
string | 是 | start_pet_pk 返回的 PK 任务 ID |
返回值
{
success: true,
pet_id: 'PET_ID',
story_id: '6900_xxx',
status_received: true,
response_empty: false,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。
结算宠物 PK
settle_pet_pk仅 Android结算指定 PK 任务
结算指定的宠物 PK。
调用
const result = await api.settle_pet_pk(self_id, story_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Bot QQ 号 |
story_id |
string | 是 | start_pet_pk 返回的 PK 任务 ID |
返回值
{
success: true,
pet_id: 'PET_ID',
story_id: '6900_xxx',
settled: true,
}
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
获取 QQ 农场登录 code
get_qq_farm_code仅 Android获取一个新的 32 位 QQ 农场登录 code
获取一个新的 QQ 经典农场登录 code。框架使用当前 Android QQ 会话,通过固定的农场协议完成签名与组包,并只返回格式校验通过的 32 位十六进制 code。
调用
const result = await api.get_qq_farm_code(self_id)
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
self_id |
number | 是 | 在线 Android Bot QQ 号 |
不支持传入 cmd、data 或其他原始协议参数。
返回值
{
code: '0123456789abcdef0123456789abcdef',
}
code 是农场登录凭据,每次调用都可能重新签发。插件应按敏感信息处理,仅在需要登录农场时使用,不要写入日志、公开接口或持久化明文。
错误
- 当前账号不是在线 Android QQ。
- 当前协议版本信息不完整。
- 取码请求超时或签名失败。
- 服务端没有返回 32 位十六进制 code。
协议与使用指南
- 适用协议
- 仅 Android
- 使用前准备
- 目标 Bot 必须属于当前插件节点并处于在线状态;涉及群或好友操作时,账号还必须具备对应 QQ 权限。
const androidApi = api.forProtocol('android') // 省略时也默认 Android原始 action 请求使用萌卡 NT 约定的 client_type: 'android' | 'linuxqq';省略时选择 Android。
建议搭配
常见失败原因
- bot 不属于本节点
- bot 未在线或账号状态不符合要求
- client_type 无效或目标协议不支持该 action
注意事项
- 省略协议选择器时默认 Android;若指定 Linux,框架会明确拒绝,不会转交同 QQ 的 Android 实例。
- 查询结果可能受 QQ 服务端分页、缓存与权限影响,不应假设一次调用返回全部数据。