From b17fa053b8955303b4d5c33916b996eb99c97b52 Mon Sep 17 00:00:00 2001 From: Michael McCarty Date: Sun, 5 Apr 2026 11:29:27 -0700 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8feat:=20unify=20ephemeral=20dialog=20r?= =?UTF-8?q?esponses=20with=20in=20perms=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/boost/coop_status_permission.go | 49 ++++++++++------------------- src/boost/leaderboard_permission.go | 46 ++++++++++----------------- 2 files changed, 32 insertions(+), 63 deletions(-) diff --git a/src/boost/coop_status_permission.go b/src/boost/coop_status_permission.go index 4d5c1e86..38362306 100644 --- a/src/boost/coop_status_permission.go +++ b/src/boost/coop_status_permission.go @@ -109,6 +109,19 @@ func ShowCoopStatusPermissionDialog(s *discordgo.Session, i *discordgo.Interacti func HandleCoopStatusPermissionButton(s *discordgo.Session, i *discordgo.InteractionCreate) { userID := bottools.GetInteractionUserID(i) customID := i.MessageComponentData().CustomID + respondAndClose := func(content string) { + err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ + Type: discordgo.InteractionResponseUpdateMessage, + Data: &discordgo.InteractionResponseData{ + Content: content, + Flags: discordgo.MessageFlagsEphemeral, + Components: []discordgo.MessageComponent{}, + }, + }) + if err != nil { + log.Println("Error updating coop status permission dialog:", err) + } + } // Extract the action part after the "#" parts := strings.Split(customID, "#") @@ -123,46 +136,16 @@ func HandleCoopStatusPermissionButton(s *discordgo.Session, i *discordgo.Interac farmerstate.SetMiscSettingString(userID, CoopStatusPermissionKey, time.Now().Format(time.RFC3339)) farmerstate.SetMiscSettingString(userID, CoopStatusPermissionSpanKey, "24h") - // Respond with ephemeral message asking to retry - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Permission granted for 24 hours. You can now run your command again.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - log.Println("Error responding to allow button:", err) - } + respondAndClose("Permission granted for 24 hours. You can now run your command again.") case "allow7d": // Set the timestamp to now farmerstate.SetMiscSettingString(userID, CoopStatusPermissionKey, time.Now().Format(time.RFC3339)) farmerstate.SetMiscSettingString(userID, CoopStatusPermissionSpanKey, "7d") - // Respond with ephemeral message asking to retry - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Permission granted for 7 days. You can now run your command again.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - log.Println("Error responding to allow 7d button:", err) - } + respondAndClose("Permission granted for 7 days. You can now run your command again.") case "close": - // Respond with ephemeral close message - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Dialog closed. You can enable this permission later when you're ready.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - log.Println("Error responding to close button:", err) - } + respondAndClose("Dialog closed. You can enable this permission later when you're ready.") } } diff --git a/src/boost/leaderboard_permission.go b/src/boost/leaderboard_permission.go index ac2eb7d3..0b10b50a 100644 --- a/src/boost/leaderboard_permission.go +++ b/src/boost/leaderboard_permission.go @@ -88,6 +88,19 @@ func ShowLeaderboardPermissionDialog(s *discordgo.Session, i *discordgo.Interact func HandleLeaderboardPermissionButton(s *discordgo.Session, i *discordgo.InteractionCreate) { userID := bottools.GetInteractionUserID(i) customID := i.MessageComponentData().CustomID + respondAndClose := func(content string) { + err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ + Type: discordgo.InteractionResponseUpdateMessage, + Data: &discordgo.InteractionResponseData{ + Content: content, + Flags: discordgo.MessageFlagsEphemeral, + Components: []discordgo.MessageComponent{}, + }, + }) + if err != nil { + log.Println("Error updating leaderboard permission dialog:", err) + } + } parts := strings.Split(customID, "#") if len(parts) < 2 { @@ -100,42 +113,15 @@ func HandleLeaderboardPermissionButton(s *discordgo.Session, i *discordgo.Intera farmerstate.SetMiscSettingString(userID, LeaderboardPermissionKey, time.Now().Format(time.RFC3339)) farmerstate.SetMiscSettingString(userID, LeaderboardPermissionSpanKey, "24h") - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Permission granted for 24 hours. Please run your command again.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - log.Println("Error responding to leaderboard allow24h button:", err) - } + respondAndClose("Permission granted for 24 hours. Please run your command again.") case "allowforever": farmerstate.SetMiscSettingString(userID, LeaderboardPermissionKey, time.Now().Format(time.RFC3339)) farmerstate.SetMiscSettingString(userID, LeaderboardPermissionSpanKey, "forever") - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Permission granted permanently. Please run your command again.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - log.Println("Error responding to leaderboard allowforever button:", err) - } + respondAndClose("Permission granted permanently. Please run your command again.") case "close": - err := s.InteractionRespond(i.Interaction, &discordgo.InteractionResponse{ - Type: discordgo.InteractionResponseChannelMessageWithSource, - Data: &discordgo.InteractionResponseData{ - Content: "Dialog closed.", - Flags: discordgo.MessageFlagsEphemeral, - }, - }) - if err != nil { - log.Println("Error responding to leaderboard close button:", err) - } + respondAndClose("Dialog closed.") } }