fix: 修改 ParseStructMessages 函数中的类型断言,将原有的 any 类型替换为具体的 map[string]any,以确保消息解析的准确性
This commit is contained in:
parent
6c6eeba3e1
commit
bf1b0f391f
@ -54,16 +54,17 @@ func CreateMessage(messageType string) (QQMessage, error) {
|
|||||||
func ParseStructMessages(msgData any) []QQMessage {
|
func ParseStructMessages(msgData any) []QQMessage {
|
||||||
log.Println("解析消息数组:", msgData)
|
log.Println("解析消息数组:", msgData)
|
||||||
switch msgData := msgData.(type) {
|
switch msgData := msgData.(type) {
|
||||||
case []map[any]any:
|
case []interface{}:
|
||||||
msgArray := msgData
|
msgArray := msgData
|
||||||
messages := make([]QQMessage, 0, len(msgArray))
|
messages := make([]QQMessage, 0, len(msgArray))
|
||||||
for _, raw := range msgArray {
|
for _, raw := range msgArray {
|
||||||
msg, err := CreateMessage(raw["type"].(string))
|
rawMap := raw.(map[string]any)
|
||||||
|
msg, err := CreateMessage(rawMap["type"].(string))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("创建消息失败:", err)
|
log.Println("创建消息失败:", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
dataByte, _ := json.Marshal(raw["data"])
|
dataByte, _ := json.Marshal(rawMap["data"])
|
||||||
// 使用类型断言获取具体类型的Data字段
|
// 使用类型断言获取具体类型的Data字段
|
||||||
if v, ok := msg.(interface{ SetData(json.RawMessage) error }); ok {
|
if v, ok := msg.(interface{ SetData(json.RawMessage) error }); ok {
|
||||||
if err := v.SetData(dataByte); err != nil {
|
if err := v.SetData(dataByte); err != nil {
|
||||||
@ -72,7 +73,7 @@ func ParseStructMessages(msgData any) []QQMessage {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Printf("消息类型 %s 未实现 SetData 方法\n", raw["type"])
|
log.Printf("消息类型 %s 未实现 SetData 方法\n", rawMap["type"])
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user