@@ -103,7 +103,7 @@ public void execute(@NotNull SlashCommandInteractionEvent event) {
103103 TextChannel notifChannel = config .getHelpConfig ().getHelpNotificationChannel ();
104104
105105 notifChannel .sendMessageEmbeds (createHelpEmbed (comment , post , member ))
106- .addActionRow (createAcknowledgementButton ())
106+ .addActionRow (createAcknowledgementButton (post . getId () ))
107107 .queue ();
108108 event .reply ("""
109109 Successfully requested help.
@@ -160,12 +160,12 @@ private void appendComment(EmbedBuilder eb, String comment) {
160160 }
161161 }
162162
163- private Button createAcknowledgementButton () {
164- return Button .of (ButtonStyle .SECONDARY , ComponentIdBuilder .build ("help-ping" , "acknowledge" ), "Mark as acknowledged" );
163+ private Button createAcknowledgementButton (String postId ) {
164+ return Button .of (ButtonStyle .SECONDARY , ComponentIdBuilder .build ("help-ping" , "acknowledge" , postId ), "Mark as acknowledged" );
165165 }
166166
167- private Button createUndoAcknowledgementButton () {
168- return Button .of (ButtonStyle .SECONDARY , ComponentIdBuilder .build ("help-ping" , "unacknowledge" ), "Mark as unacknowledged" );
167+ private Button createUndoAcknowledgementButton (String postId ) {
168+ return Button .of (ButtonStyle .SECONDARY , ComponentIdBuilder .build ("help-ping" , "unacknowledge" , postId ), "Mark as unacknowledged" );
169169 }
170170
171171 /**
@@ -221,17 +221,40 @@ private void cleanTimeoutCache() {
221221 @ Override
222222 public void handleButton (ButtonInteractionEvent event , Button button ) {
223223 String [] id = ComponentIdBuilder .split (event .getComponentId ());
224+ String postId = "" ;
225+ if (id .length > 2 ) {
226+ postId = id [2 ];
227+ }
224228 switch (id [1 ]) {
225229 case "acknowledge" ->
226- acknowledgeChangeAction (event , true );
230+ acknowledgeChangeAction (event , postId , true );
227231 case "unacknowledge" ->
228- acknowledgeChangeAction (event , false );
232+ handleUnacknowledge (event , postId );
229233 default -> event .reply ("Unknown button" ).setEphemeral (true ).queue ();
230234 }
235+ }
236+
237+ private void handleUnacknowledge (ButtonInteractionEvent event , String postId ) {
238+ if (postId .isEmpty () || isPostOpen (event .getGuild (), postId )) {
239+ acknowledgeChangeAction (event , postId , false );
240+ } else {
241+ Responses .error (event , """
242+ This post is closed or dormant.
243+ If this post is dormant, you can mark it as active by sending a message in the post.
244+ If it is closed and you still need help, please create a new post.
245+ """ ).queue ();
246+ }
247+ }
231248
249+ private boolean isPostOpen (Guild guild , String postId ) {
250+ ThreadChannel post = guild .getThreadChannelById (postId );
251+ return post != null &&
252+ post .getParentChannel ().getIdLong () == botConfig .get (guild ).getHelpConfig ().getHelpForumChannelId () &&
253+ !post .isArchived () &&
254+ !post .isLocked ();
232255 }
233256
234- private void acknowledgeChangeAction (ButtonInteractionEvent event , boolean acknowledged ) {
257+ private void acknowledgeChangeAction (ButtonInteractionEvent event , String postId , boolean acknowledged ) {
235258 event .editMessageEmbeds (
236259 event .getMessage ()
237260 .getEmbeds ()
@@ -243,7 +266,7 @@ private void acknowledgeChangeAction(ButtonInteractionEvent event, boolean ackno
243266 .map (this ::removeOldField )
244267 .map (EmbedBuilder ::build )
245268 .toList ())
246- .setActionRow (acknowledged ?createUndoAcknowledgementButton ():createAcknowledgementButton ())
269+ .setActionRow (acknowledged ?createUndoAcknowledgementButton (postId ):createAcknowledgementButton (postId ))
247270 .queue ();
248271 }
249272
0 commit comments