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:
parent
cb16c08ac8
commit
2f1077e795
35
coolq/api.go
35
coolq/api.go
@ -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),
|
||||
})
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user