Search in sources :

Example 6 with Server

use of org.javacord.api.entity.server.Server in project Javacord by BtoBastian.

the class MessageDeleteBulkHandler method handle.

@Override
public void handle(JsonNode packet) {
    long channelId = Long.parseLong(packet.get("channel_id").asText());
    Optional<TextChannel> optionalChannel = api.getTextChannelById(channelId);
    if (optionalChannel.isPresent()) {
        TextChannel channel = optionalChannel.get();
        for (JsonNode messageIdJson : packet.get("ids")) {
            long messageId = messageIdJson.asLong();
            MessageDeleteEvent event = new MessageDeleteEventImpl(api, messageId, channel);
            api.getCachedMessageById(messageId).ifPresent(((MessageCacheImpl) channel.getMessageCache())::removeMessage);
            api.removeMessageFromCache(messageId);
            Optional<Server> optionalServer = channel.asServerChannel().map(ServerChannel::getServer);
            api.getEventDispatcher().dispatchMessageDeleteEvent(optionalServer.map(DispatchQueueSelector.class::cast).orElse(api), messageId, optionalServer.orElse(null), channel, event);
        }
    } else {
        LoggerUtil.logMissingChannel(logger, channelId);
    }
}
Also used : TextChannel(org.javacord.api.entity.channel.TextChannel) Server(org.javacord.api.entity.server.Server) JsonNode(com.fasterxml.jackson.databind.JsonNode) MessageDeleteEvent(org.javacord.api.event.message.MessageDeleteEvent) ServerChannel(org.javacord.api.entity.channel.ServerChannel) MessageDeleteEventImpl(org.javacord.core.event.message.MessageDeleteEventImpl) DispatchQueueSelector(org.javacord.core.util.event.DispatchQueueSelector)

Example 7 with Server

use of org.javacord.api.entity.server.Server in project Javacord by BtoBastian.

the class MessageReactionRemoveAllHandler method handle.

@Override
public void handle(JsonNode packet) {
    long messageId = packet.get("message_id").asLong();
    Optional<Message> message = api.getCachedMessageById(messageId);
    message.ifPresent(msg -> ((MessageImpl) msg).removeAllReactionsFromCache());
    long channelId = packet.get("channel_id").asLong();
    TextChannel channel = api.getTextChannelById(channelId).orElse(null);
    if (channel == null) {
        if (packet.hasNonNull("guild_id")) {
            // we don't know anything about the channel as it is part of a server and not cached
            LoggerUtil.logMissingChannel(logger, channelId);
            return;
        }
        // channel is a private channel:
        channel = PrivateChannelImpl.dispatchPrivateChannelCreateEvent(api, new PrivateChannelImpl(api, channelId, null, null));
    }
    ReactionRemoveAllEvent event = new ReactionRemoveAllEventImpl(api, messageId, channel);
    Optional<Server> optionalServer = channel.asServerChannel().map(ServerChannel::getServer);
    api.getEventDispatcher().dispatchReactionRemoveAllEvent(optionalServer.map(DispatchQueueSelector.class::cast).orElse(api), messageId, optionalServer.orElse(null), channel, event);
}
Also used : TextChannel(org.javacord.api.entity.channel.TextChannel) Message(org.javacord.api.entity.message.Message) Server(org.javacord.api.entity.server.Server) ReactionRemoveAllEventImpl(org.javacord.core.event.message.reaction.ReactionRemoveAllEventImpl) ReactionRemoveAllEvent(org.javacord.api.event.message.reaction.ReactionRemoveAllEvent) PrivateChannelImpl(org.javacord.core.entity.channel.PrivateChannelImpl) ServerChannel(org.javacord.api.entity.channel.ServerChannel) DispatchQueueSelector(org.javacord.core.util.event.DispatchQueueSelector)

Example 8 with Server

use of org.javacord.api.entity.server.Server in project Javacord by BtoBastian.

the class ThreadDeleteHandler method dispatchThreadDeleteEvent.

/**
 * Dispatches a thread delete event.
 *
 * @param serverThreadChannel The thread of the event.
 */
private void dispatchThreadDeleteEvent(final ServerThreadChannel serverThreadChannel) {
    final ThreadDeleteEvent event = new ThreadDeleteEventImpl(serverThreadChannel);
    final Server server = serverThreadChannel.getServer();
    api.getEventDispatcher().dispatchThreadDeleteEvent((DispatchQueueSelector) server, serverThreadChannel, event);
}
Also used : Server(org.javacord.api.entity.server.Server) ThreadDeleteEventImpl(org.javacord.core.event.channel.thread.ThreadDeleteEventImpl) ThreadDeleteEvent(org.javacord.api.event.channel.thread.ThreadDeleteEvent)

Example 9 with Server

use of org.javacord.api.entity.server.Server in project Javacord by BtoBastian.

the class DiscordWebSocketAdapter method onDisconnected.

@Override
public void onDisconnected(WebSocket websocket, WebSocketFrame serverCloseFrame, WebSocketFrame clientCloseFrame, boolean closedByServer) {
    Optional<WebSocketFrame> closeFrameOptional = Optional.ofNullable(closedByServer ? serverCloseFrame : clientCloseFrame);
    String closeReason = closeFrameOptional.map(WebSocketFrame::getCloseReason).orElse("unknown");
    String closeCodeString = closeFrameOptional.map(closeFrame -> {
        int code = closeFrame.getCloseCode();
        return WebSocketCloseCode.fromCode(code).map(closeCode -> closeCode + " (" + code + ")").orElseGet(() -> String.valueOf(code));
    }).orElse("'unknown'");
    logger.info("Websocket closed with reason '{}' and code {} by {}!", closeReason, closeCodeString, closedByServer ? "server" : "client");
    LostConnectionEvent lostConnectionEvent = new LostConnectionEventImpl(api);
    api.getEventDispatcher().dispatchLostConnectionEvent(null, lostConnectionEvent);
    // Squash it, until it stops beating
    heart.squash();
    if (!ready.isDone()) {
        ready.complete(false);
        return;
    }
    // Reconnect
    if (reconnect) {
        reconnectingOrResumingLock.lock();
        try {
            reconnectAttempt.incrementAndGet();
        } finally {
            reconnectingOrResumingLock.unlock();
        }
        logger.info("Trying to reconnect/resume in {} seconds!", api.getReconnectDelay(reconnectAttempt.get()));
        // Reconnect after a (short?) delay depending on the amount of reconnect attempts
        api.getThreadPool().getScheduler().schedule(this::connect, api.getReconnectDelay(reconnectAttempt.get()), TimeUnit.SECONDS);
    }
}
Also used : ResumeEventImpl(org.javacord.core.event.connection.ResumeEventImpl) UserUpdateHandler(org.javacord.core.util.handler.user.UserUpdateHandler) RestMethod(org.javacord.core.util.rest.RestMethod) TypingStartHandler(org.javacord.core.util.handler.user.TypingStartHandler) Proxy(java.net.Proxy) ThreadMembersUpdateHandler(org.javacord.core.util.handler.channel.thread.ThreadMembersUpdateHandler) Map(java.util.Map) JsonNode(com.fasterxml.jackson.databind.JsonNode) NvWebSocketRouteImpl(org.javacord.core.util.auth.NvWebSocketRouteImpl) ReadWriteLock(java.util.concurrent.locks.ReadWriteLock) ThreadListSyncHandler(org.javacord.core.util.handler.channel.thread.ThreadListSyncHandler) Activity(org.javacord.api.entity.activity.Activity) MessageUpdateHandler(org.javacord.core.util.handler.message.MessageUpdateHandler) BlockingQueue(java.util.concurrent.BlockingQueue) Logger(org.apache.logging.log4j.Logger) JsonNodeFactory(com.fasterxml.jackson.databind.node.JsonNodeFactory) ChannelDeleteHandler(org.javacord.core.util.handler.channel.ChannelDeleteHandler) WebSocketFactory(com.neovisionaries.ws.client.WebSocketFactory) MessageCreateHandler(org.javacord.core.util.handler.message.MessageCreateHandler) NvWebSocketResponseImpl(org.javacord.core.util.auth.NvWebSocketResponseImpl) InviteDeleteHandler(org.javacord.core.util.handler.channel.invite.InviteDeleteHandler) ThreadUpdateHandler(org.javacord.core.util.handler.channel.thread.ThreadUpdateHandler) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) ChannelPinsUpdateHandler(org.javacord.core.util.handler.channel.ChannelPinsUpdateHandler) ArrayList(java.util.ArrayList) GuildMembersChunkHandler(org.javacord.core.util.handler.guild.GuildMembersChunkHandler) PasswordAuthentication(java.net.PasswordAuthentication) VoiceServerUpdateHandler(org.javacord.core.util.handler.guild.VoiceServerUpdateHandler) MessageReactionAddHandler(org.javacord.core.util.handler.message.reaction.MessageReactionAddHandler) GuildMemberAddHandler(org.javacord.core.util.handler.guild.GuildMemberAddHandler) GuildRoleUpdateHandler(org.javacord.core.util.handler.guild.role.GuildRoleUpdateHandler) DiscordApiImpl(org.javacord.core.DiscordApiImpl) PresenceUpdateHandler(org.javacord.core.util.handler.user.PresenceUpdateHandler) LoggerUtil(org.javacord.core.util.logging.LoggerUtil) Lock(java.util.concurrent.locks.Lock) Intent(org.javacord.api.entity.intent.Intent) User(org.javacord.api.entity.user.User) GuildBanAddHandler(org.javacord.core.util.handler.guild.GuildBanAddHandler) WebhooksUpdateHandler(org.javacord.core.util.handler.channel.WebhooksUpdateHandler) GuildMemberRemoveHandler(org.javacord.core.util.handler.guild.GuildMemberRemoveHandler) SocketAddress(java.net.SocketAddress) GuildRoleDeleteHandler(org.javacord.core.util.handler.guild.role.GuildRoleDeleteHandler) URL(java.net.URL) ChannelCreateHandler(org.javacord.core.util.handler.channel.ChannelCreateHandler) PriorityBlockingQueue(java.util.concurrent.PriorityBlockingQueue) ProxySelector(java.net.ProxySelector) Authenticator(org.javacord.api.util.auth.Authenticator) GuildBanRemoveHandler(org.javacord.core.util.handler.guild.GuildBanRemoveHandler) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) GuildUpdateHandler(org.javacord.core.util.handler.guild.GuildUpdateHandler) RestRequest(org.javacord.core.util.rest.RestRequest) InteractionCreateHandler(org.javacord.core.util.handler.interaction.InteractionCreateHandler) URI(java.net.URI) GuildEmojisUpdateHandler(org.javacord.core.util.handler.guild.GuildEmojisUpdateHandler) ServerImpl(org.javacord.core.entity.server.ServerImpl) GuildDeleteHandler(org.javacord.core.util.handler.guild.GuildDeleteHandler) ThreadCreateHandler(org.javacord.core.util.handler.channel.thread.ThreadCreateHandler) GuildStickersUpdateHandler(org.javacord.core.util.handler.guild.GuildStickersUpdateHandler) AtomicMarkableReference(java.util.concurrent.atomic.AtomicMarkableReference) InetSocketAddress(java.net.InetSocketAddress) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) ServerVoiceChannel(org.javacord.api.entity.channel.ServerVoiceChannel) MessageReactionRemoveAllHandler(org.javacord.core.util.handler.message.reaction.MessageReactionRemoveAllHandler) RestEndpoint(org.javacord.core.util.rest.RestEndpoint) List(java.util.List) LostConnectionEvent(org.javacord.api.event.connection.LostConnectionEvent) WebSocketListener(com.neovisionaries.ws.client.WebSocketListener) WebSocketException(com.neovisionaries.ws.client.WebSocketException) Optional(java.util.Optional) ResumeEvent(org.javacord.api.event.connection.ResumeEvent) ResumedHandler(org.javacord.core.util.handler.ResumedHandler) ReadyHandler(org.javacord.core.util.handler.ReadyHandler) GuildMemberUpdateHandler(org.javacord.core.util.handler.guild.GuildMemberUpdateHandler) Nameable(org.javacord.api.entity.Nameable) VoiceStateUpdateHandler(org.javacord.core.util.handler.guild.VoiceStateUpdateHandler) Request(org.javacord.api.util.auth.Request) HashMap(java.util.HashMap) CompletableFuture(java.util.concurrent.CompletableFuture) PresencesReplaceHandler(org.javacord.core.util.handler.user.PresencesReplaceHandler) AtomicReference(java.util.concurrent.atomic.AtomicReference) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) GuildCreateHandler(org.javacord.core.util.handler.guild.GuildCreateHandler) ProxySettings(com.neovisionaries.ws.client.ProxySettings) ReconnectEvent(org.javacord.api.event.connection.ReconnectEvent) DataFormatException(java.util.zip.DataFormatException) TrustAllTrustManager(org.javacord.core.util.http.TrustAllTrustManager) ThreadDeleteHandler(org.javacord.core.util.handler.channel.thread.ThreadDeleteHandler) ReconnectEventImpl(org.javacord.core.event.connection.ReconnectEventImpl) WeakHashMap(java.util.WeakHashMap) ExecutorService(java.util.concurrent.ExecutorService) MessageDeleteBulkHandler(org.javacord.core.util.handler.message.MessageDeleteBulkHandler) ReentrantLock(java.util.concurrent.locks.ReentrantLock) WebSocketFrame(com.neovisionaries.ws.client.WebSocketFrame) LostConnectionEventImpl(org.javacord.core.event.connection.LostConnectionEventImpl) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) WebSocketLogger(org.javacord.core.util.logging.WebSocketLogger) ChannelUpdateHandler(org.javacord.core.util.handler.channel.ChannelUpdateHandler) MessageReactionRemoveHandler(org.javacord.core.util.handler.message.reaction.MessageReactionRemoveHandler) WebSocketAdapter(com.neovisionaries.ws.client.WebSocketAdapter) Javacord(org.javacord.api.Javacord) TimeUnit(java.util.concurrent.TimeUnit) InviteCreateHandler(org.javacord.core.util.handler.channel.invite.InviteCreateHandler) Condition(java.util.concurrent.locks.Condition) MessageDeleteHandler(org.javacord.core.util.handler.message.MessageDeleteHandler) Server(org.javacord.api.entity.server.Server) WebSocket(com.neovisionaries.ws.client.WebSocket) GuildRoleCreateHandler(org.javacord.core.util.handler.guild.role.GuildRoleCreateHandler) Collections(java.util.Collections) LostConnectionEventImpl(org.javacord.core.event.connection.LostConnectionEventImpl) LostConnectionEvent(org.javacord.api.event.connection.LostConnectionEvent) WebSocketFrame(com.neovisionaries.ws.client.WebSocketFrame)

Example 10 with Server

use of org.javacord.api.entity.server.Server in project Javacord by BtoBastian.

the class ChannelPinsUpdateHandler method handle.

@Override
public void handle(JsonNode packet) {
    long channelId = packet.get("channel_id").asLong();
    Optional<TextChannel> optionalChannel = api.getTextChannelById(channelId);
    if (optionalChannel.isPresent()) {
        TextChannel channel = optionalChannel.get();
        Instant lastPinTimestamp = packet.hasNonNull("last_pin_timestamp") ? OffsetDateTime.parse(packet.get("last_pin_timestamp").asText()).toInstant() : null;
        ChannelPinsUpdateEvent event = new ChannelPinsUpdateEventImpl(channel, lastPinTimestamp);
        Optional<Server> optionalServer = channel.asServerChannel().map(ServerChannel::getServer);
        api.getEventDispatcher().dispatchChannelPinsUpdateEvent(optionalServer.map(DispatchQueueSelector.class::cast).orElse(api), optionalServer.orElse(null), channel, event);
    } else {
        LoggerUtil.logMissingChannel(logger, channelId);
    }
}
Also used : TextChannel(org.javacord.api.entity.channel.TextChannel) Server(org.javacord.api.entity.server.Server) Instant(java.time.Instant) ChannelPinsUpdateEvent(org.javacord.api.event.message.ChannelPinsUpdateEvent) ChannelPinsUpdateEventImpl(org.javacord.core.event.message.ChannelPinsUpdateEventImpl) ServerChannel(org.javacord.api.entity.channel.ServerChannel) DispatchQueueSelector(org.javacord.core.util.event.DispatchQueueSelector)

Aggregations

Server (org.javacord.api.entity.server.Server)13 ServerChannel (org.javacord.api.entity.channel.ServerChannel)8 DispatchQueueSelector (org.javacord.core.util.event.DispatchQueueSelector)8 TextChannel (org.javacord.api.entity.channel.TextChannel)7 JsonNode (com.fasterxml.jackson.databind.JsonNode)5 Message (org.javacord.api.entity.message.Message)4 ArrayList (java.util.ArrayList)3 JsonNodeFactory (com.fasterxml.jackson.databind.node.JsonNodeFactory)2 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)2 URL (java.net.URL)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Map (java.util.Map)2 CompletableFuture (java.util.concurrent.CompletableFuture)2 Emoji (org.javacord.api.entity.emoji.Emoji)2 Role (org.javacord.api.entity.permission.Role)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)1 ProxySettings (com.neovisionaries.ws.client.ProxySettings)1 WebSocket (com.neovisionaries.ws.client.WebSocket)1