From 511b776cc7c2b7fec414e5d51dd4740bc90944d7 Mon Sep 17 00:00:00 2001 From: Xevion Date: Tue, 19 Dec 2023 08:01:08 -0600 Subject: [PATCH] Setup proper modal interaction handlers using CustomID string slice --- main.go | 21 +++++++++------------ submit.go | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 submit.go diff --git a/main.go b/main.go index 462b27d..550936c 100644 --- a/main.go +++ b/main.go @@ -4,9 +4,9 @@ import ( "flag" "os" "os/signal" + "strings" "github.com/bwmarrin/discordgo" - "github.com/davecgh/go-spew/spew" "github.com/go-redis/redis" "github.com/joho/godotenv" log "github.com/sirupsen/logrus" @@ -19,6 +19,9 @@ var ( "register": RegisterCommandHandler, "code": CodeCommandHandler, } + modalHandlers = map[string]func(s *discordgo.Session, i *discordgo.InteractionCreate){ + "register": RegisterModalHandler, + } db *redis.Client debugFlag = flag.Bool("debug", false, "Enable debug logging") ) @@ -71,18 +74,12 @@ func Bot() { } case discordgo.InteractionModalSubmit: - err := session.InteractionRespond(interaction.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Registration data received. Please wait while your vehicle is registered.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - panic(err) + id := interaction.ModalSubmitData().CustomID + handlerId := id[:strings.Index(id, ":")] + + if handler, ok := modalHandlers[handlerId]; ok { + handler(internalSession, interaction) } - data := interaction.ModalSubmitData() - spew.Dump(data) // if !strings.HasPrefix(data.CustomID, "modals_survey") { // return diff --git a/submit.go b/submit.go new file mode 100644 index 0000000..e27f0d6 --- /dev/null +++ b/submit.go @@ -0,0 +1,21 @@ +package main + +import ( + "github.com/bwmarrin/discordgo" + "github.com/davecgh/go-spew/spew" +) + +func RegisterModalHandler(session *discordgo.Session, interaction *discordgo.InteractionCreate) { + err := session.InteractionRespond(interaction.Interaction, &discordgo.InteractionResponse{ + Type: discordgo.InteractionResponseChannelMessageWithSource, + Data: &discordgo.InteractionResponseData{ + Content: "Registration data received. Please wait while your vehicle is registered.", + Flags: discordgo.MessageFlagsEphemeral, + }, + }) + if err != nil { + panic(err) + } + data := interaction.ModalSubmitData() + spew.Dump(data) +}