refactor: 在 QQMessage 接口中添加 SetData 方法,并优化 ParseStructMessages 函数中的数据设置逻辑

This commit is contained in:
lixiangwuxian 2025-06-16 14:25:30 +08:00
parent 6d30136f48
commit 652647bdc0

View File

@ -11,6 +11,7 @@ import (
type QQMessage interface { type QQMessage interface {
ToCQString() string ToCQString() string
GetMessageType() string GetMessageType() string
SetData(data json.RawMessage) error
} }
// RawMessage 用于初始解析 JSON 的通用结构 // RawMessage 用于初始解析 JSON 的通用结构
@ -67,14 +68,9 @@ func ParseStructMessages(msgData any) []QQMessage {
} }
dataByte, _ := json.Marshal(rawMap["data"]) dataByte, _ := json.Marshal(rawMap["data"])
// 使用类型断言获取具体类型的Data字段 // 使用类型断言获取具体类型的Data字段
if v, ok := msg.(interface{ SetData(json.RawMessage) error }); ok { if err := msg.SetData(dataByte); err != nil {
if err := v.SetData(dataByte); err != nil { // return nil, fmt.Errorf("解析消息数据失败: %v", err)
// return nil, fmt.Errorf("解析消息数据失败: %v", err) log.Println("❎解析消息数据失败:", err)
log.Println("❎解析消息数据失败:", err)
continue
}
} else {
log.Printf("❎消息类型 %s 未实现 SetData 方法\n", rawMap["type"])
continue continue
} }