@@ -84,23 +84,36 @@ public void runRoutine(JDA jda) {
8484 }
8585
8686 private void pruneForGuild (Guild guild ) {
87- Instant now = Instant .now ();
8887 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 ();
8997
9098 allCategories .stream ()
9199 .map (category -> helper .handleFindRoleForCategory (category , guild ))
92100 .filter (Optional ::isPresent )
93101 .map (Optional ::orElseThrow )
94- .forEach (role -> pruneRoleIfFull (role , selectRoleChannel , now ));
102+ .forEach (role -> pruneRoleIfFull (members , role , selectRoleChannel , now ));
95103 }
96104
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 ();
104117 }
105118
106119 private boolean isRoleFull (Collection <?> members ) {
0 commit comments