Skip to content

Payload 载荷格式

它是什么

从总线取消息时,拿到的是一段 JSON 字符串。Payload 模块帮你把它解析成结构化的 Rust 类型。

JSON 格式

消息的 JSON 最外层有一个类型标识:

json
// QQ 消息
{"Message": {"message_type": "group", "user_id": 123, "message": "hello", ...}}

// 元事件
{"MetaEvent": {"meta_event_type": "heartbeat", ...}}

// 通知
{"Notice": {"notice_type": "group_increase", ...}}

// 请求
{"Request": {"request_type": "friend", ...}}

解析

rust
use luo9_sdk::payload::BusPayload;

let json = r#"{"Message":{"message_type":"group","user_id":123,"group_id":456,"message":"hello"}}"#;

match BusPayload::parse(json) {
    Some(BusPayload::Message(msg)) => {
        println!("消息: {}", msg.message);
    }
    Some(BusPayload::Notice(notice)) => {
        println!("通知: {:?}", notice.notice_type);
    }
    _ => {}
}

MessagePayload

QQ 消息的结构。

字段类型说明
message_typeMsgTypePrivate / Group
user_idu64发送者 QQ 号
group_idOption<u64>群号(群消息时有)
messageString消息文本
timeu64时间戳
self_idu64机器人 QQ 号
message_idu64消息 ID
sub_typeSubType子类型
senderOption<Sender>发送者信息

MetaEventPayload

心跳和生命周期事件。

字段说明
meta_event_typeLifecycle / Heartbeat
interval心跳间隔(毫秒)
status状态信息(good, online)

NoticePayload

好友/群变动通知。

NoticeType触发场景关键字段
FriendAdd好友添加user_id
FriendRecall好友撤回user_id, message_id
GroupAdmin管理员变动sub_type(Set/Unset)
GroupBan禁言duration
GroupIncrease成员增加operator_id
GroupDecrease成员减少operator_id
GroupCard名片修改card_new, card_old
GroupRecall群消息撤回operator_id, message_id
GroupUpload文件上传file
Poke戳一戳target_id

RequestPayload

好友/群请求。

RequestType字段
Frienduser_id, comment, flag
Groupgroup_id, user_id, comment, flag, sub_type

基于 GPLv3 许可发布