From 8c7473c92f2e743c26e790ada2365274c4ebcb5b Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 26 Dec 2022 10:39:07 +0100 Subject: [PATCH 01/14] Adjust onMessageReceived conditions to ignore codeformatting bot responses for Top Helpers role --- .../commands/code/CodeMessageAutoDetection.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 30d7aea1b5..f178668bf8 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -1,6 +1,7 @@ package org.togetherjava.tjbot.commands.code; import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; @@ -10,7 +11,7 @@ import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; -import java.util.Optional; +import java.util.*; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -27,7 +28,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { /** * Creates a new instance. - * + * * @param config to figure out whether a message is from a help thread * @param codeMessageHandler to register detected code messages at for further handling */ @@ -42,7 +43,7 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan @Override public void onMessageReceived(MessageReceivedEvent event) { - if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event)) { + if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) || isSendByTopHelper(event)) { return; } @@ -63,6 +64,16 @@ public void onMessageReceived(MessageReceivedEvent event) { codeMessageHandler.addAndHandleCodeMessage(originalMessage, true); } + private boolean isSendByTopHelper(MessageReceivedEvent event) { + if(Objects.requireNonNull(event.getMember()).getRoles().isEmpty()) { + return false; + } + + return event.getMember().getRoles().stream() + .map(Role::getName) + .anyMatch(roleName -> roleName.matches("Top Helpers .+")); + } + private boolean isHelpThread(MessageReceivedEvent event) { if (event.getChannelType() != ChannelType.GUILD_PUBLIC_THREAD) { return false; From 77cfd8f48a2c7f36ee98f7295e96b5e2c1648d63 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 26 Dec 2022 10:45:48 +0100 Subject: [PATCH 02/14] adjust import and formatting --- .../tjbot/commands/code/CodeMessageAutoDetection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index f178668bf8..77357eb367 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -11,7 +11,7 @@ import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; -import java.util.*; +import java.util.Optional; import java.util.function.Predicate; import java.util.regex.Pattern; From 990f0a44fe59d1494beab56b41477ece742cd7e7 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 26 Dec 2022 10:47:09 +0100 Subject: [PATCH 03/14] add missing import --- .../tjbot/commands/code/CodeMessageAutoDetection.java | 1 + 1 file changed, 1 insertion(+) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 77357eb367..7b2acf2de8 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -11,6 +11,7 @@ import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; +import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; import java.util.regex.Pattern; From 6f7af7cde3fd1c3e865150bfb249f02f228c2e9b Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 26 Dec 2022 12:51:47 +0100 Subject: [PATCH 04/14] format code to match format conventions --- .../tjbot/commands/code/CodeMessageAutoDetection.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 7b2acf2de8..d6799e2a83 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -44,7 +44,8 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan @Override public void onMessageReceived(MessageReceivedEvent event) { - if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) || isSendByTopHelper(event)) { + if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) + || isSendByTopHelper(event)) { return; } @@ -66,11 +67,13 @@ public void onMessageReceived(MessageReceivedEvent event) { } private boolean isSendByTopHelper(MessageReceivedEvent event) { - if(Objects.requireNonNull(event.getMember()).getRoles().isEmpty()) { + if (Objects.requireNonNull(event.getMember()).getRoles().isEmpty()) { return false; } - return event.getMember().getRoles().stream() + return event.getMember() + .getRoles() + .stream() .map(Role::getName) .anyMatch(roleName -> roleName.matches("Top Helpers .+")); } From 74456a8a9f92bea0ad38944dab0256af7d94234f Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 26 Dec 2022 20:50:27 +0100 Subject: [PATCH 05/14] changed isSendByTopHelper method parament type; role pattern comes now from config file instead of hardcoded; --- .../code/CodeMessageAutoDetection.java | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index d6799e2a83..25aad57729 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -1,16 +1,21 @@ package org.togetherjava.tjbot.commands.code; +import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.togetherjava.tjbot.commands.MessageReceiverAdapter; import org.togetherjava.tjbot.commands.utils.CodeFence; import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; +import java.io.IOException; +import java.nio.file.Path; import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; @@ -23,6 +28,8 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private static final long MINIMUM_LINES_OF_CODE = 3; + private static final Logger logger = LoggerFactory.getLogger(CodeMessageAutoDetection.class); + private final CodeMessageHandler codeMessageHandler; private final Predicate isHelpForumName; @@ -45,7 +52,7 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan @Override public void onMessageReceived(MessageReceivedEvent event) { if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) - || isSendByTopHelper(event)) { + || isSendByTopHelper(Objects.requireNonNull(event.getMember()))) { return; } @@ -66,16 +73,27 @@ public void onMessageReceived(MessageReceivedEvent event) { codeMessageHandler.addAndHandleCodeMessage(originalMessage, true); } - private boolean isSendByTopHelper(MessageReceivedEvent event) { - if (Objects.requireNonNull(event.getMember()).getRoles().isEmpty()) { - return false; + private boolean isSendByTopHelper(Member member) { + final Path configPath = Path.of("config.json"); + + try { + final Config config = Config.load(configPath); + final String[] tagManageRolePatterns = config.getTagManageRolePattern().split("\\|"); + + for (final String pattern : tagManageRolePatterns) { + for (final Role role : member.getRoles()) { + if (role.getName().matches(pattern)) { + return true; + } + } + } + + } catch (IOException e) { + logger.error("Unable to load the configuration file from path '{}'", + configPath.toAbsolutePath(), e); } - return event.getMember() - .getRoles() - .stream() - .map(Role::getName) - .anyMatch(roleName -> roleName.matches("Top Helpers .+")); + return false; } private boolean isHelpThread(MessageReceivedEvent event) { From 3eb08e2d7875fa7dfeb1d1d20d3d1f016f39049b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 27 Dec 2022 15:27:57 +0100 Subject: [PATCH 06/14] added ignoreCodeActionsForRolePattern to config.json.template and Config.java; renamed and adjusted isCodeActionIgnored; --- application/config.json.template | 1 + .../code/CodeMessageAutoDetection.java | 43 ++++++------------- .../org/togetherjava/tjbot/config/Config.java | 15 +++++++ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/application/config.json.template b/application/config.json.template index 26980743ee..633c76868c 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -10,6 +10,7 @@ "heavyModerationRolePattern": "Moderator", "softModerationRolePattern": "Moderator|Community Ambassador", "tagManageRolePattern": "Moderator|Community Ambassador|Top Helpers .+", + "ignoreCodeActionsForRolePattern": "Top Helpers .+", "suggestions": { "channelPattern": "tj_suggestions", "upVoteEmoteName": "peepo_yes", diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 25aad57729..bb22aaf1a9 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -6,17 +6,14 @@ import net.dv8tion.jda.api.entities.channel.ChannelType; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.togetherjava.tjbot.commands.MessageReceiverAdapter; import org.togetherjava.tjbot.commands.utils.CodeFence; import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; -import java.io.IOException; -import java.nio.file.Path; -import java.util.Objects; +import java.util.Arrays; +import java.util.List; import java.util.Optional; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -28,11 +25,9 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private static final long MINIMUM_LINES_OF_CODE = 3; - private static final Logger logger = LoggerFactory.getLogger(CodeMessageAutoDetection.class); - private final CodeMessageHandler codeMessageHandler; - private final Predicate isHelpForumName; + private final List> isIgnoreCodeActionsRole; /** * Creates a new instance. @@ -47,12 +42,17 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan isHelpForumName = Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); + + isIgnoreCodeActionsRole = + Arrays.stream(config.getIgnoreCodeActionsForRolePattern().split("\\|")) + .map(roleName -> Pattern.compile(roleName).asMatchPredicate()) + .toList(); } @Override public void onMessageReceived(MessageReceivedEvent event) { if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) - || isSendByTopHelper(Objects.requireNonNull(event.getMember()))) { + || isCodeActionIgnored(event.getMember())) { return; } @@ -73,27 +73,12 @@ public void onMessageReceived(MessageReceivedEvent event) { codeMessageHandler.addAndHandleCodeMessage(originalMessage, true); } - private boolean isSendByTopHelper(Member member) { - final Path configPath = Path.of("config.json"); - - try { - final Config config = Config.load(configPath); - final String[] tagManageRolePatterns = config.getTagManageRolePattern().split("\\|"); - - for (final String pattern : tagManageRolePatterns) { - for (final Role role : member.getRoles()) { - if (role.getName().matches(pattern)) { - return true; - } - } - } - - } catch (IOException e) { - logger.error("Unable to load the configuration file from path '{}'", - configPath.toAbsolutePath(), e); - } + private boolean isCodeActionIgnored(Member member) { + List roles = member.getRoles(); - return false; + return roles.stream() + .map(Role::getName) + .anyMatch(role -> isIgnoreCodeActionsRole.stream().anyMatch(p -> p.test(role))); } private boolean isHelpThread(MessageReceivedEvent event) { diff --git a/application/src/main/java/org/togetherjava/tjbot/config/Config.java b/application/src/main/java/org/togetherjava/tjbot/config/Config.java index 7c078a97f7..ccbf419b45 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -26,6 +26,7 @@ public final class Config { private final String heavyModerationRolePattern; private final String softModerationRolePattern; private final String tagManageRolePattern; + private final String ignoreCodeActionsForRolePattern; private final SuggestionsConfig suggestions; private final String quarantinedRolePattern; private final ScamBlockerConfig scamBlocker; @@ -54,6 +55,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, required = true) String softModerationRolePattern, @JsonProperty(value = "tagManageRolePattern", required = true) String tagManageRolePattern, + @JsonProperty(value = "ignoreCodeActionsForRolePattern", + required = true) String ignoreCodeActionsForRolePattern, @JsonProperty(value = "suggestions", required = true) SuggestionsConfig suggestions, @JsonProperty(value = "quarantinedRolePattern", required = true) String quarantinedRolePattern, @@ -79,6 +82,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.heavyModerationRolePattern = Objects.requireNonNull(heavyModerationRolePattern); this.softModerationRolePattern = Objects.requireNonNull(softModerationRolePattern); this.tagManageRolePattern = Objects.requireNonNull(tagManageRolePattern); + this.ignoreCodeActionsForRolePattern = + Objects.requireNonNull(ignoreCodeActionsForRolePattern); this.suggestions = Objects.requireNonNull(suggestions); this.quarantinedRolePattern = Objects.requireNonNull(quarantinedRolePattern); this.scamBlocker = Objects.requireNonNull(scamBlocker); @@ -209,6 +214,16 @@ public String getTagManageRolePattern() { return tagManageRolePattern; } + /** + * Gets the REGEX pattern used to identify roles that will be ignored for code actions + * auto-detection + * + * @return the REGEX pattern + */ + public String getIgnoreCodeActionsForRolePattern() { + return ignoreCodeActionsForRolePattern; + } + /** * Gets the config for the suggestion system. * From 16018854d24b866d3681ea41f4c93a15af9335eb Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 27 Dec 2022 20:02:15 +0100 Subject: [PATCH 07/14] refactored method and variable name; removed not needed variable declaration; --- .../code/CodeMessageAutoDetection.java | 20 +++++++------------ .../org/togetherjava/tjbot/config/Config.java | 14 ++++++------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index bb22aaf1a9..f43c53fc25 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -12,8 +12,6 @@ import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; -import java.util.Arrays; -import java.util.List; import java.util.Optional; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -27,7 +25,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private final CodeMessageHandler codeMessageHandler; private final Predicate isHelpForumName; - private final List> isIgnoreCodeActionsRole; + private final String ignoredRolePattern; /** * Creates a new instance. @@ -43,16 +41,13 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan isHelpForumName = Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); - isIgnoreCodeActionsRole = - Arrays.stream(config.getIgnoreCodeActionsForRolePattern().split("\\|")) - .map(roleName -> Pattern.compile(roleName).asMatchPredicate()) - .toList(); + ignoredRolePattern = config.getIgnoreMessageAutoDetectionRolePattern(); } @Override public void onMessageReceived(MessageReceivedEvent event) { if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) - || isCodeActionIgnored(event.getMember())) { + || isSentByIgnoredMember(event.getMember())) { return; } @@ -73,12 +68,11 @@ public void onMessageReceived(MessageReceivedEvent event) { codeMessageHandler.addAndHandleCodeMessage(originalMessage, true); } - private boolean isCodeActionIgnored(Member member) { - List roles = member.getRoles(); - - return roles.stream() + private boolean isSentByIgnoredMember(Member member) { + return member.getRoles() + .stream() .map(Role::getName) - .anyMatch(role -> isIgnoreCodeActionsRole.stream().anyMatch(p -> p.test(role))); + .anyMatch(role -> role.matches(ignoredRolePattern)); } private boolean isHelpThread(MessageReceivedEvent event) { diff --git a/application/src/main/java/org/togetherjava/tjbot/config/Config.java b/application/src/main/java/org/togetherjava/tjbot/config/Config.java index ccbf419b45..3e5e44e86d 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -26,7 +26,7 @@ public final class Config { private final String heavyModerationRolePattern; private final String softModerationRolePattern; private final String tagManageRolePattern; - private final String ignoreCodeActionsForRolePattern; + private final String ignoreMessageAutoDetectionRolePattern; private final SuggestionsConfig suggestions; private final String quarantinedRolePattern; private final ScamBlockerConfig scamBlocker; @@ -55,8 +55,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, required = true) String softModerationRolePattern, @JsonProperty(value = "tagManageRolePattern", required = true) String tagManageRolePattern, - @JsonProperty(value = "ignoreCodeActionsForRolePattern", - required = true) String ignoreCodeActionsForRolePattern, + @JsonProperty(value = "ignoreMessageAutoDetectionRolePattern", + required = true) String ignoreMessageAutoDetectionRolePattern, @JsonProperty(value = "suggestions", required = true) SuggestionsConfig suggestions, @JsonProperty(value = "quarantinedRolePattern", required = true) String quarantinedRolePattern, @@ -82,8 +82,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.heavyModerationRolePattern = Objects.requireNonNull(heavyModerationRolePattern); this.softModerationRolePattern = Objects.requireNonNull(softModerationRolePattern); this.tagManageRolePattern = Objects.requireNonNull(tagManageRolePattern); - this.ignoreCodeActionsForRolePattern = - Objects.requireNonNull(ignoreCodeActionsForRolePattern); + this.ignoreMessageAutoDetectionRolePattern = + Objects.requireNonNull(ignoreMessageAutoDetectionRolePattern); this.suggestions = Objects.requireNonNull(suggestions); this.quarantinedRolePattern = Objects.requireNonNull(quarantinedRolePattern); this.scamBlocker = Objects.requireNonNull(scamBlocker); @@ -220,8 +220,8 @@ public String getTagManageRolePattern() { * * @return the REGEX pattern */ - public String getIgnoreCodeActionsForRolePattern() { - return ignoreCodeActionsForRolePattern; + public String getIgnoreMessageAutoDetectionRolePattern() { + return ignoreMessageAutoDetectionRolePattern; } /** From 2aef706dba3ad40cd32fa73d74171170c3c06bff Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 27 Dec 2022 20:03:35 +0100 Subject: [PATCH 08/14] changed key naming in config.json.template --- application/config.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/config.json.template b/application/config.json.template index 633c76868c..e42dd0b753 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -10,7 +10,7 @@ "heavyModerationRolePattern": "Moderator", "softModerationRolePattern": "Moderator|Community Ambassador", "tagManageRolePattern": "Moderator|Community Ambassador|Top Helpers .+", - "ignoreCodeActionsForRolePattern": "Top Helpers .+", + "ignoreMessageAutoDetectionRolePattern": "Top Helpers .+", "suggestions": { "channelPattern": "tj_suggestions", "upVoteEmoteName": "peepo_yes", From bd7ef8801aec1fb8cd82b873dadeb4d662fe643a Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 30 Dec 2022 18:29:19 +0100 Subject: [PATCH 09/14] refactored config.json.template key and added addiditional roles to it; refactored variable names in CodeMessageAutoDetection; --- application/config.json.template | 2 +- .../code/CodeMessageAutoDetection.java | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/application/config.json.template b/application/config.json.template index e42dd0b753..596856a18a 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -10,7 +10,7 @@ "heavyModerationRolePattern": "Moderator", "softModerationRolePattern": "Moderator|Community Ambassador", "tagManageRolePattern": "Moderator|Community Ambassador|Top Helpers .+", - "ignoreMessageAutoDetectionRolePattern": "Top Helpers .+", + "ignoreCodeAutoDetectionRolePattern": "Top Helpers .+|Moderator|Community Ambassador|Expert", "suggestions": { "channelPattern": "tj_suggestions", "upVoteEmoteName": "peepo_yes", diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index f43c53fc25..0a2abc3874 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -1,6 +1,5 @@ package org.togetherjava.tjbot.commands.code; -import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.channel.ChannelType; @@ -12,6 +11,8 @@ import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; +import java.util.Arrays; +import java.util.List; import java.util.Optional; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -25,7 +26,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private final CodeMessageHandler codeMessageHandler; private final Predicate isHelpForumName; - private final String ignoredRolePattern; + private final List> isIgnoredRolePattern; /** * Creates a new instance. @@ -41,13 +42,16 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan isHelpForumName = Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); - ignoredRolePattern = config.getIgnoreMessageAutoDetectionRolePattern(); + isIgnoredRolePattern = + Arrays.stream(config.getIgnoreCodeAutoDetectionRolePattern().split("\\|")) + .map(role -> Pattern.compile(role).asMatchPredicate()) + .toList(); } @Override public void onMessageReceived(MessageReceivedEvent event) { if (event.isWebhookMessage() || event.getAuthor().isBot() || !isHelpThread(event) - || isSentByIgnoredMember(event.getMember())) { + || isSentByExcludedRole(event.getMember().getRoles())) { return; } @@ -68,11 +72,11 @@ public void onMessageReceived(MessageReceivedEvent event) { codeMessageHandler.addAndHandleCodeMessage(originalMessage, true); } - private boolean isSentByIgnoredMember(Member member) { - return member.getRoles() - .stream() + private boolean isSentByExcludedRole(List roles) { + return roles.stream() .map(Role::getName) - .anyMatch(role -> role.matches(ignoredRolePattern)); + .anyMatch(role -> isIgnoredRolePattern.stream() + .anyMatch(rolePattern -> rolePattern.test(role))); } private boolean isHelpThread(MessageReceivedEvent event) { From b1f857d70d358630a94c87ad40f90888cef6f734 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 30 Dec 2022 18:54:11 +0100 Subject: [PATCH 10/14] add config vhanges --- .../java/org/togetherjava/tjbot/config/Config.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/config/Config.java b/application/src/main/java/org/togetherjava/tjbot/config/Config.java index 3e5e44e86d..b5eb42a469 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -26,7 +26,7 @@ public final class Config { private final String heavyModerationRolePattern; private final String softModerationRolePattern; private final String tagManageRolePattern; - private final String ignoreMessageAutoDetectionRolePattern; + private final String ignoreCodeAutoDetectionRolePattern; private final SuggestionsConfig suggestions; private final String quarantinedRolePattern; private final ScamBlockerConfig scamBlocker; @@ -55,8 +55,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, required = true) String softModerationRolePattern, @JsonProperty(value = "tagManageRolePattern", required = true) String tagManageRolePattern, - @JsonProperty(value = "ignoreMessageAutoDetectionRolePattern", - required = true) String ignoreMessageAutoDetectionRolePattern, + @JsonProperty(value = "ignoreCodeAutoDetectionRolePattern", + required = true) String ignoreCodeAutoDetectionRolePattern, @JsonProperty(value = "suggestions", required = true) SuggestionsConfig suggestions, @JsonProperty(value = "quarantinedRolePattern", required = true) String quarantinedRolePattern, @@ -82,8 +82,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.heavyModerationRolePattern = Objects.requireNonNull(heavyModerationRolePattern); this.softModerationRolePattern = Objects.requireNonNull(softModerationRolePattern); this.tagManageRolePattern = Objects.requireNonNull(tagManageRolePattern); - this.ignoreMessageAutoDetectionRolePattern = - Objects.requireNonNull(ignoreMessageAutoDetectionRolePattern); + this.ignoreCodeAutoDetectionRolePattern = + Objects.requireNonNull(ignoreCodeAutoDetectionRolePattern); this.suggestions = Objects.requireNonNull(suggestions); this.quarantinedRolePattern = Objects.requireNonNull(quarantinedRolePattern); this.scamBlocker = Objects.requireNonNull(scamBlocker); @@ -220,8 +220,8 @@ public String getTagManageRolePattern() { * * @return the REGEX pattern */ - public String getIgnoreMessageAutoDetectionRolePattern() { - return ignoreMessageAutoDetectionRolePattern; + public String getIgnoreCodeAutoDetectionRolePattern() { + return ignoreCodeAutoDetectionRolePattern; } /** From 775a4dce90b1504424ed5b811f5e57dccee5df2f Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 30 Dec 2022 19:08:20 +0100 Subject: [PATCH 11/14] add changes from code findings !PR # #733 --- .../commands/code/CodeMessageAutoDetection.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 0a2abc3874..5a0dc33042 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -11,7 +11,6 @@ import org.togetherjava.tjbot.commands.utils.MessageUtils; import org.togetherjava.tjbot.config.Config; -import java.util.Arrays; import java.util.List; import java.util.Optional; import java.util.function.Predicate; @@ -26,7 +25,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private final CodeMessageHandler codeMessageHandler; private final Predicate isHelpForumName; - private final List> isIgnoredRolePattern; + private final Predicate isIgnoredRolePattern; /** * Creates a new instance. @@ -43,9 +42,7 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); isIgnoredRolePattern = - Arrays.stream(config.getIgnoreCodeAutoDetectionRolePattern().split("\\|")) - .map(role -> Pattern.compile(role).asMatchPredicate()) - .toList(); + Pattern.compile(config.getIgnoreCodeAutoDetectionRolePattern()).asMatchPredicate(); } @Override @@ -73,10 +70,7 @@ public void onMessageReceived(MessageReceivedEvent event) { } private boolean isSentByExcludedRole(List roles) { - return roles.stream() - .map(Role::getName) - .anyMatch(role -> isIgnoredRolePattern.stream() - .anyMatch(rolePattern -> rolePattern.test(role))); + return roles.stream().map(Role::getName).anyMatch(isIgnoredRolePattern); } private boolean isHelpThread(MessageReceivedEvent event) { From d2eb5efaee9c9013b833de2a23f7490e234842e0 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 30 Dec 2022 19:09:45 +0100 Subject: [PATCH 12/14] add changes from code findings !PR # #733 --- .../tjbot/commands/code/CodeMessageAutoDetection.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 5a0dc33042..0c636ae608 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -25,7 +25,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private final CodeMessageHandler codeMessageHandler; private final Predicate isHelpForumName; - private final Predicate isIgnoredRolePattern; + private final Predicate isExcludedRolePattern; /** * Creates a new instance. @@ -41,7 +41,7 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan isHelpForumName = Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); - isIgnoredRolePattern = + isExcludedRolePattern = Pattern.compile(config.getIgnoreCodeAutoDetectionRolePattern()).asMatchPredicate(); } @@ -70,7 +70,7 @@ public void onMessageReceived(MessageReceivedEvent event) { } private boolean isSentByExcludedRole(List roles) { - return roles.stream().map(Role::getName).anyMatch(isIgnoredRolePattern); + return roles.stream().map(Role::getName).anyMatch(isExcludedRolePattern); } private boolean isHelpThread(MessageReceivedEvent event) { From c5ad3751eb05be4791b76c25cf1f50fdd9d514fa Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 30 Dec 2022 19:11:26 +0100 Subject: [PATCH 13/14] add changes from code findings !PR # #733 --- application/config.json.template | 2 +- .../commands/code/CodeMessageAutoDetection.java | 2 +- .../java/org/togetherjava/tjbot/config/Config.java | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/application/config.json.template b/application/config.json.template index 596856a18a..d85f39e581 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -10,7 +10,7 @@ "heavyModerationRolePattern": "Moderator", "softModerationRolePattern": "Moderator|Community Ambassador", "tagManageRolePattern": "Moderator|Community Ambassador|Top Helpers .+", - "ignoreCodeAutoDetectionRolePattern": "Top Helpers .+|Moderator|Community Ambassador|Expert", + "excludeCodeAutoDetectionRolePattern": "Top Helpers .+|Moderator|Community Ambassador|Expert", "suggestions": { "channelPattern": "tj_suggestions", "upVoteEmoteName": "peepo_yes", diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index 0c636ae608..fef36e8734 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -42,7 +42,7 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); isExcludedRolePattern = - Pattern.compile(config.getIgnoreCodeAutoDetectionRolePattern()).asMatchPredicate(); + Pattern.compile(config.getExcludeCodeAutoDetectionRolePattern()).asMatchPredicate(); } @Override diff --git a/application/src/main/java/org/togetherjava/tjbot/config/Config.java b/application/src/main/java/org/togetherjava/tjbot/config/Config.java index b5eb42a469..830d4cadde 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -26,7 +26,7 @@ public final class Config { private final String heavyModerationRolePattern; private final String softModerationRolePattern; private final String tagManageRolePattern; - private final String ignoreCodeAutoDetectionRolePattern; + private final String excludeCodeAutoDetectionRolePattern; private final SuggestionsConfig suggestions; private final String quarantinedRolePattern; private final ScamBlockerConfig scamBlocker; @@ -55,8 +55,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, required = true) String softModerationRolePattern, @JsonProperty(value = "tagManageRolePattern", required = true) String tagManageRolePattern, - @JsonProperty(value = "ignoreCodeAutoDetectionRolePattern", - required = true) String ignoreCodeAutoDetectionRolePattern, + @JsonProperty(value = "excludeCodeAutoDetectionRolePattern", + required = true) String excludeCodeAutoDetectionRolePattern, @JsonProperty(value = "suggestions", required = true) SuggestionsConfig suggestions, @JsonProperty(value = "quarantinedRolePattern", required = true) String quarantinedRolePattern, @@ -82,8 +82,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.heavyModerationRolePattern = Objects.requireNonNull(heavyModerationRolePattern); this.softModerationRolePattern = Objects.requireNonNull(softModerationRolePattern); this.tagManageRolePattern = Objects.requireNonNull(tagManageRolePattern); - this.ignoreCodeAutoDetectionRolePattern = - Objects.requireNonNull(ignoreCodeAutoDetectionRolePattern); + this.excludeCodeAutoDetectionRolePattern = + Objects.requireNonNull(excludeCodeAutoDetectionRolePattern); this.suggestions = Objects.requireNonNull(suggestions); this.quarantinedRolePattern = Objects.requireNonNull(quarantinedRolePattern); this.scamBlocker = Objects.requireNonNull(scamBlocker); @@ -220,8 +220,8 @@ public String getTagManageRolePattern() { * * @return the REGEX pattern */ - public String getIgnoreCodeAutoDetectionRolePattern() { - return ignoreCodeAutoDetectionRolePattern; + public String getExcludeCodeAutoDetectionRolePattern() { + return excludeCodeAutoDetectionRolePattern; } /** From b9503d59b6c28904d53199cb62cdb9aad70237b8 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 30 Dec 2022 19:20:47 +0100 Subject: [PATCH 14/14] add changes from code findings !PR # #733 --- .../tjbot/commands/code/CodeMessageAutoDetection.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java index fef36e8734..1a8cd42173 100644 --- a/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java +++ b/application/src/main/java/org/togetherjava/tjbot/commands/code/CodeMessageAutoDetection.java @@ -25,7 +25,7 @@ public final class CodeMessageAutoDetection extends MessageReceiverAdapter { private final CodeMessageHandler codeMessageHandler; private final Predicate isHelpForumName; - private final Predicate isExcludedRolePattern; + private final Predicate isExcludedRole; /** * Creates a new instance. @@ -41,7 +41,7 @@ public CodeMessageAutoDetection(Config config, CodeMessageHandler codeMessageHan isHelpForumName = Pattern.compile(config.getHelpSystem().getHelpForumPattern()).asMatchPredicate(); - isExcludedRolePattern = + isExcludedRole = Pattern.compile(config.getExcludeCodeAutoDetectionRolePattern()).asMatchPredicate(); } @@ -70,7 +70,7 @@ public void onMessageReceived(MessageReceivedEvent event) { } private boolean isSentByExcludedRole(List roles) { - return roles.stream().map(Role::getName).anyMatch(isExcludedRolePattern); + return roles.stream().map(Role::getName).anyMatch(isExcludedRole); } private boolean isHelpThread(MessageReceivedEvent event) {