From b13eec2d390d791a37e798ca069a00ff019f94be Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Thu, 22 Feb 2024 00:42:46 +0530 Subject: [PATCH 01/12] Added MemberCounter Routine --- application/config.json.template | 2 + .../org/togetherjava/tjbot/config/Config.java | 19 +++++++++ .../togetherjava/tjbot/features/Features.java | 6 +-- .../basic/MemberCountDisplayRoutine.java | 42 +++++++++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java diff --git a/application/config.json.template b/application/config.json.template index 23e8f72648..fd92d97cca 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -110,5 +110,7 @@ "special": [ ] }, + "memberCountCategoryName": "Info", + "updateMemberCountEveryHour", "12", "selectRolesChannelPattern": "select-your-roles" } 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 57c3f98954..f25ce07398 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -44,6 +44,8 @@ public final class Config { private final HelperPruneConfig helperPruneConfig; private final FeatureBlacklistConfig featureBlacklistConfig; private final String selectRolesChannelPattern; + private final String updateMemberCountEveryHour; + private final String memberCountCategoryName; @SuppressWarnings("ConstructorWithTooManyParameters") @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) @@ -86,6 +88,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, @JsonProperty(value = "openaiApiKey", required = true) String openaiApiKey, @JsonProperty(value = "sourceCodeBaseUrl", required = true) String sourceCodeBaseUrl, @JsonProperty(value = "jshell", required = true) JShellConfig jshell, + @JsonProperty(value = "memberCountCategoryName") String memberCountCategoryName, + @JsonProperty(value = "updateMemberCountEveryHour") String updateMemberCountEveryHour, @JsonProperty(value = "helperPruneConfig", required = true) HelperPruneConfig helperPruneConfig, @JsonProperty(value = "featureBlacklist", @@ -96,6 +100,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.githubApiKey = Objects.requireNonNull(githubApiKey); this.databasePath = Objects.requireNonNull(databasePath); this.projectWebsite = Objects.requireNonNull(projectWebsite); + this.memberCountCategoryName = memberCountCategoryName; + this.updateMemberCountEveryHour = updateMemberCountEveryHour; this.discordGuildInvite = Objects.requireNonNull(discordGuildInvite); this.modAuditLogChannelPattern = Objects.requireNonNull(modAuditLogChannelPattern); this.modMailChannelPattern = Objects.requireNonNull(modMailChannelPattern); @@ -405,4 +411,17 @@ public FeatureBlacklistConfig getFeatureBlacklistConfig() { public String getSelectRolesChannelPattern() { return selectRolesChannelPattern; } + + /** + * Gets the categories by this name to showcase the total member count of the server. + * + * @return the categories name types + */ + public String getMemberCountCategoryName() { + return memberCountCategoryName; + } + + public String getupdateMemberCountEveryHour() { + return updateMemberCountEveryHour; + } } 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 7dbc19d447..1773946949 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/Features.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/Features.java @@ -8,10 +8,7 @@ import org.togetherjava.tjbot.config.FeatureBlacklist; import org.togetherjava.tjbot.config.FeatureBlacklistConfig; import org.togetherjava.tjbot.db.Database; -import org.togetherjava.tjbot.features.basic.PingCommand; -import org.togetherjava.tjbot.features.basic.RoleSelectCommand; -import org.togetherjava.tjbot.features.basic.SlashCommandEducator; -import org.togetherjava.tjbot.features.basic.SuggestionsUpDownVoter; +import org.togetherjava.tjbot.features.basic.*; import org.togetherjava.tjbot.features.bookmarks.BookmarksCommand; import org.togetherjava.tjbot.features.bookmarks.BookmarksSystem; import org.togetherjava.tjbot.features.bookmarks.LeftoverBookmarksCleanupRoutine; @@ -109,6 +106,7 @@ public static Collection createFeatures(JDA jda, Database database, Con .add(new AutoPruneHelperRoutine(config, helpSystemHelper, modAuditLogWriter, database)); features.add(new HelpThreadAutoArchiver(helpSystemHelper)); features.add(new LeftoverBookmarksCleanupRoutine(bookmarksSystem)); + features.add(new MemberCountDisplayRoutine(config)); // Message receivers features.add(new TopHelpersMessageListener(database, config)); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java new file mode 100644 index 0000000000..dd03ae1158 --- /dev/null +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -0,0 +1,42 @@ +package org.togetherjava.tjbot.features.basic; + +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.entities.channel.concrete.Category; + +import org.togetherjava.tjbot.config.Config; +import org.togetherjava.tjbot.features.Routine; + +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class MemberCountDisplayRoutine implements Routine { + private final String wordsInCategory; + + public MemberCountDisplayRoutine(Config config) { + this.wordsInCategory = config.getMemberCountCategoryName(); + } + + private void updateCategoryName(Category category) { + int totalMemberCount = category.getGuild().getMemberCount(); + String basename = category.getName(); + category.getManager() + .setName("%s - %d Members".formatted(basename, totalMemberCount)) + .queue(); + } + + @Override + public Schedule createSchedule() { + return new Schedule(ScheduleMode.FIXED_RATE, 0, 24, TimeUnit.HOURS); + } + + @Override + public void runRoutine(JDA jda) { + jda.getGuilds() + .stream() + .map(Guild::getCategories) + .flatMap(List::stream) + .filter(cat -> cat.getName().equalsIgnoreCase(wordsInCategory)) + .forEach(this::updateCategoryName); + } +} From 877cb346e256f68a7779f21c14926718ff1d424d Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Thu, 22 Feb 2024 14:24:29 +0530 Subject: [PATCH 02/12] feat: use pattern compile --- application/config.json.template | 1 - .../org/togetherjava/tjbot/config/Config.java | 7 ----- .../togetherjava/tjbot/features/Features.java | 6 +++- .../basic/MemberCountDisplayRoutine.java | 30 +++++++++++-------- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/application/config.json.template b/application/config.json.template index fd92d97cca..e2dff2ee13 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -111,6 +111,5 @@ ] }, "memberCountCategoryName": "Info", - "updateMemberCountEveryHour", "12", "selectRolesChannelPattern": "select-your-roles" } 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 f25ce07398..cd23a79fa3 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -44,7 +44,6 @@ public final class Config { private final HelperPruneConfig helperPruneConfig; private final FeatureBlacklistConfig featureBlacklistConfig; private final String selectRolesChannelPattern; - private final String updateMemberCountEveryHour; private final String memberCountCategoryName; @SuppressWarnings("ConstructorWithTooManyParameters") @@ -89,7 +88,6 @@ private Config(@JsonProperty(value = "token", required = true) String token, @JsonProperty(value = "sourceCodeBaseUrl", required = true) String sourceCodeBaseUrl, @JsonProperty(value = "jshell", required = true) JShellConfig jshell, @JsonProperty(value = "memberCountCategoryName") String memberCountCategoryName, - @JsonProperty(value = "updateMemberCountEveryHour") String updateMemberCountEveryHour, @JsonProperty(value = "helperPruneConfig", required = true) HelperPruneConfig helperPruneConfig, @JsonProperty(value = "featureBlacklist", @@ -101,7 +99,6 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.databasePath = Objects.requireNonNull(databasePath); this.projectWebsite = Objects.requireNonNull(projectWebsite); this.memberCountCategoryName = memberCountCategoryName; - this.updateMemberCountEveryHour = updateMemberCountEveryHour; this.discordGuildInvite = Objects.requireNonNull(discordGuildInvite); this.modAuditLogChannelPattern = Objects.requireNonNull(modAuditLogChannelPattern); this.modMailChannelPattern = Objects.requireNonNull(modMailChannelPattern); @@ -420,8 +417,4 @@ public String getSelectRolesChannelPattern() { public String getMemberCountCategoryName() { return memberCountCategoryName; } - - public String getupdateMemberCountEveryHour() { - return updateMemberCountEveryHour; - } } 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 1773946949..bffe41a2ee 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/Features.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/Features.java @@ -8,7 +8,11 @@ import org.togetherjava.tjbot.config.FeatureBlacklist; import org.togetherjava.tjbot.config.FeatureBlacklistConfig; import org.togetherjava.tjbot.db.Database; -import org.togetherjava.tjbot.features.basic.*; +import org.togetherjava.tjbot.features.basic.MemberCountDisplayRoutine; +import org.togetherjava.tjbot.features.basic.PingCommand; +import org.togetherjava.tjbot.features.basic.RoleSelectCommand; +import org.togetherjava.tjbot.features.basic.SlashCommandEducator; +import org.togetherjava.tjbot.features.basic.SuggestionsUpDownVoter; import org.togetherjava.tjbot.features.bookmarks.BookmarksCommand; import org.togetherjava.tjbot.features.bookmarks.BookmarksSystem; import org.togetherjava.tjbot.features.bookmarks.LeftoverBookmarksCleanupRoutine; diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index dd03ae1158..c94bac0b08 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -1,27 +1,33 @@ package org.togetherjava.tjbot.features.basic; import net.dv8tion.jda.api.JDA; -import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.channel.concrete.Category; import org.togetherjava.tjbot.config.Config; import org.togetherjava.tjbot.features.Routine; -import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.function.Predicate; +import java.util.regex.Pattern; public class MemberCountDisplayRoutine implements Routine { - private final String wordsInCategory; + private final Predicate wordsInCategory; + public MemberCountDisplayRoutine(Config config) { - this.wordsInCategory = config.getMemberCountCategoryName(); + wordsInCategory = Pattern.compile(config.getMemberCountCategoryName()).asMatchPredicate(); } private void updateCategoryName(Category category) { int totalMemberCount = category.getGuild().getMemberCount(); - String basename = category.getName(); + String baseName = category.getName(); + if (baseName.contains(" Members")) { + // baseName = baseName.substring(0, baseName.lastIndexOf(" Members")); + baseName = Pattern.compile("(.+) - \\d+ Members").toString(); + } + System.out.println("%s - %d Members".formatted(baseName.trim(), totalMemberCount)); category.getManager() - .setName("%s - %d Members".formatted(basename, totalMemberCount)) + .setName("%s - %d Members".formatted(baseName.trim(), totalMemberCount)) .queue(); } @@ -32,11 +38,11 @@ public Schedule createSchedule() { @Override public void runRoutine(JDA jda) { - jda.getGuilds() - .stream() - .map(Guild::getCategories) - .flatMap(List::stream) - .filter(cat -> cat.getName().equalsIgnoreCase(wordsInCategory)) - .forEach(this::updateCategoryName); + jda.getGuilds().forEach(guild -> { + guild.getCategories() + .stream() + .filter(cat -> wordsInCategory.test(cat.getName())) + .forEach(this::updateCategoryName); + }); } } From f194f41112fb70ec20d28235dcbd342d602b9b0a Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Thu, 22 Feb 2024 14:43:26 +0530 Subject: [PATCH 03/12] removed debug lines --- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index c94bac0b08..bedcc8b0a2 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -22,10 +22,8 @@ private void updateCategoryName(Category category) { int totalMemberCount = category.getGuild().getMemberCount(); String baseName = category.getName(); if (baseName.contains(" Members")) { - // baseName = baseName.substring(0, baseName.lastIndexOf(" Members")); baseName = Pattern.compile("(.+) - \\d+ Members").toString(); } - System.out.println("%s - %d Members".formatted(baseName.trim(), totalMemberCount)); category.getManager() .setName("%s - %d Members".formatted(baseName.trim(), totalMemberCount)) .queue(); From 7ba16c63deb20baf3b2791cfe2eed46fccc16e6c Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Thu, 22 Feb 2024 14:53:05 +0530 Subject: [PATCH 04/12] pattern fixes in config --- .../java/org/togetherjava/tjbot/config/Config.java | 12 ++++++------ .../features/basic/MemberCountDisplayRoutine.java | 3 ++- 2 files changed, 8 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 cd23a79fa3..bfe0cce239 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -44,7 +44,7 @@ public final class Config { private final HelperPruneConfig helperPruneConfig; private final FeatureBlacklistConfig featureBlacklistConfig; private final String selectRolesChannelPattern; - private final String memberCountCategoryName; + private final String memberCountCategoryPattern; @SuppressWarnings("ConstructorWithTooManyParameters") @JsonCreator(mode = JsonCreator.Mode.PROPERTIES) @@ -87,7 +87,7 @@ private Config(@JsonProperty(value = "token", required = true) String token, @JsonProperty(value = "openaiApiKey", required = true) String openaiApiKey, @JsonProperty(value = "sourceCodeBaseUrl", required = true) String sourceCodeBaseUrl, @JsonProperty(value = "jshell", required = true) JShellConfig jshell, - @JsonProperty(value = "memberCountCategoryName") String memberCountCategoryName, + @JsonProperty(value = "memberCountCategoryPattern") String memberCountCategoryPattern, @JsonProperty(value = "helperPruneConfig", required = true) HelperPruneConfig helperPruneConfig, @JsonProperty(value = "featureBlacklist", @@ -98,7 +98,7 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.githubApiKey = Objects.requireNonNull(githubApiKey); this.databasePath = Objects.requireNonNull(databasePath); this.projectWebsite = Objects.requireNonNull(projectWebsite); - this.memberCountCategoryName = memberCountCategoryName; + this.memberCountCategoryPattern = memberCountCategoryPattern; this.discordGuildInvite = Objects.requireNonNull(discordGuildInvite); this.modAuditLogChannelPattern = Objects.requireNonNull(modAuditLogChannelPattern); this.modMailChannelPattern = Objects.requireNonNull(modMailChannelPattern); @@ -410,11 +410,11 @@ public String getSelectRolesChannelPattern() { } /** - * Gets the categories by this name to showcase the total member count of the server. + * Gets the pattern matching the category that is used to display the total member count. * * @return the categories name types */ - public String getMemberCountCategoryName() { - return memberCountCategoryName; + public String getMemberCountCategoryPattern() { + return memberCountCategoryPattern; } } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index bedcc8b0a2..f739290e36 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -15,7 +15,8 @@ public class MemberCountDisplayRoutine implements Routine { public MemberCountDisplayRoutine(Config config) { - wordsInCategory = Pattern.compile(config.getMemberCountCategoryName()).asMatchPredicate(); + wordsInCategory = + Pattern.compile(config.getMemberCountCategoryPattern()).asMatchPredicate(); } private void updateCategoryName(Category category) { From 53f1d2f8dcfca5a3fa5b1400d16e10fb19ce75f5 Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:18:31 +0530 Subject: [PATCH 05/12] refactor: change cat to category --- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index f739290e36..e8e8a65549 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -40,7 +40,7 @@ public void runRoutine(JDA jda) { jda.getGuilds().forEach(guild -> { guild.getCategories() .stream() - .filter(cat -> wordsInCategory.test(cat.getName())) + .filter(category -> wordsInCategory.test(category.getName())) .forEach(this::updateCategoryName); }); } From dcc3ab3d2b9557196860c26005c14e675b643d82 Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Fri, 1 Mar 2024 16:32:07 +0530 Subject: [PATCH 06/12] feat: switch to findAny from forEach --- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index e8e8a65549..c549b269fd 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -41,7 +41,8 @@ public void runRoutine(JDA jda) { guild.getCategories() .stream() .filter(category -> wordsInCategory.test(category.getName())) - .forEach(this::updateCategoryName); + .findAny() + .ifPresent(this::updateCategoryName); }); } } From c5200c9c336c6788b1445d0855d97e119f202e22 Mon Sep 17 00:00:00 2001 From: christolis Date: Fri, 1 Mar 2024 13:48:24 +0200 Subject: [PATCH 07/12] perf: remove pattern compilation for each call Co-authored-by: Devansh Tiwari <65783463+devloves@users.noreply.github.com> --- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index c549b269fd..8b2f21ad78 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -12,7 +12,7 @@ public class MemberCountDisplayRoutine implements Routine { private final Predicate wordsInCategory; - + private static final Pattern baseNamePattern = Pattern.compile("(.+) - \\d+ Members"); public MemberCountDisplayRoutine(Config config) { wordsInCategory = @@ -23,7 +23,7 @@ private void updateCategoryName(Category category) { int totalMemberCount = category.getGuild().getMemberCount(); String baseName = category.getName(); if (baseName.contains(" Members")) { - baseName = Pattern.compile("(.+) - \\d+ Members").toString(); + baseName = baseNamePattern.toString(); } category.getManager() .setName("%s - %d Members".formatted(baseName.trim(), totalMemberCount)) From f6eeeae433afcd931ddce6ff1db960dcf72f25c4 Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Mon, 4 Mar 2024 02:17:06 +0530 Subject: [PATCH 08/12] perf: fixed solar linting error --- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index 8b2f21ad78..8662b0f46f 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -37,12 +37,11 @@ public Schedule createSchedule() { @Override public void runRoutine(JDA jda) { - jda.getGuilds().forEach(guild -> { - guild.getCategories() + jda.getGuilds() + .forEach(guild -> guild.getCategories() .stream() .filter(category -> wordsInCategory.test(category.getName())) .findAny() - .ifPresent(this::updateCategoryName); - }); + .ifPresent(this::updateCategoryName)); } } From 31c85cd9335a8d553e8acb4b9e715e927929db4b Mon Sep 17 00:00:00 2001 From: devloves <65783463+devloves@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:28:38 +0530 Subject: [PATCH 09/12] perf: made memberCountCategoryPattern required --- .../src/main/java/org/togetherjava/tjbot/config/Config.java | 5 +++-- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 6 +++--- 2 files changed, 6 insertions(+), 5 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 bfe0cce239..7d809b6c9a 100644 --- a/application/src/main/java/org/togetherjava/tjbot/config/Config.java +++ b/application/src/main/java/org/togetherjava/tjbot/config/Config.java @@ -87,7 +87,8 @@ private Config(@JsonProperty(value = "token", required = true) String token, @JsonProperty(value = "openaiApiKey", required = true) String openaiApiKey, @JsonProperty(value = "sourceCodeBaseUrl", required = true) String sourceCodeBaseUrl, @JsonProperty(value = "jshell", required = true) JShellConfig jshell, - @JsonProperty(value = "memberCountCategoryPattern") String memberCountCategoryPattern, + @JsonProperty(value = "memberCountCategoryPattern", + required = true) String memberCountCategoryPattern, @JsonProperty(value = "helperPruneConfig", required = true) HelperPruneConfig helperPruneConfig, @JsonProperty(value = "featureBlacklist", @@ -98,7 +99,7 @@ private Config(@JsonProperty(value = "token", required = true) String token, this.githubApiKey = Objects.requireNonNull(githubApiKey); this.databasePath = Objects.requireNonNull(databasePath); this.projectWebsite = Objects.requireNonNull(projectWebsite); - this.memberCountCategoryPattern = memberCountCategoryPattern; + this.memberCountCategoryPattern = Objects.requireNonNull(memberCountCategoryPattern); this.discordGuildInvite = Objects.requireNonNull(discordGuildInvite); this.modAuditLogChannelPattern = Objects.requireNonNull(modAuditLogChannelPattern); this.modMailChannelPattern = Objects.requireNonNull(modMailChannelPattern); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index 8662b0f46f..5dca8df29d 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -11,11 +11,11 @@ import java.util.regex.Pattern; public class MemberCountDisplayRoutine implements Routine { - private final Predicate wordsInCategory; + private final Predicate memberCountCategoryPredicate; private static final Pattern baseNamePattern = Pattern.compile("(.+) - \\d+ Members"); public MemberCountDisplayRoutine(Config config) { - wordsInCategory = + memberCountCategoryPredicate = Pattern.compile(config.getMemberCountCategoryPattern()).asMatchPredicate(); } @@ -40,7 +40,7 @@ public void runRoutine(JDA jda) { jda.getGuilds() .forEach(guild -> guild.getCategories() .stream() - .filter(category -> wordsInCategory.test(category.getName())) + .filter(category -> memberCountCategoryPredicate.test(category.getName())) .findAny() .ifPresent(this::updateCategoryName)); } From 948cd969d6b78a5566526e0640478069c31b3ced Mon Sep 17 00:00:00 2001 From: Devansh Tiwari <65783463+devloves@users.noreply.github.com> Date: Sat, 9 Mar 2024 19:07:29 +0530 Subject: [PATCH 10/12] Update application/config.json.template Co-authored-by: Chris Sdogkos --- 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 e2dff2ee13..7958745d39 100644 --- a/application/config.json.template +++ b/application/config.json.template @@ -110,6 +110,6 @@ "special": [ ] }, - "memberCountCategoryName": "Info", + "memberCountCategoryPattern": "Info", "selectRolesChannelPattern": "select-your-roles" } From e9baabeebc46e5d2c3921357e36756b9db328b54 Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sun, 10 Mar 2024 20:52:45 +0530 Subject: [PATCH 11/12] fixed: routine not updating channel name after first write --- .../basic/MemberCountDisplayRoutine.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index 5dca8df29d..944cb894b6 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -10,23 +10,29 @@ import java.util.function.Predicate; import java.util.regex.Pattern; +/** + * Shows the guild member count on selected category, which runs every day. + */ public class MemberCountDisplayRoutine implements Routine { private final Predicate memberCountCategoryPredicate; - private static final Pattern baseNamePattern = Pattern.compile("(.+) - \\d+ Members"); + /** + * Creates an instance on member count display routine. + * + * @param config the config to use + */ public MemberCountDisplayRoutine(Config config) { memberCountCategoryPredicate = - Pattern.compile(config.getMemberCountCategoryPattern()).asMatchPredicate(); + Pattern.compile(config.getMemberCountCategoryPattern() + "( - \\d+ Members)?") + .asMatchPredicate(); } private void updateCategoryName(Category category) { int totalMemberCount = category.getGuild().getMemberCount(); - String baseName = category.getName(); - if (baseName.contains(" Members")) { - baseName = baseNamePattern.toString(); - } + String baseName = category.getName().split("-")[0].trim(); + category.getManager() - .setName("%s - %d Members".formatted(baseName.trim(), totalMemberCount)) + .setName("%s - %d Members".formatted(baseName, totalMemberCount)) .queue(); } From 13ed74d4e712956987379b40403e55690c70af3f Mon Sep 17 00:00:00 2001 From: Tanish Azad Date: Sun, 10 Mar 2024 20:59:40 +0530 Subject: [PATCH 12/12] fixed comment --- .../tjbot/features/basic/MemberCountDisplayRoutine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java index 944cb894b6..bb67396670 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCountDisplayRoutine.java @@ -11,7 +11,7 @@ import java.util.regex.Pattern; /** - * Shows the guild member count on selected category, which runs every day. + * Shows the guild member count on selected category, which updates everyday. */ public class MemberCountDisplayRoutine implements Routine { private final Predicate memberCountCategoryPredicate;