@@ -84,23 +84,36 @@ public void runRoutine(JDA jda) {
84
84
}
85
85
86
86
private void pruneForGuild (Guild guild ) {
87
- Instant now = Instant .now ();
88
87
TextChannel selectRoleChannel = getSelectRolesChannelOptional (guild .getJDA ()).orElse (null );
88
+ guild .loadMembers ()
89
+ .onSuccess (members -> pruneCategories (guild , members , selectRoleChannel ))
90
+ .onError (throwable -> logger .error ("Failed to request all members for auto prune." ,
91
+ throwable ));
92
+ }
93
+
94
+ private void pruneCategories (Guild guild , List <Member > members ,
95
+ @ Nullable TextChannel selectRoleChannel ) {
96
+ Instant now = Instant .now ();
89
97
90
98
allCategories .stream ()
91
99
.map (category -> helper .handleFindRoleForCategory (category , guild ))
92
100
.filter (Optional ::isPresent )
93
101
.map (Optional ::orElseThrow )
94
- .forEach (role -> pruneRoleIfFull (role , selectRoleChannel , now ));
102
+ .forEach (role -> pruneRoleIfFull (members , role , selectRoleChannel , now ));
95
103
}
96
104
97
- private void pruneRoleIfFull (Role role , @ Nullable TextChannel selectRoleChannel , Instant when ) {
98
- role .getGuild ().findMembersWithRoles (role ).onSuccess (members -> {
99
- if (isRoleFull (members )) {
100
- logger .debug ("Helper role {} is full, starting to prune." , role .getName ());
101
- pruneRole (role , members , selectRoleChannel , when );
102
- }
103
- });
105
+ private void pruneRoleIfFull (List <Member > members , Role targetRole ,
106
+ @ Nullable TextChannel selectRoleChannel , Instant when ) {
107
+ List <Member > withRole = filterForRole (members , targetRole );
108
+
109
+ if (isRoleFull (withRole )) {
110
+ logger .debug ("Helper role {} is full, starting to prune." , targetRole .getName ());
111
+ pruneRole (targetRole , withRole , selectRoleChannel , when );
112
+ }
113
+ }
114
+
115
+ private List <Member > filterForRole (List <Member > members , Role role ) {
116
+ return members .stream ().filter (member -> member .getRoles ().contains (role )).toList ();
104
117
}
105
118
106
119
private boolean isRoleFull (Collection <?> members ) {
0 commit comments