Skip to content

Commit 2eb1971

Browse files
committed
restrict closing of posts by non-original posters
1 parent 86931fd commit 2eb1971

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

src/main/java/net/discordjug/javabot/systems/help/HelpListener.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ private boolean isInvalidHelpForumChannel(@NotNull ForumChannel forum) {
245245

246246
private void handleHelpThanksInteraction(@NotNull ButtonInteractionEvent event, @NotNull HelpManager manager, String @NotNull [] id) {
247247
ThreadChannel post = manager.getPostThread();
248-
HelpConfig config = botConfig.get(event.getGuild()).getHelpConfig();
249248
if (event.getUser().getIdLong() != post.getOwnerIdLong()) {
250249
Responses.warning(
251250
event,
@@ -301,16 +300,14 @@ private void handleReplyGuidelines(@NotNull IReplyCallback callback, @NotNull Fo
301300
}
302301

303302
private void handlePostClose(ButtonInteractionEvent event, @NotNull HelpManager manager) {
304-
if (manager.isForumEligibleToBeUnreserved(event)) {
305-
manager.close(event, event.getUser().getIdLong() == manager.getPostThread()
306-
.getOwnerIdLong(), null);
307-
} else {
303+
if (event.getUser().getIdLong() != manager.getPostThread().getOwnerIdLong()) {
308304
Responses.warning(
309305
event,
310-
"Could not close this post",
311-
"You're not allowed to close this post."
306+
"Sorry, but only the original poster can close this post using these buttons."
312307
)
313308
.queue();
309+
return;
314310
}
311+
manager.close(event, true, null);
315312
}
316313
}

src/main/java/net/discordjug/javabot/systems/help/HelpManager.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,23 @@ public void close(IReplyCallback callback, boolean withHelpers, @Nullable String
117117
.queue(s -> postThread.getManager().setLocked(true).setArchived(true).queue());
118118
if (callback.getMember().getIdLong() != postThread.getOwnerIdLong() &&
119119
Boolean.parseBoolean(preferenceService.getOrCreate(postThread.getOwnerIdLong(), Preference.PRIVATE_CLOSE_NOTIFICATIONS).getState())) {
120+
120121
postThread.getOwner().getUser().openPrivateChannel()
121122
.flatMap(c -> createDMCloseInfoEmbed(callback.getMember(), postThread, reason, c))
122123
.queue(success -> {}, failure -> {});
124+
125+
botConfig.get(callback.getGuild())
126+
.getModerationConfig()
127+
.getLogChannel()
128+
.sendMessageEmbeds(new EmbedBuilder()
129+
.setTitle("Post closed by non-original poster")
130+
.setDescription("The post " + postThread.getAsMention() +
131+
" has been closed by " + callback.getMember().getAsMention() + ".\n\n" +
132+
"[Post link](" + postThread.getJumpUrl() + ")")
133+
.addField("Reason", reason, false)
134+
.setAuthor(callback.getMember().getEffectiveName(), null, callback.getMember().getEffectiveAvatarUrl())
135+
.build())
136+
.queue();
123137
}
124138
}
125139

src/main/java/net/discordjug/javabot/systems/help/commands/UnreserveCommand.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,14 @@ public void execute(@NotNull SlashCommandInteractionEvent event) {
6262
}
6363
HelpManager manager = new HelpManager(postThread, dbActions, botConfig, helpAccountRepository, helpTransactionRepository, preferenceService);
6464
if (manager.isForumEligibleToBeUnreserved(event.getInteraction())) {
65+
String reason = event.getOption("reason", null, OptionMapping::getAsString);
66+
if (event.getUser().getIdLong() != postThread.getOwnerIdLong() && reason == null) {
67+
Responses.warning(event, "Could not close this post", "Closing a post of another user requires a reason to be set.").queue();
68+
return;
69+
}
6570
manager.close(event,
6671
event.getUser().getIdLong() == manager.getPostThread().getOwnerIdLong(),
67-
event.getOption("reason", null, OptionMapping::getAsString));
72+
reason);
6873
} else {
6974
Responses.warning(event, "Could not close this post", "You're not allowed to close this post.").queue();
7075
}

0 commit comments

Comments
 (0)