From 1028a900088f957dbd9d44ffa10c77b576bf7152 Mon Sep 17 00:00:00 2001 From: alphaBEE Date: Tue, 31 Oct 2023 01:44:52 +0530 Subject: [PATCH 1/3] add pinned announcement listener * listens for pinned announcement * removes if belongs to helper forum * resolves #921 --- .../togetherjava/tjbot/features/Features.java | 1 + .../help/PinnedAnnouncementListener.java | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java diff --git a/application/src/main/java/org/togetherjava/tjbot/features/Features.java b/application/src/main/java/org/togetherjava/tjbot/features/Features.java index 6bce808543..9372243a68 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/Features.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/Features.java @@ -118,6 +118,7 @@ public static Collection createFeatures(JDA jda, Database database, Con features.add(new CodeMessageAutoDetection(config, codeMessageHandler)); features.add(new CodeMessageManualDetection(codeMessageHandler)); features.add(new SlashCommandEducator()); + features.add(new PinnedAnnouncementListener(config)); // Event receivers features.add(new RejoinModerationRoleListener(actionsStore, config)); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java b/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java new file mode 100644 index 0000000000..4581530eea --- /dev/null +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java @@ -0,0 +1,56 @@ +package org.togetherjava.tjbot.features.help; + +import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.MessageType; +import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; +import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; + +import org.togetherjava.tjbot.config.Config; +import org.togetherjava.tjbot.features.MessageReceiverAdapter; + +import java.util.function.Predicate; +import java.util.regex.Pattern; + +/** + * Listener that receives all pinned announcement messages from helper forum so that it can be + * removed + */ +public final class PinnedAnnouncementListener extends MessageReceiverAdapter { + + private final Predicate isHelpForumName; + + /** + * Creates a new listener to receive all pinned announcement messages sent in help channels. + * + * @param config the config to use for this + */ + public PinnedAnnouncementListener(Config config) { + isHelpForumName = + Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); + } + + @Override + public void onMessageReceived(MessageReceivedEvent event) { + removePinnedAnnouncement(event); + } + + private boolean isHelpThread(MessageChannelUnion channel) { + if (!channel.getType().isThread()) { + return false; + } + ThreadChannel thread = channel.asThreadChannel(); + String rootChannelName = thread.getParentChannel().getName(); + return isHelpForumName.test(rootChannelName); + } + + private boolean isPinnedAnnouncement(Message message) { + return message.getType() == MessageType.CHANNEL_PINNED_ADD; + } + + private void removePinnedAnnouncement(MessageReceivedEvent event) { + if (isPinnedAnnouncement(event.getMessage()) && isHelpThread(event.getChannel())) { + event.getMessage().delete().queue(); + } + } +} From 0155cbdacfd3851597caa4cb3106e569cd1d2fdb Mon Sep 17 00:00:00 2001 From: alphaBEE Date: Tue, 31 Oct 2023 17:15:32 +0530 Subject: [PATCH 2/3] improved javadoc and method name --- .../tjbot/features/help/PinnedAnnouncementListener.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java b/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java index 4581530eea..5f0f525c3c 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java @@ -13,8 +13,7 @@ import java.util.regex.Pattern; /** - * Listener that receives all pinned announcement messages from helper forum so that it can be - * removed + * Removes notification-announcements about pinned messages from the helper forum. */ public final class PinnedAnnouncementListener extends MessageReceiverAdapter { @@ -32,7 +31,7 @@ public PinnedAnnouncementListener(Config config) { @Override public void onMessageReceived(MessageReceivedEvent event) { - removePinnedAnnouncement(event); + handlePinnedAnnouncement(event); } private boolean isHelpThread(MessageChannelUnion channel) { @@ -48,7 +47,7 @@ private boolean isPinnedAnnouncement(Message message) { return message.getType() == MessageType.CHANNEL_PINNED_ADD; } - private void removePinnedAnnouncement(MessageReceivedEvent event) { + private void handlePinnedAnnouncement(MessageReceivedEvent event) { if (isPinnedAnnouncement(event.getMessage()) && isHelpThread(event.getChannel())) { event.getMessage().delete().queue(); } From 2dfa42514c31a3a62e6a66924e0e1dfd1eaf5a03 Mon Sep 17 00:00:00 2001 From: alphaBEE Date: Tue, 31 Oct 2023 20:38:39 +0530 Subject: [PATCH 3/3] refactor class name --- .../main/java/org/togetherjava/tjbot/features/Features.java | 2 +- ...nouncementListener.java => PinnedNotificationRemover.java} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename application/src/main/java/org/togetherjava/tjbot/features/help/{PinnedAnnouncementListener.java => PinnedNotificationRemover.java} (93%) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/Features.java b/application/src/main/java/org/togetherjava/tjbot/features/Features.java index 9372243a68..67502eca2c 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/Features.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/Features.java @@ -118,7 +118,7 @@ public static Collection createFeatures(JDA jda, Database database, Con features.add(new CodeMessageAutoDetection(config, codeMessageHandler)); features.add(new CodeMessageManualDetection(codeMessageHandler)); features.add(new SlashCommandEducator()); - features.add(new PinnedAnnouncementListener(config)); + features.add(new PinnedNotificationRemover(config)); // Event receivers features.add(new RejoinModerationRoleListener(actionsStore, config)); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java b/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedNotificationRemover.java similarity index 93% rename from application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java rename to application/src/main/java/org/togetherjava/tjbot/features/help/PinnedNotificationRemover.java index 5f0f525c3c..993e066afd 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedAnnouncementListener.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/help/PinnedNotificationRemover.java @@ -15,7 +15,7 @@ /** * Removes notification-announcements about pinned messages from the helper forum. */ -public final class PinnedAnnouncementListener extends MessageReceiverAdapter { +public final class PinnedNotificationRemover extends MessageReceiverAdapter { private final Predicate isHelpForumName; @@ -24,7 +24,7 @@ public final class PinnedAnnouncementListener extends MessageReceiverAdapter { * * @param config the config to use for this */ - public PinnedAnnouncementListener(Config config) { + public PinnedNotificationRemover(Config config) { isHelpForumName = Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); }