checkGuild(role.getGuild(), "Role: " + role.toString()); checkPosition(role); Checks.check(!role.isManaged(), "Cannot add a Managed role to a Member. Role: %s", role.toString()); }); rolesToRemove.forEach(role -> checkGuild(role.getGuild(), "Role: " + role.toString()); checkPosition(role); Checks.check(!role.isManaged(), "Cannot remove a Managed role from a Member. Role: %s", role.toString()); });
@Override protected boolean punish(DiscordBot bot, Guild guild, Member member) { Role role = guild.getRoleById(GuildSettings.get(guild).getOrDefault(GSetting.BOT_MUTE_ROLE)); if (role == null) { return false; } List<Role> roles = member.getRoles(); List<Role> rolesToAdd = new ArrayList<>(); rolesToAdd.add(role); List<Role> rolesToRemove = new ArrayList<>(); for (Role r : roles) { if (r.isManaged()) { continue; } if (!PermissionUtil.canInteract(guild.getSelfMember(), r)) { continue; } if (r.equals(role)) { roles.remove(role); continue; } rolesToRemove.add(r); } bot.queue.add(guild.getController().modifyMemberRoles(member, rolesToAdd, rolesToRemove)); return true; } }