sxcybot

Discord bot for OSRS based channels
git clone git://git.wimdupont.com/sxcybot.git
Log | Files | Refs | README | LICENSE

commit 51cfce173296faf0e8327d0c8c24450ae0bda556
parent f25f5e50207ae1095b0bf52687e87acc96a73ab0
Author: Wim Dupont <wim@wimdupont.com>
Date:   Sat,  1 Nov 2025 16:59:08 +0100

fix loading discordmembers

Diffstat:
Msrc/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleUserAutoAddService.java | 81++++++++++++++++++++++++++++++++++++++++++-------------------------------------
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) {