From 9a4be546629d53bcea1a29e1b4acda8b3309c07f Mon Sep 17 00:00:00 2001 From: lixiangwuxian Date: Mon, 16 Jun 2025 11:29:19 +0800 Subject: [PATCH] =?UTF-8?q?test:=20=E4=BF=AE=E6=94=B9=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=BB=A5=E6=94=AF=E6=8C=81=E5=A4=9A=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=B6=88=E6=81=AF=EF=BC=8C=E6=9B=B4=E6=96=B0=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E8=A7=A3=E6=9E=90=E5=87=BD=E6=95=B0=E4=BB=A5=E9=80=82?= =?UTF-8?q?=E5=BA=94=E6=96=B0=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/upstream_message.go | 2 +- qq_message/cq_message.go | 58 ++++++++++++++++++++------------------- ws_client/client.go | 2 +- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/model/upstream_message.go b/model/upstream_message.go index bb84087..c137ee1 100644 --- a/model/upstream_message.go +++ b/model/upstream_message.go @@ -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"` diff --git a/qq_message/cq_message.go b/qq_message/cq_message.go index 91a3ba6..dab7bca 100644 --- a/qq_message/cq_message.go +++ b/qq_message/cq_message.go @@ -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 } diff --git a/ws_client/client.go b/ws_client/client.go index 7518a3d..8a44a0b 100644 --- a/ws_client/client.go +++ b/ws_client/client.go @@ -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, }