From dcf51986a712fbcbb48630e09937a9c7dbee3449 Mon Sep 17 00:00:00 2001 From: Xevion Date: Sun, 28 Jan 2024 04:23:29 -0600 Subject: [PATCH] Respond to interaction with error feedback on command handler fail --- helpers.go | 5 +++-- main.go | 9 ++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/helpers.go b/helpers.go index a302eec..a5de839 100644 --- a/helpers.go +++ b/helpers.go @@ -307,18 +307,19 @@ func DumpResponse(res *http.Response) { // ResponseError responds to an interaction with an error message // TODO: Improve with a proper embed and colors -func RespondError(session *discordgo.Session, interaction *discordgo.Interaction, message string, err error) { +func RespondError(session *discordgo.Session, interaction *discordgo.Interaction, message string, err error) error { // Optional: log the error if err != nil { log.Err(err).Msg(message) } - session.InteractionRespond(interaction, &discordgo.InteractionResponse{ + return session.InteractionRespond(interaction, &discordgo.InteractionResponse{ Type: discordgo.InteractionResponseChannelMessageWithSource, Data: &discordgo.InteractionResponseData{ Content: message, }, }) + } func GetFooter(time time.Time) *discordgo.MessageEmbedFooter { diff --git a/main.go b/main.go index 5748570..583510c 100644 --- a/main.go +++ b/main.go @@ -158,11 +158,18 @@ func main() { // Call handler err := handler(internalSession, interaction) - // Log error + // Log & respond error if err != nil { // TODO: Find a way to merge the response with the handler's error log.Error().Str("commandName", name).Err(err).Msg("Command Handler Error") + + // Respond with error + err = RespondError(internalSession, interaction.Interaction, fmt.Sprintf("Unexpected Error: %s", err.Error()), nil) + if err != nil { + log.Error().Str("commandName", name).Err(err).Msg("Failed to respond with error feedback") + } } + } else { log.Error().Str("commandName", name).Msg("Command Interaction Has No Handler")