Skip to content

Commit b27436d

Browse files
committed
disable create thread component after use
1 parent dc24ebf commit b27436d

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/main/java/net/discordjug/javabot/systems/moderation/report/ReportManager.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,13 @@ public class ReportManager implements ButtonHandler, ModalHandler {
5151

5252
@Override
5353
public void handleButton(@NotNull ButtonInteractionEvent event, Button button) {
54-
event.deferReply(true).queue();
5554
String[] id = ComponentIdBuilder.split(event.getComponentId());
5655
if ("resolve-report".equals(id[0])) {
5756
handleResolveReportButton(event, id);
5857
} else if (REPORT_INTERACTION_NAME.equals(id[0])&&"create-thread".equals(id[1])) {
5958
createReportUserThread(event, id);
6059
}else {
61-
Responses.error(event.getHook(), "Unexpected button").queue();
60+
Responses.error(event, "Unexpected button").queue();
6261
}
6362
}
6463

@@ -67,6 +66,10 @@ private void createReportUserThread(ButtonInteractionEvent event, String[] id) {
6766
.getModerationConfig()
6867
.getReportUserThreadHolder();
6968
ThreadChannel reportThread = event.getGuild().getThreadChannelById(id[2]);
69+
if(reportThread==null) {
70+
Responses.error(event, "This report has been handled already.").queue();
71+
return;
72+
}
7073
List<MessageEmbed> reportEmbeds = event.getMessage().getEmbeds();
7174
String title;
7275
if (reportEmbeds.isEmpty()) {
@@ -84,19 +87,23 @@ private void createReportUserThread(ButtonInteractionEvent event, String[] id) {
8487
+ "Messages sent in this thread can be seen by staff members but not other users.")
8588
.addEmbeds(reportEmbeds)
8689
.queue();
87-
reportThread.addThreadMember(event.getUser()).queue();
90+
reporterThread.addThreadMember(event.getUser()).queue();
8891
reportThread
8992
.sendMessageEmbeds(
9093
new EmbedBuilder()
9194
.setTitle("Additional information from reporter")
9295
.setDescription("The reporter created a thread for additional information: " + reporterThread.getAsMention() + "\n\n[thread link](" + reporterThread.getJumpUrl() + ")")
9396
.build())
9497
.queue();
95-
Responses.info(event.getHook(), "Information thread created", "The thread "+reporterThread.getAsMention()+" has been created for you. You can provide additional details related to your report there.").queue();
98+
event.editComponents(ActionRow.of(event.getComponent().asDisabled())).queue(success -> {
99+
Responses.info(event.getHook(), "Information thread created", "The thread "+reporterThread.getAsMention()+" has been created for you. You can provide additional details related to your report there.").queue();
100+
});
101+
96102
});
97103
}
98104

99105
private void handleResolveReportButton(ButtonInteractionEvent event, String[] id) {
106+
event.deferReply(true).queue();
100107
ThreadChannel thread = event.getGuild().getThreadChannelById(id[1]);
101108
if (thread == null) {
102109
Responses.error(event.getHook(), "Could not find the corresponding thread channel.").queue();

0 commit comments

Comments
 (0)