From 95ab4d334419efc8c9e6c343dce330477bf38bf2 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Wed, 28 Jul 2021 21:13:44 +0200 Subject: [PATCH] Fix DiscordRanks --- .../bungeecore/bot/util/DiscordRanks.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/de/steamwar/bungeecore/bot/util/DiscordRanks.java b/src/de/steamwar/bungeecore/bot/util/DiscordRanks.java index 7d1e22d9..fe70ace4 100644 --- a/src/de/steamwar/bungeecore/bot/util/DiscordRanks.java +++ b/src/de/steamwar/bungeecore/bot/util/DiscordRanks.java @@ -28,7 +28,9 @@ import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Role; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; @UtilityClass @@ -43,18 +45,22 @@ public class DiscordRanks { if (member == null) { return; } - Set toRemove = new HashSet<>(SteamwarDiscordBotConfig.RANKS.keySet()); - toRemove.remove(steamwarUser.getUserGroup()); - for (UserGroup userGroup : toRemove) { - System.out.println(steamwarUser + " REMOVING"); - String roleId = SteamwarDiscordBotConfig.RANKS.get(userGroup); - guild.removeRoleFromMember(member, guild.getRoleById(roleId)).complete(); + List roleList = member.getRoles(); + Set strings = new HashSet<>(SteamwarDiscordBotConfig.RANKS.values()); + String needed = SteamwarDiscordBotConfig.RANKS.get(steamwarUser.getUserGroup()); + for (Role role : roleList) { + if (!strings.contains(role.getId())) { + continue; + } + if (role.getId().equals(needed)) { + needed = ""; + continue; + } + guild.removeRoleFromMember(member, role).complete(); } - - if (steamwarUser.getUserGroup() != UserGroup.Member) { - System.out.println(steamwarUser + " ADDING"); - guild.addRoleToMember(member, guild.getRoleById(SteamwarDiscordBotConfig.RANKS.get(steamwarUser.getUserGroup()))).complete(); + if (!needed.isEmpty()) { + guild.addRoleToMember(member, guild.getRoleById(needed)).complete(); } } }