Skip to content

Action 列表

OneBot v11 Action 是 Bot 框架向 Waylay 发送的 API 请求。

请求格式

json
{
  "action": "get_login_info",
  "params": {},
  "echo": "unique_id"
}

响应格式

json
{
  "status": "ok",
  "retcode": 0,
  "data": { ... },
  "echo": "unique_id"
}
retcode含义
0成功
1400请求处理错误
1404不支持的 API

核心

get_login_info

获取当前登录账号信息。

参数:无

响应

json
{
  "user_id": 123456789,
  "nickname": "Bot昵称"
}

get_version_info

响应

json
{
  "app_name": "waylay",
  "app_version": "0.4.0",
  "protocol_version": "v11"
}

get_status

响应

json
{
  "online": true,
  "good": true
}

消息

send_msg

发送消息,自动判断私聊或群聊。

参数

字段类型说明
message_typestringprivategroup(可选,可从 group_id 推断)
user_idnumber私聊对象 QQ 号
group_idnumber群号
messagearray消息段数组

send_group_msg

参数

字段类型说明
group_idnumber群号
messagearray消息段数组

响应

json
{
  "message_id": 12345
}

send_private_msg

参数

字段类型说明
user_idnumber对方 QQ 号
messagearray消息段数组

delete_msg

撤回消息。

字段类型说明
message_idnumber消息 ID

get_msg

获取消息详情。

字段类型说明
message_idnumber消息 ID

send_group_forward_msg / send_private_forward_msg

发送合并转发消息。使用 NTQQ 原生 multiForwardMsgWithComment API,在群聊/私聊中显示为一条可展开的合并转发卡片。

实现原理:先将每个 node 的内容暂存到 Bot 自身私聊以获取 NT 消息 ID,再调用 multiForwardMsgWithComment 合并转发到目标。若合并转发失败则自动回退为逐条发送。

为什么需要暂存到自身私聊?

NTQQ 的 multiForwardMsgWithComment 要求 msgId 对应的消息必须存在于发送记录中(19 位 ID)。通过 addLocalRecordMsg 创建的本地记录(16 位 ID)会被 NTQQ 内核拒绝(Data Not Existed)。这是 wrapper.node 的硬性限制,NapCat 等项目也采用相同方案。

字段类型说明
group_id / user_idnumber目标
messagesarraynode 类型的消息数组

兼容多种 node 格式

标准 OneBot v11 格式:

json
{
  "type": "node",
  "data": {
    "content": [{ "type": "text", "data": { "text": "hello" } }],
    "name": "发送者",
    "uin": "123456"
  }
}

Yunzai / TRSS 格式(自动识别):

json
{
  "message": { "type": "image", "file": "https://..." },
  "nickname": "发送者",
  "user_id": 123456
}

扁平段格式(如 { "type": "image", "file": "..." })会自动标准化为 { "type": "image", "data": { "file": "..." } }

好友 / 用户

get_friend_list

获取好友列表。从内存缓存返回,亚毫秒级响应。

响应

json
[
  { "user_id": 111, "nickname": "张三", "remark": "备注" }
]

get_stranger_info

字段类型说明
user_idnumberQQ 号

优先从好友缓存查找,对陌生人使用 5 秒超时的原生 API 调用,避免阻塞。

send_like

给好友点赞。

字段类型说明
user_idnumber目标 QQ 号
timesnumber点赞次数(1-20,默认 1)

set_friend_add_request

字段类型说明
flagstring请求标识
approveboolean是否同意

群组

get_group_list

从内存缓存返回。

响应

json
[
  { "group_id": 123, "group_name": "群名", "member_count": 50, "max_member_count": 200 }
]

get_group_info

字段类型说明
group_idnumber群号

get_group_member_list

字段类型说明
group_idnumber群号

启动时预加载全部群的成员列表到缓存。

get_group_member_info

字段类型说明
group_idnumber群号
user_idnumber成员 QQ 号

set_group_ban

字段类型说明
group_idnumber群号
user_idnumber成员 QQ 号
durationnumber禁言时长(秒,0 = 解禁)

set_group_whole_ban

字段类型说明
group_idnumber群号
enableboolean是否全体禁言

set_group_kick

字段类型说明
group_idnumber群号
user_idnumber成员 QQ 号
reject_add_requestboolean是否拒绝再次加群

set_group_admin

字段类型说明
group_idnumber群号
user_idnumber成员 QQ 号
enableboolean设置/取消管理员

set_group_card / set_group_name / set_group_leave

分别设置群名片、群名、退群。参数同上述模式。

set_group_add_request

字段类型说明
flagstring请求标识(seq|groupCode|type 格式)
approveboolean是否同意
reasonstring拒绝理由

group_poke

字段类型说明
group_idnumber群号
user_idnumber目标 QQ 号

媒体

get_image / get_record

字段类型说明
filestring文件名

upload_group_file / upload_private_file

字段类型说明
group_id / user_idnumber目标
filestring文件路径、URL 或 base64://
namestring显示文件名

支持的 file 格式:本地路径、file:// 协议、http(s):// URL、base64:// 编码数据。

错误处理

上传前会预检文件是否可读取:本地路径不存在会返回 File not found or unreadable: /path,URL 下载失败会返回 Failed to download file from URL: ...。上传大文件时 NTQQ 通过 BDH 异步传输,若 30 秒内未完成会返回 message_id: 0(文件仍在后台上传中)。

can_send_image / can_send_record

检查是否可以发送图片/语音。始终返回 { "yes": true }

群文件

get_group_file_system_info

获取群文件系统信息。

字段类型说明
group_idnumber群号

响应

json
{
  "file_count": 96,
  "limit_count": 10000,
  "used_space": 747338724,
  "total_space": 10737418240
}

get_group_root_files

获取群根目录文件列表。

字段类型说明
group_idnumber群号

响应

json
{
  "files": [
    {
      "group_id": 123456,
      "file_id": "/xxx-xxx",
      "file_name": "example.pdf",
      "busid": 102,
      "file_size": 1024,
      "upload_time": 0,
      "dead_time": 0,
      "modify_time": 1700000000,
      "download_times": 5,
      "uploader": 111222333,
      "uploader_name": "张三"
    }
  ],
  "folders": [
    {
      "group_id": 123456,
      "folder_id": "/xxx-xxx",
      "folder_name": "资料",
      "create_time": 1700000000,
      "creator": 111222333,
      "creator_name": "张三",
      "total_file_count": 10
    }
  ]
}

get_group_files_by_folder

获取群子目录文件列表。

字段类型说明
group_idnumber群号
folder_idstring文件夹 ID(空或不传 = 根目录)

响应格式同 get_group_root_files

get_group_file_url

获取群文件下载链接。

WARNING

当前版本 NTQQ wrapper.node 未暴露文件 URL API,始终返回空。

字段类型说明
group_idnumber群号
file_idstring文件 ID
busidnumberBus ID(默认 102)

delete_group_file

删除群文件。

字段类型说明
group_idnumber群号
file_idstring文件 ID
busidnumberBus ID(默认 102)

create_group_file_folder

创建群文件夹。

字段类型说明
group_idnumber群号
namestring文件夹名称

move_group_file

移动群文件到指定文件夹。

字段类型说明
group_idnumber群号
file_idstring文件 ID
folder_idstring目标文件夹 ID(空 = 根目录)
busidnumberBus ID(默认 102)

WARNING

当前 QQ 3.2.27 版本的 wrapper.node 未暴露 moveGroupFile 方法,此 action 会返回 retcode: 1400。若未来 QQ 版本支持该方法,Waylay 会自动启用。

delete_group_folder

删除群文件夹。

字段类型说明
group_idnumber群号
folder_idstring文件夹 ID

Released under the Apache 2.0 License.