推送事件
与上一部分定义的“API”不同,这些是后端主动推送给前端UI的事件。前端可以通过监听这些事件来实时更新界面,例如显示收到的消息、插件的运行状态等。
所有推送都遵循一个通用模式:通过WebSocket发送一个特定类型的事件名和一个附带的JSON数据包。
推送事件列表
1. message
- 事件名称:
message - 作用: 当机器人收到用户发送的消息时,将该消息的内容和上下文信息推送给前端。
- 触发时机: 在机器人接收到任何类型的消息事件后,预处理器会立即触发此推送。
- 推送内容 (Payload):
bot(字符串): 收到消息的机器人的ID。content(数组, 元组): 经过Markdown格式化后的消息内容。这是一个由元组[类型, 内容]组成的数组,例如[["text", "你好"], ["image", ""]]。- 元组第一个元素: 消息段类型 (如
text,at,image,reply等)。 - 元组第二个元素: 对应消息段的Markdown格式化字符串。
- 元组第一个元素: 消息段类型 (如
userid(字符串): 发送消息的用户的ID。session(字符串): 一个人类可读的会话描述,格式为"群聊: {群组ID} | 用户: {用户昵称} | {用户ID}"或"私信 | 用户: {用户昵称} | {用户ID}"。avatar(字符串/null): 发送消息用户的头像URL。groupid(字符串/null): 消息所在的群组ID,如果是私聊则为null。time(整数): 事件发生的Unix时间戳。
2. plugin_call
- 事件名称:
plugin_call - 作用: 当一个插件的匹配器(Matcher)被成功触发并执行完毕后,推送本次调用的详细日志信息。
- 触发时机: 在一个匹配器(Matcher)的
run_postprocessor(后处理)阶段触发。 - 推送内容 (Payload):
bot(字符串): 执行插件的机器人ID。platform(字符串): 机器人所属的平台 (如qq,onebot等)。adapter(字符串): 机器人使用的适配器名称。time_costed(浮点数): 本次插件逻辑执行所花费的时间(秒)。time(整数): 事件发生的Unix时间戳。groupid(字符串/null): 触发插件的群组ID,私聊则为null。userid(字符串): 触发插件的用户的ID。plugin(字符串): 被调用的插件的名称。matcher_hash(数组, 字符串): 一个字符串数组,包含了本次调用中执行的具体处理函数的唯一“指纹”,用于精确定位。exception(对象/null): 如果执行过程中发生异常,此字段会包含异常信息;否则为null。name(字符串): 异常的类型名称 (如ValueError)。detail(字符串): 异常的详细信息。
3. call_api
- 事件名称:
call_api - 作用: 当机器人调用API(通常是发送消息)时,将调用的信息和发送的内容推送给前端。
- 触发时机: 在机器人调用任何被监听的API(如
send_msg,send_message等)时触发。 - 推送内容 (Payload):
api(字符串): 被调用的API的名称 (如send_msg)。content(数组, 元组): 机器人发送的消息内容,其结构与message事件中的content字段完全相同。bot(字符串): 调用API的机器人ID。session(字符串): 人类可读的目标会话描述 (如{群组ID}-{用户ID})。groupid(字符串/null): 消息发送目标的群组ID。time(整数): 事件发生的Unix时间戳。avatar(字符串/null): 机器人自身的头像URL。
4. bot_connect
- 事件名称:
bot_connect - 作用: 通知前端有一个机器人实例成功连接并上线。
- 触发时机: 当一个机器人成功连接到其对应的平台时(
on_bot_connect事件)。 - 推送内容 (Payload):
bot(字符串): 上线的机器人ID。adapter(字符串): 机器人使用的适配器名称。platform(字符串): 机器人所属的平台。time(整数): 事件发生的Unix时间戳。
5. bot_disconnect
- 事件名称:
bot_disconnect - 作用: 通知前端有一个机器人实例断开连接并下线。
- 触发时机: 当一个机器人与其平台断开连接时(
on_bot_disconnect事件)。 - 推送内容 (Payload):
bot(字符串): 下线的机器人ID。adapter(字符串): 机器人使用的适配器名称。platform(字符串): 机器人所属的平台。time(整数): 事件发生的Unix时间戳。