动作响应
动作响应是 OneBot 实现收到应用端的动作请求并处理完毕后,发回应用端的数据。
格式
动作响应应表示为一个对象(object
类型),且必须具有下面这些字段:
字段名 | 数据类型 | 说明 |
---|---|---|
status |
string | 执行状态(成功与否),必须是 ok 、failed 中的一个,分别表示执行成功和失败 |
retcode |
int64 | 返回码,必须符合本页后面所定义的返回码规则 |
data |
any | 响应数据 |
message |
string | 错误信息,当动作执行失败时,建议在此填写人类可读的错误信息,当执行成功时,应为空字符串 |
提示
若一个数据中缺失上述任一字段或类型错误,则不应认为该数据是有效的动作响应。
除此之外,若动作请求中包含 echo
字段且不是空字符串,则对应的动作响应中也应包含:
字段名 | 数据类型 | 说明 |
---|---|---|
echo |
string | 应原样返回动作请求中的 echo 字段值 |
例子
一个以 JSON 编码的动作响应例子如下:
{
"status": "ok",
"retcode": 0,
"data": {
"message_id": "1234",
"time": 1632847927.599013
},
"message": "",
"echo": "1234"
}
返回码
0
成功(OK)
当动作请求有效、动作执行成功时,返回码应为 0
。
1xxxx
动作请求错误(Request Error)
提示
这种错误类型类似 HTTP 的 4xx 客户端错误。
当出现动作请求无效、缺少参数、参数类型错误等情况时,返回码应为下表中的一个:
错误码 | 错误名 | 说明 | 备注 |
---|---|---|---|
10001 |
Bad Request | 无效的动作请求 | 格式错误(包括实现不支持 MessagePack 的情况)、必要字段缺失或字段类型错误 |
10002 |
Unsupported Action | 不支持的动作请求 | OneBot 实现没有实现该动作 |
10003 |
Bad Param | 无效的动作请求参数 | 参数缺失或参数类型错误 |
10004 |
Unsupported Param | 不支持的动作请求参数 | OneBot 实现没有实现该参数的语义 |
10005 |
Unsupported Segment | 不支持的消息段类型 | OneBot 实现没有实现该消息段类型 |
10006 |
Bad Segment Data | 无效的消息段参数 | 参数缺失或参数类型错误 |
10007 |
Unsupported Segment Data | 不支持的消息段参数 | OneBot 实现没有实现该参数的语义 |
10101 |
Who Am I | 未指定机器人账号 | OneBot 实现在单个 OneBot Connect 连接上支持多个机器人账号,但动作请求未指定要使用的账号 |
10102 |
Unknown Self | 未知的机器人账号 | 动作请求指定的机器人账号不存在 |
2xxxx
动作处理器错误(Handler Error)
提示
这种错误类型类似 HTTP 的 5xx 服务端错误。
当 OneBot 实现的动作处理器/函数在处理动作请求时发生异常或没有正确返回响应时,返回码应为下表中的一个:
错误码 | 错误名 | 说明 | 备注 |
---|---|---|---|
20001 |
Bad Handler | 动作处理器实现错误 | 没有正确设置响应状态等 |
20002 |
Internal Handler Error | 动作处理器运行时抛出异常 | OneBot 实现内部发生了未捕获的意料之外的异常 |
3xxxx
动作执行错误(Execution Error)
当动作请求有效,但动作执行失败时,返回码建议为下表中的一种,其中低三位可以由 OneBot 实现自行定义:
错误码 | 错误名 | 说明 | 备注 |
---|---|---|---|
31xxx |
Database Error | 数据库错误 | 如数据库查询失败等 |
32xxx |
Filesystem Error | 文件系统错误 | 如读取或写入文件失败等 |
33xxx |
Network Error | 网络错误 | 如下载文件失败等 |
34xxx |
Platform Error | 机器人平台错误 | 如由于机器人平台限制导致消息发送失败等 |
35xxx |
Logic Error | 动作逻辑错误 | 如尝试向不存在的用户发送消息等 |
36xxx |
I Am Tired | 我不想干了 | 一位 OneBot 实现决定罢工 |
4xxxx
、5xxxx
保留错误段
这两段返回码为保留段,OneBot 实现不应该使用。
6xxxx
~9xxxx
其它错误段
对于 3xxxx
无法涵盖的情形,OneBot 实现可以自由使用其它错误段来表示。