@Override public boolean isEveryoneRole() { return guild.getEveryoneRole().equals(this); }
@Override public EnumSet<Permissions> getPermissionsForGuild(IGuild guild) { if (guild.getOwner().equals(this)) { return EnumSet.allOf(Permissions.class); } IRole everyone = guild.getEveryoneRole(); EnumSet<Permissions> permissions = everyone.getPermissions(); for (IRole role : guild.getRolesForUser(this)) { permissions.addAll(role.getPermissions()); } if (permissions.contains(Permissions.ADMINISTRATOR)) { return EnumSet.allOf(Permissions.class); } return permissions; }
/** * Gets the permissions a role has after applying overrides. * * @param role The role to get permissions for. * @param roleOverrides The internal role overrides cache. * @return The permissions the role has in the permissions object. */ public static EnumSet<Permissions> getModifiedPermissions(IRole role, Cache<PermissionOverride> roleOverrides) { EnumSet<Permissions> base = role.getPermissions(); PermissionOverride override = roleOverrides.get(role.getLongID()); if (override == null) { if ((override = roleOverrides.get(role.getGuild().getEveryoneRole().getLongID())) == null) return base; } base.addAll(new ArrayList<>(override.allow())); override.deny().forEach(base::remove); return base; }