From 74019dc9090a2fdb903b71851e8a1f1645c92005 Mon Sep 17 00:00:00 2001 From: diamondburned Date: Sun, 14 Feb 2021 12:39:39 -0800 Subject: [PATCH] Bot: Reply with reference to message --- bot/ctx_call.go | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/bot/ctx_call.go b/bot/ctx_call.go index eb1d31e..b6fe3e6 100644 --- a/bot/ctx_call.go +++ b/bot/ctx_call.go @@ -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 }