@Override public long getLongID() { return guild.getLongID(); } }
public GuildUnavailableEvent(IGuild guild) { super(guild); this.id = guild.getLongID(); }
/** * Gets the ID of the guild of the voice state. * * @return The ID of the guild of the voice state. */ @Override default long getLongID() { return getGuild().getLongID(); } }
@Override public List<IRole> getRolesForGuild(IGuild guild) { if (roles != null) { RolesHolder retrievedRoles = roles.get(guild.getLongID()); if (retrievedRoles != null && retrievedRoles.getObject() != null) return retrievedRoles.getObject().stream().filter(Objects::nonNull).collect(Collectors.toCollection(LinkedList::new)); } return new LinkedList<>(); }
@Override public String getNicknameForGuild(IGuild guild) { NickHolder holder = nicks.get(guild.getLongID()); return holder == null ? null : holder.getObject(); }
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; }
/** * 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; }
/** * Closes the websocket connection and removes this voice websocket instance from the {@link #shard}'s list of * connections. A {@link VoiceDisconnectedEvent} is dispatched. * * @param reason The reason to use in the dispatched {@link VoiceDisconnectedEvent}. */ public void disconnect(VoiceDisconnectedEvent.Reason reason) { try { shard.getClient().getDispatcher().dispatch(new VoiceDisconnectedEvent(getGuild(), reason)); shard.voiceWebSockets.remove(guild.getLongID()); heartbeat.shutdownNow(); voiceSocket.shutdown(); if (getSession() != null) getSession().close(1000, null); // Discord doesn't care about the reason wsClient.stop(); } catch (Exception e) { if (!(e instanceof InterruptedException)) { Discord4J.LOGGER.error(LogMarkers.VOICE_WEBSOCKET, "Error while shutting down voice websocket: ", e); } } Discord4J.LOGGER.info(LogMarkers.VOICE_WEBSOCKET, "Voice Websocket Disconnected."); }
PermissionOverride everyoneOverride = roleOverrides.get(guild.getLongID()); if (everyoneOverride != null) { base.retainAll(EnumSet.complementOf(everyoneOverride.deny()));
@Override public void request(IMessage message, Matcher m, Language lg) { //On check si la personne a bien les droits pour exécuter cette commande if (isUserHasEnoughRights(message)) { String value = m.group(1); if (value.matches("\\s+true") || value.matches("\\s+0") || value.matches("\\s+on")){ if (! TwitterFinder.getTwitterChannels().containsKey(message.getChannel().getLongID())) { new TwitterFinder(message.getGuild().getLongID(), message.getChannel().getLongID()).addToDatabase(); Message.sendText(message.getChannel(), Translator.getLabel(lg, "twitter.request.1") .replace("{twitter.name}", Translator.getLabel(lg, "twitter.name"))); } else twitterFound.throwException(message, this, lg); } else if (value.matches("\\s+false") || value.matches("\\s+1") || value.matches("\\s+off")){ if (TwitterFinder.getTwitterChannels().containsKey(message.getChannel().getLongID())) { TwitterFinder.getTwitterChannels().get(message.getChannel().getLongID()).removeToDatabase(); Message.sendText(message.getChannel(), Translator.getLabel(lg, "twitter.request.2") .replace("{twitter.name}", Translator.getLabel(lg, "twitter.name"))); } else twitterNotFound.throwException(message, this, lg); } else badUse.throwException(message, this, lg); } else BasicDiscordException.NO_ENOUGH_RIGHTS.throwException(message, this, lg); }
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; }
public static boolean hasSufficientRole(IGuild guild, IUser user) { GuildSettings settings = DatabaseManager.getManager().getSettings(guild.getLongID()); if (!settings.getControlRole().equalsIgnoreCase("everyone")) { String roleId = settings.getControlRole();
private void guildCreate(GuildObject json) { if (json.unavailable) { //Guild can't be reached, so we ignore it Discord4J.LOGGER.warn(LogMarkers.WEBSOCKET, "Guild with id {} is unavailable, ignoring it. Is there an outage?", json.id); return; } Guild guild = (Guild) DiscordUtils.getGuildFromJSON(shard, json); shard.guildCache.put(guild); new RequestBuilder(client).setAsync(true).doAction(() -> { try { if (json.large) { shard.ws.send(GatewayOps.REQUEST_GUILD_MEMBERS, new GuildMembersRequest(json.id)); client.getDispatcher().waitFor((AllUsersReceivedEvent e) -> e.getGuild().getLongID() == guild.getLongID() ); } } catch (InterruptedException e) { Discord4J.LOGGER.error(LogMarkers.EVENTS, "Wait for AllUsersReceivedEvent on guild create was interrupted.", e); } return true; }).andThen(() -> { guild.loadWebhooks(); client.dispatcher.dispatch(new GuildCreateEvent(guild)); Discord4J.LOGGER.debug(LogMarkers.EVENTS, "New guild has been created/joined! \"{}\" with ID {} on shard {}.", guild.getName(), guild.getStringID(), shard.getInfo()[0]); return true; }).execute(); }
/** * 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; } }
GuildSettings settings = DatabaseManager.getManager().getSettings(event.getGuild().getLongID()); if (!settings.getControlRole().equalsIgnoreCase("everyone")) { IUser sender = event.getMessage().getAuthor();
@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); }