Skip to content

Commit f25f550

Browse files
committed
Added MemberCounter Routine.
1 parent 9c19a62 commit f25f550

File tree

3 files changed

+26
-10
lines changed

3 files changed

+26
-10
lines changed

application/config.json.template

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,5 +111,6 @@
111111
]
112112
},
113113
"memberCountCategoryName": "Info",
114+
"updateMemberCountEveryHour", "12",
114115
"selectRolesChannelPattern": "select-your-roles"
115116
}

application/src/main/java/org/togetherjava/tjbot/config/Config.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public final class Config {
4444
private final HelperPruneConfig helperPruneConfig;
4545
private final FeatureBlacklistConfig featureBlacklistConfig;
4646
private final String selectRolesChannelPattern;
47-
47+
private final String updateMemberCountEveryHour;
4848
private final String memberCountCategoryName;
4949

5050
@SuppressWarnings("ConstructorWithTooManyParameters")
@@ -89,6 +89,7 @@ private Config(@JsonProperty(value = "token", required = true) String token,
8989
@JsonProperty(value = "sourceCodeBaseUrl", required = true) String sourceCodeBaseUrl,
9090
@JsonProperty(value = "jshell", required = true) JShellConfig jshell,
9191
@JsonProperty(value = "memberCountCategoryName") String memberCountCategoryName,
92+
@JsonProperty(value = "updateMemberCountEveryHour") String updateMemberCountEveryHour,
9293
@JsonProperty(value = "helperPruneConfig",
9394
required = true) HelperPruneConfig helperPruneConfig,
9495
@JsonProperty(value = "featureBlacklist",
@@ -100,6 +101,7 @@ private Config(@JsonProperty(value = "token", required = true) String token,
100101
this.databasePath = Objects.requireNonNull(databasePath);
101102
this.projectWebsite = Objects.requireNonNull(projectWebsite);
102103
this.memberCountCategoryName = memberCountCategoryName;
104+
this.updateMemberCountEveryHour = updateMemberCountEveryHour;
103105
this.discordGuildInvite = Objects.requireNonNull(discordGuildInvite);
104106
this.modAuditLogChannelPattern = Objects.requireNonNull(modAuditLogChannelPattern);
105107
this.modMailChannelPattern = Objects.requireNonNull(modMailChannelPattern);
@@ -418,4 +420,8 @@ public String getSelectRolesChannelPattern() {
418420
public String getMemberCountCategoryName() {
419421
return memberCountCategoryName;
420422
}
423+
424+
public String getupdateMemberCountEveryHour() {
425+
return updateMemberCountEveryHour;
426+
}
421427
}

application/src/main/java/org/togetherjava/tjbot/features/basic/MemberCounter.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,38 @@
22

33
import net.dv8tion.jda.api.JDA;
44
import net.dv8tion.jda.api.entities.Guild;
5+
import net.dv8tion.jda.api.entities.channel.concrete.Category;
56

67
import org.togetherjava.tjbot.config.Config;
78
import org.togetherjava.tjbot.features.Routine;
89

910
import java.util.List;
1011
import java.util.concurrent.TimeUnit;
1112

13+
import static java.lang.Integer.parseInt;
14+
1215
public class MemberCounter implements Routine {
1316
private final String wordsInCategory;
1417

18+
private final String updateMemberCountEveryHour;
19+
1520
public MemberCounter(Config config) {
1621
this.wordsInCategory = config.getMemberCountCategoryName();
22+
this.updateMemberCountEveryHour = config.getupdateMemberCountEveryHour();
23+
}
24+
25+
private void updateCategoryName(Category category) {
26+
int totalMemberCount = category.getGuild().getMemberCount();
27+
String basename = category.getName();
28+
category.getManager()
29+
.setName("%s - %d Members".formatted(basename, totalMemberCount))
30+
.queue();
1731
}
1832

1933
@Override
2034
public Schedule createSchedule() {
21-
return new Schedule(ScheduleMode.FIXED_RATE, 0, 12, TimeUnit.HOURS);
35+
return new Schedule(ScheduleMode.FIXED_RATE, 0, parseInt(updateMemberCountEveryHour),
36+
TimeUnit.HOURS);
2237
}
2338

2439
@Override
@@ -27,13 +42,7 @@ public void runRoutine(JDA jda) {
2742
.stream()
2843
.map(Guild::getCategories)
2944
.flatMap(List::stream)
30-
.filter(cat -> cat.getName().contains(wordsInCategory))
31-
.forEach(category -> {
32-
int totalMemberCount = category.getGuild().getMemberCount();
33-
String basename = category.getName();
34-
category.getManager()
35-
.setName("%s - %d Members".formatted(basename, totalMemberCount))
36-
.queue();
37-
});
45+
.filter(cat -> cat.getName().equalsIgnoreCase(wordsInCategory))
46+
.forEach(this::updateCategoryName);
3847
}
3948
}

0 commit comments

Comments
 (0)