跳转至

元事件

提示

本页所定义的事件均基于 OneBot Connect - 事件,其中 type 字段值应为 meta

后面的定义中只给出 detail_typesub_type 和具体事件特定的字段,如果没有给出 sub_type,则该字段值可以为空字符串。

元事件是 OneBot 实现内部自发产生的一类事件,例如心跳等,与 OneBot 本身的运行状态有关,与实现对应的机器人平台无关。

meta.connect 连接

对于正向 WebSocket 和反向 WebSocket 通信方式,OneBot 实现应在连接建立后立即产生一个连接事件,以向应用端推送当前实现端的相关版本信息。连接事件必须是一次成功的正向或反向 WebSocket 连接上传输的第一个事件。

HTTP 和 HTTP Webhook 通信方式不需要产生连接事件。

字段名 数据类型 说明
detail_type string 必须为 connect
version resp[get_version] OneBot 实现端版本信息,与 get_version 动作响应数据一致
{
    "id": "b6e65187-5ac0-489c-b431-53078e9d2bbb",
    "time": 1632847927.599013,
    "type": "meta",
    "detail_type": "connect",
    "sub_type": "",
    "version": {
        "impl": "go-onebot-qq",
        "version": "1.2.0",
        "onebot_version": "12"
    }
}

meta.heartbeat 心跳

建议 OneBot 实现提供的配置项

  • enabled:是否启用心跳
  • interval:心跳间隔,单位:毫秒,必须大于 0

本页后续将使用 配置项名称<配置项名称> 的形式引用上述配置项的内容。

enabled 配置为 true 时,OneBot 实现应该每隔 interval 产生一个心跳事件。

字段名 数据类型 说明
detail_type string 必须为 heartbeat
interval int64 到下次心跳的间隔,单位:毫秒
{
    "id": "b6e65187-5ac0-489c-b431-53078e9d2bbb",
    "time": 1632847927.599013,
    "type": "meta",
    "detail_type": "heartbeat",
    "sub_type": "",
    "interval": 5000
}

meta.status_update 状态更新

对于正向 WebSocket 和反向 WebSocket 通信方式,OneBot 实现应在连接建立后的适当时机(如所有机器人账号登录完成后)产生一个状态更新事件,发送所有机器人账号的状态。

对于 HTTP Webhook 通信方式,OneBot 实现应在启动后的适当时机(如所有机器人账号登录完成后)产生一个状态更新事件,发送所有机器人账号的状态。

在上述时机首次产生事件后,实现应在机器人账号或实现本身状态有变化时产生状态更新事件。

字段名 数据类型 说明
detail_type string 必须为 status_update
status resp[get_status] OneBot 实现端状态信息,与 get_status 动作响应数据一致

一个连接上的首次状态更新事件中,status.bots 字段应包含所有机器人账号的状态,后续则可以只包含状态有变化的机器人账号。如果是 status.good 或 OneBot 实现本身的其它状态变化,status.bots 字段可为空列表。

{
    "id": "b6e65187-5ac0-489c-b431-53078e9d2bbb",
    "time": 1632847927.599013,
    "type": "meta",
    "detail_type": "status_update",
    "sub_type": "",
    "status": {
        "good": true,
        "bots": [
            {
                "self": {
                    "platform": "qq",
                    "user_id": "1234567"
                },
                "online": true,
                "qq.status": "信号弱"
            },
            {
                "self": {
                    "platform": "telegram",
                    "user_id": "2345678"
                },
                "online": true
            }
        ]
    }
}