1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-05 03:23:49 +08:00

feat: expand forward message

if received a nested forward, the content would be an array rather than a `[CQ:forward]`
This commit is contained in:
wdvxdr 2021-12-17 12:36:00 +08:00
parent cb16c08ac8
commit 2f1077e795
No known key found for this signature in database
GPG Key ID: 703F8C071DE7A1B6

View File

@ -1515,20 +1515,31 @@ func (bot *CQBot) CQGetForwardMessage(resID string) global.MSG {
if m == nil { if m == nil {
return Failed(100, "MSG_NOT_FOUND", "消息不存在") return Failed(100, "MSG_NOT_FOUND", "消息不存在")
} }
r := make([]global.MSG, 0, len(m.Nodes))
for _, n := range m.Nodes { var transformNodes func(nodes []*message.ForwardNode) []global.MSG
bot.checkMedia(n.Message, 0) transformNodes = func(nodes []*message.ForwardNode) []global.MSG {
r = append(r, global.MSG{ r := make([]global.MSG, len(nodes))
"sender": global.MSG{ for i, n := range nodes {
"user_id": n.SenderId, bot.checkMedia(n.Message, 0)
"nickname": n.SenderName, content := ToFormattedMessage(n.Message, MessageSource{SourceType: MessageSourceGroup}, false)
}, if len(n.Message) == 1 {
"time": n.Time, if forward, ok := n.Message[0].(*message.ForwardMessage); ok {
"content": ToFormattedMessage(n.Message, MessageSource{SourceType: MessageSourceGroup}, false), content = transformNodes(forward.Nodes)
}) }
}
r[i] = global.MSG{
"sender": global.MSG{
"user_id": n.SenderId,
"nickname": n.SenderName,
},
"time": n.Time,
"content": content,
}
}
return r
} }
return OK(global.MSG{ return OK(global.MSG{
"messages": r, "messages": transformNodes(m.Nodes),
}) })
} }