1
0
Fork 0
mirror of https://github.com/diamondburned/arikawa.git synced 2025-03-22 18:09:21 +00:00

Bot: Reply with reference to message

This commit is contained in:
diamondburned 2021-02-14 12:39:39 -08:00
parent abeaef8122
commit 74019dc909

View file

@ -7,6 +7,7 @@ import (
"github.com/diamondburned/arikawa/v2/api"
"github.com/diamondburned/arikawa/v2/discord"
"github.com/diamondburned/arikawa/v2/gateway"
"github.com/diamondburned/arikawa/v2/utils/json/option"
"github.com/pkg/errors"
)
@ -303,23 +304,39 @@ func (ctx *Context) callMessageCreate(mc *gateway.MessageCreateEvent, value refl
Call:
// call the function and parse the error return value
v, err := cmd.call(value, argv...)
if err != nil {
if err != nil || v == nil {
return err
}
var data api.SendMessageData
switch v := v.(type) {
case string:
v = sub.SanitizeMessage(v)
_, err = ctx.SendMessage(mc.ChannelID, v, nil)
data.Content = v
case *discord.Embed:
_, err = ctx.SendMessage(mc.ChannelID, "", v)
data.Embed = v
case *api.SendMessageData:
if v.Content != "" {
v.Content = sub.SanitizeMessage(v.Content)
}
_, err = ctx.SendMessageComplex(mc.ChannelID, *v)
data = *v
default:
return nil
}
if data.Content != "" {
data.Content = sub.SanitizeMessage(data.Content)
}
if data.Reference == nil {
data.Reference = &discord.MessageReference{MessageID: mc.ID}
if data.AllowedMentions == nil {
// Do not mention on reply by default.
data.AllowedMentions = &api.AllowedMentions{
RepliedUser: option.False,
}
}
}
_, err = ctx.SendMessageComplex(mc.ChannelID, data)
return err
}