/** * Determines if user1 is higher in the role hierarchy than user2 in the given guild. * This is determined by the positions of each of the users' highest roles. * * @param guild The guild both users belongs to. * @param user1 The user who must be higher in the role hierarchy. * @param user2 The user who must be lower in the role hierarchy. * @return True if user1 is higher in the role hierarchy than user2. */ public static boolean isUserHigher(IGuild guild, IUser user1, IUser user2) { if (guild.getOwner().equals(user1)) return true; if (guild.getOwner().equals(user2)) return false; return hasHigherRoles(guild.getRolesForUser(user1), guild.getRolesForUser(user2)); }
private void guildUpdate(GuildObject json) { Guild toUpdate = (Guild) client.getGuildByID(Long.parseUnsignedLong(json.id)); if (toUpdate != null) { IGuild oldGuild = toUpdate.copy(); toUpdate = (Guild) DiscordUtils.getGuildFromJSON(shard, json); if (toUpdate.getOwnerLongID() != oldGuild.getOwnerLongID()) { client.dispatcher.dispatch(new GuildTransferOwnershipEvent(oldGuild.getOwner(), toUpdate.getOwner(), toUpdate)); } else { client.dispatcher.dispatch(new GuildUpdateEvent(oldGuild, toUpdate)); } } }
/** * Determines if the given user is higher in the role hierarchy than all of the given roles. * This is determined by the position of the user's highest role and the position of the highest role in roles. * * @param guild The guild the user and roles belong to. * @param user The user who must be higher in the role hierarchy. * @param roles The roles which must be lower in the role hierarchy. * @return True if the user is higher in the role hierarchy than every role in roles. */ public static boolean isUserHigher(IGuild guild, IUser user, List<IRole> roles) { if (guild.getOwner().equals(user)) return true; return hasHigherRoles(guild.getRolesForUser(user), roles); }
@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; }
public void throwException(IChannel channel, Language lg, MissingPermissionsException e) { StringBuilder st = new StringBuilder(Translator.getLabel(lg, "exception.missing_permission") .replace("{channel.name}", channel.getName())); for(Permissions p : e.getMissingPermissions()) st.append(Translator.getLabel(lg, PERMISSION_PREFIX + p.name().toLowerCase())).append(", "); st.delete(st.length() - 2, st.length()).append("."); if (channel.getModifiedPermissions(ClientConfig.DISCORD().getOurUser()).contains(Permissions.SEND_MESSAGES)) Message.sendText(channel, st.toString()); else try { Message.sendText(channel.getGuild().getOwner().getOrCreatePMChannel(), st.toString()); } catch(sx.blah.discord.util.DiscordException de){ LOG.warn("throwException", "Impossible de contacter l'administrateur de la guilde [" + channel.getGuild().getName() + "]."); } } }
@Override public void request(IMessage message, Matcher m, Language lg) { if (isUserHasEnoughRights(message)) { String newPrefix = m.group(1).trim(); if (newPrefix.length() >= 1 && newPrefix.length() <= Constants.prefixeLimit) { Guild.getGuild(message.getGuild()).setPrefix(newPrefix); Message.sendText(message.getChannel(), Translator.getLabel(lg, "prefix.request.1") .replace("{prefix}", getPrefixMdEscaped(message))); try { Message.sendText(message.getGuild().getOwner().getOrCreatePMChannel(), Translator.getLabel(lg, "prefix.request.2") .replace("{prefix}", getPrefixMdEscaped(message)) .replace("{guild.name}", message.getGuild().getName())); } catch (DiscordException e){ LOG.warn("request", "Impossible de contacter l'administrateur de la guilde [" + message.getGuild().getName() + "]."); } } else prefixeOutOfBounds.throwException(message, this, lg); } else BasicDiscordException.NO_ENOUGH_RIGHTS.throwException(message, this, lg); }
@Override public void request(IMessage message, Matcher m, Language lg) { String text = m.group(2).trim(); if (m.group(1) != null) { for (IGuild guild : ClientConfig.DISCORD().getGuilds()) try { if (guild.getDefaultChannel().getModifiedPermissions(ClientConfig.DISCORD().getOurUser()) .contains(Permissions.SEND_MESSAGES)) Message.sendText(guild.getDefaultChannel(), text); else Message.sendText(guild.getOwner().getOrCreatePMChannel(), text); } catch(DiscordException e){ LOG.warn("onReady", "Impossible de contacter l'administrateur de la guilde [" + guild.getName() + "]."); } catch (Exception e2){ LOG.warn("onReady", e2); } Message.sendText(message.getChannel(), Translator.getLabel(lg, "announce.request.1") + " " + ClientConfig.DISCORD().getGuilds().size() + " " + Translator.getLabel(lg, "announce.request.2") + (ClientConfig.DISCORD().getGuilds().size() > 1?"s":"") + "." ); } else Message.sendText(message.getChannel(), text); }
.replaceAll("\\{almanax-auto\\}", new AlmanaxAutoCommand().getName()) .replaceAll("\\{rss\\}", new RSSCommand().getName()) .replaceAll("\\{owner\\}", event.getGuild().getOwner().mention()) .replaceAll("\\{guild\\}", event.getGuild().getName()); Message.sendText(event.getGuild().getDefaultChannel(), customMessage); else try { Message.sendText(event.getGuild().getOwner().getOrCreatePMChannel(), customMessage); } catch (DiscordException e) { LOG.warn("onReady", "Impossible de contacter l'administrateur de la guilde ["