fix: 修改消息结构以支持单一类型消息,更新解析函数以适应新结构
This commit is contained in:
parent
9a4be54662
commit
c502c87e15
@ -71,7 +71,7 @@ type EventMessage struct {
|
|||||||
SubType string `json:"sub_type"`
|
SubType string `json:"sub_type"`
|
||||||
MessageID int32 `json:"message_id"`
|
MessageID int32 `json:"message_id"`
|
||||||
UserID int64 `json:"user_id"`
|
UserID int64 `json:"user_id"`
|
||||||
Message []any `json:"message"`
|
Message any `json:"message"`
|
||||||
RawMessage string `json:"raw_message"`
|
RawMessage string `json:"raw_message"`
|
||||||
Font int32 `json:"font"`
|
Font int32 `json:"font"`
|
||||||
Sender Sender `json:"sender"`
|
Sender Sender `json:"sender"`
|
||||||
|
@ -47,38 +47,40 @@ func CreateMessage(messageType string) (QQMessage, error) {
|
|||||||
return factory(), nil
|
return factory(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [map[data:map[chainCount:<nil> id:267 raw:map[chainCount:<nil> doubleHit:<nil> faceBubbleCount:<nil> faceIndex:267 faceText:/头秃 faceType:2 imageType:<nil> msgType:<nil> oldVersionStr:<nil> packId:<nil> pokeFlag:<nil> pokeStrength:<nil> pokeType:<nil> randomType:<nil> resultId:<nil> sourceType:<nil> spokeSummary:<nil> stickerId:<nil> stickerType:<nil> surpriseId:<nil> vaspokeId:<nil> vaspokeMinver:<nil> vaspokeName:<nil>] resultId:<nil>] type:face]]
|
||||||
|
|
||||||
// ParseStructMessages 解析消息数组
|
// ParseStructMessages 解析消息数组
|
||||||
func ParseStructMessages(jsonData []any) []QQMessage {
|
func ParseStructMessages(msgData any) []QQMessage {
|
||||||
log.Println("解析消息数组:", jsonData)
|
log.Println("解析消息数组:", msgData)
|
||||||
return nil
|
switch msgData.(type) {
|
||||||
// var rawMessages []RawMessage
|
case []map[string]any:
|
||||||
// if err := json.Unmarshal(jsonData, &rawMessages); err != nil {
|
msgArray := msgData.([]map[string]any)
|
||||||
// log.Println("解析 JSON 数组失败:", err, string(jsonData))
|
messages := make([]QQMessage, 0, len(msgArray))
|
||||||
// return nil
|
for _, raw := range msgArray {
|
||||||
// }
|
msg, err := CreateMessage(raw["type"].(string))
|
||||||
|
if err != nil {
|
||||||
// messages := make([]QQMessage, 0, len(rawMessages))
|
log.Println("创建消息失败:", err)
|
||||||
// for _, raw := range rawMessages {
|
continue
|
||||||
// msg, err := CreateMessage(raw.Type)
|
}
|
||||||
// if err != nil {
|
dataByte, _ := json.Marshal(raw["data"])
|
||||||
// log.Println("创建消息失败:", err)
|
// 使用类型断言获取具体类型的Data字段
|
||||||
// continue
|
if v, ok := msg.(interface{ SetData(json.RawMessage) error }); ok {
|
||||||
// }
|
if err := v.SetData(dataByte); err != nil {
|
||||||
|
// return nil, fmt.Errorf("解析消息数据失败: %v", err)
|
||||||
// // 使用类型断言获取具体类型的Data字段
|
log.Println("解析消息数据失败:", err)
|
||||||
// if v, ok := msg.(interface{ SetData(json.RawMessage) error }); ok {
|
continue
|
||||||
// if err := v.SetData(raw.Data); err != nil {
|
}
|
||||||
// // return nil, fmt.Errorf("解析消息数据失败: %v", err)
|
} else {
|
||||||
// log.Println("解析消息数据失败:", err)
|
log.Printf("消息类型 %s 未实现 SetData 方法\n", raw["type"])
|
||||||
// continue
|
continue
|
||||||
// }
|
}
|
||||||
// } else {
|
|
||||||
// log.Printf("消息类型 %s 未实现 SetData 方法\n", raw.Type)
|
messages = append(messages, msg)
|
||||||
// continue
|
}
|
||||||
// }
|
log.Println("解析出的QQ消息数组:", messages)
|
||||||
|
return messages
|
||||||
// messages = append(messages, msg)
|
case string:
|
||||||
// }
|
return []QQMessage{NewTextMessage().ParseMessage(msgData.(string))}
|
||||||
|
}
|
||||||
// return messages
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user