@Override public long getLongID() { return guild.getLongID(); } }
/** * Builds the invite URL with the configuration specified by the builder. * * @return The invite URL with the configuration specified by the builder. */ public String build() { String url = DiscordEndpoints.AUTHORIZE+"?client_id=%s&scope=bot"; if (permissions != null) url += "&permissions="+Permissions.generatePermissionsNumber(permissions); if (guild != null) url += "&guild_id="+guild.getStringID(); try { return String.format(url, clientIDOverride == null ? client.getApplicationClientID() : clientIDOverride); } catch (DiscordException e) { Discord4J.LOGGER.error(LogMarkers.UTIL, "Discord4J Internal Exception", e); } return null; }
@Override public List<IUser> getUsersHere() { return guild.getUsers().stream().filter((user) -> { EnumSet<Permissions> permissions = getModifiedPermissions(user); return Permissions.READ_MESSAGES.hasPermission(Permissions.generatePermissionsNumber(permissions), true); }).collect(Collectors.toList()); }
/** * 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)); }
@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 synchronized static Guild getGuild(IGuild discordGuild, boolean forceCache){ Guild guild = getGuilds().get(discordGuild.getStringID()); if (guild == null && forceCache){ guild = new Guild(discordGuild.getStringID(), discordGuild.getName(), Constants.defaultLanguage); guild.addToDatabase(); } return guild; }
public WebGuild fromGuild(IGuild g) { id = g.getStringID(); name = g.getName(); iconUrl = g.getIconURL(); botNick = g.getClient().getOurUser().getNicknameForGuild(g); settings = DatabaseManager.getManager().getSettings(g.getLongID()); //Handle lists and stuffs for (IRole r : g.getRoles()) { roles.add(new WebRole().fromRole(r, settings)); } WebChannel all = new WebChannel(); all.setId(0); all.setName("All Channels"); all.setDiscalChannel(settings.getDiscalChannel().equalsIgnoreCase("all")); channels.add(all); for (IChannel c : g.getChannels()) { channels.add(new WebChannel().fromChannel(c, settings)); } announcements.addAll(DatabaseManager.getManager().getAnnouncements(g.getLongID())); calendar = new WebCalendar().fromCalendar(DatabaseManager.getManager().getMainCalendar(Long.valueOf(id)), settings); return this; }
@EventSubscriber public void onReady(GuildCreateEvent event) { try { if (!Guild.getGuilds().containsKey(event.getGuild().getStringID())) { Guild guild = new Guild(event.getGuild().getStringID(), event.getGuild().getName(), Translator.detectLanguage(event.getGuild().getDefaultChannel())); guild.addToDatabase(); .replaceAll("\\{almanax-auto\\}", new AlmanaxAutoCommand().getName()) .replaceAll("\\{rss\\}", new RSSCommand().getName()) .replaceAll("\\{owner\\}", event.getGuild().getOwner().mention()) .replaceAll("\\{guild\\}", event.getGuild().getName()); if (event.getGuild().getDefaultChannel() != null && event.getGuild().getDefaultChannel() .getModifiedPermissions(ClientConfig.DISCORD().getOurUser()) .contains(Permissions.SEND_MESSAGES)) 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 [" + event.getGuild().getUsers().size() + " utilisateurs");
guild.removeToDatabase(); LOG.info("La guilde " + event.getGuild().getStringID() + " - " + event.getGuild().getName() + " a supprimé " + Constants.name); IChannel chan = event.getGuild().getChannelByID(Long.parseLong(finder.getChan())); if (chan != null && chan.isDeleted()) { finder.removeToDatabase(); IChannel chan = event.getGuild().getChannelByID(finder.getChannelId()); if (chan != null && chan.isDeleted()) { finder.removeToDatabase(); IChannel chan = event.getGuild().getChannelByID(Long.parseLong(finder.getChan())); if (chan != null && chan.isDeleted()) { finder.removeToDatabase(); "[LOSE] **" + event.getGuild().getName() + "**, -" + event.getGuild().getUsers().size() + " utilisateurs"); } catch(Exception e){
/** * Converts a json {@link MemberObject} to a {@link IUser}. This method uses {@link #getUserFromJSON(IShard, UserObject)} * to get or create a {@link IUser} and then updates the guild's appropriate member caches for that user. * * @param guild The guild the member belongs to. * @param json The json object representing the member. * @return The converted user object. */ public static IUser getUserFromGuildMemberResponse(IGuild guild, MemberObject json) { User user = getUserFromJSON(guild.getShard(), json.user); for (String role : json.roles) { Role roleObj = (Role) guild.getRoleByID(Long.parseUnsignedLong(role)); if (roleObj != null && !user.getRolesForGuild(guild).contains(roleObj)) user.addRole(guild.getLongID(), roleObj); } user.addRole(guild.getLongID(), guild.getRoleByID(guild.getLongID())); //@everyone role user.addNick(guild.getLongID(), json.nick); VoiceState voiceState = (VoiceState) user.getVoiceStateForGuild(guild); voiceState.setDeafened(json.deaf); voiceState.setMuted(json.mute); ((Guild) guild).joinTimes.put(new Guild.TimeStampHolder(user.getLongID(), convertFromTimestamp(json.joined_at))); return user; }
public static boolean hasSufficientRole(IGuild guild, IUser user) { GuildSettings settings = DatabaseManager.getManager().getSettings(guild.getLongID()); if (!settings.getControlRole().equalsIgnoreCase("everyone")) { String roleId = settings.getControlRole(); IRole role = null; for (IRole r : guild.getRoles()) { if (r.getStringID().equals(roleId)) { role = r;
private synchronized GuildMusicManager getGuildAudioPlayer(IGuild guild) { long guildId = guild.getLongID(); GuildMusicManager musicManager = musicManagers.get(guildId); if (musicManager == null) { musicManager = new GuildMusicManager(playerManager); musicManagers.put(guildId, musicManager); } guild.getAudioManager().setAudioProvider(musicManager.getAudioProvider()); return musicManager; }
@Override public void leave() { getShard().checkReady("leave voice channel"); if (!isConnected()) return; VoiceState voiceState = (VoiceState) getClient().getOurUser().getVoiceStateForGuild(getGuild()); boolean isSelfMuted = voiceState.isSelfMuted(); boolean isSelfDeafened = voiceState.isSelfDeafened(); ((ShardImpl) getShard()).ws.send(GatewayOps.VOICE_STATE_UPDATE, new VoiceStateUpdateRequest(getGuild().getStringID(), null, isSelfMuted, isSelfDeafened)); DiscordVoiceWS vWS = ((ShardImpl) getShard()).voiceWebSockets.get(getGuild().getLongID()); if (vWS != null) { vWS.disconnect(VoiceDisconnectedEvent.Reason.LEFT_CHANNEL); } voiceState.setChannel(null); }
int totalUser = 0; for (IGuild guild : ClientConfig.DISCORD().getGuilds()) totalUser += guild.getUsers().size(); int ladder = 1; for(IGuild guild : guilds) st.append(ladder++).append(" : **").append(guild.getName()).append("**, ") .append(guild.getTotalMemberCount()).append(" users\n");
public static IUser getIUser(String toLookFor, IMessage m, IGuild guild) { toLookFor = toLookFor.trim(); final String lower = toLookFor.toLowerCase(); IUser res = null; if (m != null && !m.getMentions().isEmpty()) res = m.getMentions().get(0); if (toLookFor.matches("<@!?[0-9]+>")) { IUser u = guild.getUserByID(Long.parseUnsignedLong(toLookFor.replaceAll("[^0-9]", ""))); if (u != null) return u; } List<IUser> users = guild.getUsers().stream() .filter(u -> u.getName().toLowerCase().contains(lower) || u.getName().equalsIgnoreCase(lower) || u.getStringID().equals(lower) || u.getDisplayName(guild).toLowerCase().contains(lower) || u.getDisplayName(guild).equalsIgnoreCase(lower)) .collect(Collectors.toList()); if (!users.isEmpty()) res = users.get(0); return res; }
/** * Checks if the user sent the command in a DisCal channel (if set). * * @param event The event received to check for the correct channel. * @return <code>true</code> if in correct channel, otherwise <code>false</code>. */ public static boolean isCorrectChannel(MessageReceivedEvent event) { try { GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuild().getLongID()); if (settings.getDiscalChannel().equalsIgnoreCase("all")) return true; IChannel channel = null; for (IChannel c : event.getMessage().getGuild().getChannels()) { if (c.getStringID().equals(settings.getDiscalChannel())) { channel = c; break; } } if (channel != null) return event.getMessage().getChannel().getStringID().equals(channel.getStringID()); //If we got here, the channel no longer exists, reset data and return true. settings.setDiscalChannel("all"); DatabaseManager.getManager().updateSettings(settings); return true; } catch (Exception e) { //Catch any errors so that the bot always responds... Logger.getLogger().exception(event.getMessage().getAuthor(), "Failed to check for discal channel.", e, PermissionChecker.class); return true; } }
case CHANNEL_OVERWRITE_UPDATE: case CHANNEL_OVERWRITE_DELETE: IChannel channel = guild.getChannelByID(targetID); if (channel == null) channel = guild.getVoiceChannelByID(targetID); case ROLE_CREATE: case ROLE_UPDATE: IRole role = guild.getRoleByID(targetID); case EMOJI_CREATE: case EMOJI_UPDATE: IEmoji emoji = guild.getEmojiByID(targetID);
/** * Converts a json {@link EmojiObject} to a {@link IEmoji}. * * @param guild The guild the emoji belongs to. * @param json The json object representing the emoji. * @return The converted emoji object. */ public static IEmoji getEmojiFromJSON(IGuild guild, EmojiObject json) { long id = Long.parseUnsignedLong(json.id); List<IRole> roles = Arrays.stream(json.roles) .map(role -> guild.getRoleByID(Long.parseUnsignedLong(role))) .collect(Collectors.toList()); EmojiImpl emoji = (EmojiImpl) guild.getEmojiByID(id); if (emoji != null) { emoji.setName(json.name); emoji.setRoles(roles); return emoji; } Cache<IRole> roleCache = new Cache<>((DiscordClientImpl) guild.getClient(), IRole.class); roleCache.putAll(roles); return new EmojiImpl(id, guild, json.name, roleCache, json.require_colons, json.managed, json.animated); }
@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); }
PermissionOverride everyoneOverride = roleOverrides.get(guild.getLongID()); if (everyoneOverride != null) { base.retainAll(EnumSet.complementOf(everyoneOverride.deny())); EnumSet<Permissions> deny = EnumSet.noneOf(Permissions.class); for (IRole role : guild.getRolesForUser(user)) { PermissionOverride roleOverride = roleOverrides.get(role.getLongID()); if (roleOverride != null) {