1
0
mirror of https://github.com/Mrs4s/go-cqhttp.git synced 2025-05-04 19:17:37 +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 {
return Failed(100, "MSG_NOT_FOUND", "消息不存在")
}
r := make([]global.MSG, 0, len(m.Nodes))
for _, n := range m.Nodes {
bot.checkMedia(n.Message, 0)
r = append(r, global.MSG{
"sender": global.MSG{
"user_id": n.SenderId,
"nickname": n.SenderName,
},
"time": n.Time,
"content": ToFormattedMessage(n.Message, MessageSource{SourceType: MessageSourceGroup}, false),
})
var transformNodes func(nodes []*message.ForwardNode) []global.MSG
transformNodes = func(nodes []*message.ForwardNode) []global.MSG {
r := make([]global.MSG, len(nodes))
for i, n := range nodes {
bot.checkMedia(n.Message, 0)
content := ToFormattedMessage(n.Message, MessageSource{SourceType: MessageSourceGroup}, false)
if len(n.Message) == 1 {
if forward, ok := n.Message[0].(*message.ForwardMessage); ok {
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{
"messages": r,
"messages": transformNodes(m.Nodes),
})
}