commit 51cfce173296faf0e8327d0c8c24450ae0bda556
parent f25f5e50207ae1095b0bf52687e87acc96a73ab0
Author: Wim Dupont <wim@wimdupont.com>
Date:   Sat,  1 Nov 2025 16:59:08 +0100
fix loading discordmembers
Diffstat:
1 file changed, 43 insertions(+), 38 deletions(-)
diff --git a/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleUserAutoAddService.java b/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleUserAutoAddService.java
@@ -43,48 +43,53 @@ public class PvmRoleUserAutoAddService {
         var group = wiseOldManClient.getGroup(channel);
         var obscureList = new HashMap<String, List<String>>();
         var unknownList = new ArrayList<String>();
-        channelDetailService.getJda().getGuilds().forEach(guild -> {
-            for (MembershipDto membership : group.memberships()) {
-                try {
-                    pvmRoleUserService.findByRsn(membership.player().username());
-                } catch (EntityNotFoundException e) {
-                    var discordUsers = guild.getMembersByNickname(membership.player().username(), true);
-                    if (discordUsers.size() > 1) {
-                        obscureList.put(membership.player().username(),
-                                discordUsers.stream()
-                                        .map(f -> f.getUser().getEffectiveName())
-                                        .toList());
-                        logger.warn("Multiple users found for rsn {}", membership.player().username());
-                    }
-                    if (!discordUsers.isEmpty()) {
+        channelDetailService.getJda().getGuilds().forEach(guild ->
+                guild.loadMembers().onSuccess(discordMembers -> {
+                    for (MembershipDto membership : group.memberships()) {
                         try {
-                            var pvmRoleUser = pvmRoleUserService.save(PvmRoleUser.Builder.newBuilder()
-                                    .discordId(discordUsers.getFirst().getId())
-                                    .rsn(membership.player().username())
-                                    .build());
-                            try {
-                                pvmRoleSnapshotComparatorService.takeSnapshot(channel, pvmRoleUser, true, true);
-                            } catch (EntityNotFoundException ex) {
-                                logger.error("No snapshot taken for {} : {}", pvmRoleUser, ex.getMessage());
-                                channel.sendMessage(String.format("Error whilst taking snapshot for %s.", pvmRoleUser.getRsn())).queue();
+                            pvmRoleUserService.findByRsn(membership.player().username());
+                            logger.info("User with rsn {} already added.", membership.player().username());
+                        } catch (EntityNotFoundException e) {
+                            var discordUsers = discordMembers.stream()
+                                    .filter(discordMember -> membership.player().username().equalsIgnoreCase(discordMember.getNickname()))
+                                    .toList();
+                            if (discordUsers.size() > 1) {
+                                obscureList.put(membership.player().username(),
+                                        discordUsers.stream()
+                                                .map(f -> f.getUser().getEffectiveName())
+                                                .toList());
+                                logger.warn("Multiple users found for rsn {}", membership.player().username());
+                            }
+                            if (!discordUsers.isEmpty()) {
+                                try {
+                                    var pvmRoleUser = pvmRoleUserService.save(PvmRoleUser.Builder.newBuilder()
+                                            .discordId(discordUsers.getFirst().getId())
+                                            .rsn(membership.player().username())
+                                            .build());
+                                    try {
+                                        pvmRoleSnapshotComparatorService.takeSnapshot(channel, pvmRoleUser, true, true);
+                                    } catch (EntityNotFoundException ex) {
+                                        logger.error("No snapshot taken for {} : {}", pvmRoleUser, ex.getMessage());
+                                        channel.sendMessage(String.format("Error whilst taking snapshot for %s.", pvmRoleUser.getRsn())).queue();
+                                    }
+                                } catch (DataIntegrityViolationException ex) {
+                                    logger.error("User ({}) not added with rsn {} : {}",
+                                            discordUsers.getFirst().getId(), membership.player().username(), ex.getMessage());
+                                }
+                            } else {
+                                unknownList.add(membership.player().username());
+                                logger.warn("No users found for rsn {}", membership.player().username());
                             }
-                        } catch (DataIntegrityViolationException ex) {
-                            logger.error("User ({}) not added with rsn {} : {}",
-                                    discordUsers.getFirst().getId(), membership.player().username(), ex.getMessage());
                         }
-                    } else {
-                        unknownList.add(membership.player().username());
-                        logger.warn("No users found for rsn {}", membership.player().username());
                     }
-                }
-            }
-            if (!obscureList.isEmpty()) {
-                postObscures(channel, obscureList);
-            }
-            if (!unknownList.isEmpty()) {
-                postUnknowns(channel, unknownList);
-            }
-        });
+                    if (!obscureList.isEmpty()) {
+                        postObscures(channel, obscureList);
+                    }
+                    if (!unknownList.isEmpty()) {
+                        postUnknowns(channel, unknownList);
+                    }
+                })
+        );
     }
 
     private void postObscures(TextChannel channel, HashMap<String, List<String>> obscureList) {