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