From 3cdb5418fffc499a067ca13378f277ab94a7c678 Mon Sep 17 00:00:00 2001 From: kageru Date: Sun, 9 Jun 2019 14:00:23 +0200 Subject: [PATCH] better error handling for broken redirects --- command.go | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/command.go b/command.go index 021f836..7e6c5d5 100644 --- a/command.go +++ b/command.go @@ -204,19 +204,28 @@ func generateReply(message *discordgo.MessageCreate, command *Command) string { * Hence, small wrappers around the redirect function. */ func modComplain(s *discordgo.Session, m *discordgo.MessageCreate) { - redirectMessage(s, m, config.ModChannel, true) + success := redirectMessage(s, m, config.ModChannel, true) dm, _ := s.UserChannelCreate(m.Author.ID) - s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage) + if success { + s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage) + } else { + s.ChannelMessageSend(dm.ID, "Could not send message. Please tell kageru about this.") + } } func selphyComplain(s *discordgo.Session, m *discordgo.MessageCreate) { dm_target, _ := s.UserChannelCreate("190958368301645824") - redirectMessage(s, m, dm_target.ID, true) + success := redirectMessage(s, m, dm_target.ID, true) dm, _ := s.UserChannelCreate(m.Author.ID) - s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage) + if success { + s.ChannelMessageSend(dm.ID, config.ComplaintReceivedMessage) + } else { + s.ChannelMessageSend(dm.ID, "Could not send message. Please tell kageru about this.") + } } -func redirectMessage(s *discordgo.Session, m *discordgo.MessageCreate, target string, isEmbed bool) { +func redirectMessage(s *discordgo.Session, m *discordgo.MessageCreate, target string, isEmbed bool) bool { + var err error if isEmbed { embed := &discordgo.MessageEmbed{ // Embed are anonymized by default for now. Fits the use case. @@ -224,10 +233,15 @@ func redirectMessage(s *discordgo.Session, m *discordgo.MessageCreate, target st Color: 0xbb0000, Description: m.Content, } - s.ChannelMessageSendEmbed(target, embed) - return + _, err = s.ChannelMessageSendEmbed(target, embed) + } else { + _, err = s.ChannelMessageSend(target, messageToString(m.Message)) } - s.ChannelMessageSend(target, messageToString(m.Message)) + if err != nil { + log.Printf("Could not redirect message", err) + return false + } + return true } func echoMessage(s *discordgo.Session, m *discordgo.MessageCreate) {