@@ -108,19 +108,6 @@ func HandleLeaderboard(s *discordgo.Session, i *discordgo.InteractionCreate) {
108108func HandleLeaderboardPage (s * discordgo.Session , i * discordgo.InteractionCreate ) {
109109 flags := discordgo .MessageFlagsIsComponentsV2
110110
111- // Acknowledge the interaction
112- err := s .InteractionRespond (i .Interaction , & discordgo.InteractionResponse {
113- Type : discordgo .InteractionResponseDeferredMessageUpdate ,
114- Data : & discordgo.InteractionResponseData {
115- Flags : flags ,
116- Components : []discordgo.MessageComponent {},
117- },
118- })
119- if err != nil {
120- log .Println ("Error responding to leaderboard interaction:" , err )
121- return
122- }
123-
124111 parts := strings .Split (i .MessageComponentData ().CustomID , "#" )
125112 if len (parts ) < 2 {
126113 return
@@ -131,6 +118,19 @@ func HandleLeaderboardPage(s *discordgo.Session, i *discordgo.InteractionCreate)
131118
132119 switch parts [1 ] {
133120 case "close" :
121+ // Acknowledge update interactions that mutate the existing leaderboard message.
122+ err := s .InteractionRespond (i .Interaction , & discordgo.InteractionResponse {
123+ Type : discordgo .InteractionResponseDeferredMessageUpdate ,
124+ Data : & discordgo.InteractionResponseData {
125+ Flags : flags ,
126+ Components : []discordgo.MessageComponent {},
127+ },
128+ })
129+ if err != nil {
130+ log .Println ("Error responding to leaderboard close interaction:" , err )
131+ return
132+ }
133+
134134 // Keep only the TextDisplay, drop the ActionsRows
135135 var kept []discordgo.MessageComponent
136136 for _ , c := range i .Message .Components {
@@ -145,6 +145,22 @@ func HandleLeaderboardPage(s *discordgo.Session, i *discordgo.InteractionCreate)
145145 }
146146
147147 case "refresh" :
148+ if ! CheckLeaderboardPermission (s , i ) {
149+ return
150+ }
151+
152+ err := s .InteractionRespond (i .Interaction , & discordgo.InteractionResponse {
153+ Type : discordgo .InteractionResponseDeferredMessageUpdate ,
154+ Data : & discordgo.InteractionResponseData {
155+ Flags : flags ,
156+ Components : []discordgo.MessageComponent {},
157+ },
158+ })
159+ if err != nil {
160+ log .Println ("Error responding to leaderboard refresh interaction:" , err )
161+ return
162+ }
163+
148164 if eiID == "" {
149165 _ , _ = s .FollowupMessageCreate (i .Interaction , true , & discordgo.WebhookParams {
150166 Content : fmt .Sprintf ("Your Egg Inc ID is needed to update the leaderboard. Use %s to register." , bottools .GetFormattedCommand ("register" )),
@@ -161,6 +177,22 @@ func HandleLeaderboardPage(s *discordgo.Session, i *discordgo.InteractionCreate)
161177 }
162178
163179 case "season" :
180+ if ! CheckLeaderboardPermission (s , i ) {
181+ return
182+ }
183+
184+ err := s .InteractionRespond (i .Interaction , & discordgo.InteractionResponse {
185+ Type : discordgo .InteractionResponseDeferredMessageUpdate ,
186+ Data : & discordgo.InteractionResponseData {
187+ Flags : flags ,
188+ Components : []discordgo.MessageComponent {},
189+ },
190+ })
191+ if err != nil {
192+ log .Println ("Error responding to leaderboard season interaction:" , err )
193+ return
194+ }
195+
164196 if eiID == "" {
165197 _ , _ = s .FollowupMessageCreate (i .Interaction , true , & discordgo.WebhookParams {
166198 Content : fmt .Sprintf ("Your Egg Inc ID is needed to update the leaderboard. Use %s to register." , bottools .GetFormattedCommand ("register" )),
0 commit comments