test: 修改消息结构以支持多类型消息,更新相关解析函数以适应新结构
This commit is contained in:
parent
7edc71bb3b
commit
9a4be54662
@ -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 string `json:"message"` //just ignore it
|
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,36 +47,38 @@ func CreateMessage(messageType string) (QQMessage, error) {
|
|||||||
return factory(), nil
|
return factory(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseCQMessages 解析消息数组
|
// ParseStructMessages 解析消息数组
|
||||||
func ParseCQMessages(jsonData []byte) []QQMessage {
|
func ParseStructMessages(jsonData []any) []QQMessage {
|
||||||
var rawMessages []RawMessage
|
log.Println("解析消息数组:", jsonData)
|
||||||
if err := json.Unmarshal(jsonData, &rawMessages); err != nil {
|
return nil
|
||||||
log.Println("解析 JSON 数组失败:", err, string(jsonData))
|
// var rawMessages []RawMessage
|
||||||
return nil
|
// if err := json.Unmarshal(jsonData, &rawMessages); err != nil {
|
||||||
}
|
// log.Println("解析 JSON 数组失败:", err, string(jsonData))
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
|
||||||
messages := make([]QQMessage, 0, len(rawMessages))
|
// messages := make([]QQMessage, 0, len(rawMessages))
|
||||||
for _, raw := range rawMessages {
|
// for _, raw := range rawMessages {
|
||||||
msg, err := CreateMessage(raw.Type)
|
// msg, err := CreateMessage(raw.Type)
|
||||||
if err != nil {
|
// if err != nil {
|
||||||
log.Println("创建消息失败:", err)
|
// log.Println("创建消息失败:", err)
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 使用类型断言获取具体类型的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(raw.Data); err != nil {
|
// if err := v.SetData(raw.Data); err != nil {
|
||||||
// return nil, fmt.Errorf("解析消息数据失败: %v", err)
|
// // return nil, fmt.Errorf("解析消息数据失败: %v", err)
|
||||||
log.Println("解析消息数据失败:", err)
|
// log.Println("解析消息数据失败:", err)
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
log.Printf("消息类型 %s 未实现 SetData 方法\n", raw.Type)
|
// log.Printf("消息类型 %s 未实现 SetData 方法\n", raw.Type)
|
||||||
continue
|
// continue
|
||||||
}
|
// }
|
||||||
|
|
||||||
messages = append(messages, msg)
|
// messages = append(messages, msg)
|
||||||
}
|
// }
|
||||||
|
|
||||||
return messages
|
// return messages
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ func (c *WebSocketClient) receiveMessages() {
|
|||||||
UserId: event.UserID,
|
UserId: event.UserID,
|
||||||
OriginMsgId: event.MessageID,
|
OriginMsgId: event.MessageID,
|
||||||
RawMsg: event.RawMessage,
|
RawMsg: event.RawMessage,
|
||||||
StructuredMsg: qq_message.ParseCQMessages([]byte(event.RawMessage)),
|
StructuredMsg: qq_message.ParseStructMessages(event.Message),
|
||||||
UserNickName: event.Sender.Nickname,
|
UserNickName: event.Sender.Nickname,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user