Gateway Events

GatewayClient connects to the Fluxer WebSocket gateway for real-time events. It handles heartbeats, reconnection, and session resumption automatically.

Connecting

GatewayClient gateway = new GatewayClient("Bot YOUR_TOKEN", config);

// Register listeners before connecting
gateway.addReadyListener(ready -> {
    System.out.println("Connected as " + ready.getUser().getUsername());
});

// Connect (returns CompletableFuture)
gateway.connectAsync().join();

// When done:
gateway.close();

Registering Event Listeners

All listeners accept a Consumer<T> where T is the typed event data class. You can register multiple listeners for the same event.

// Lambda style
gateway.addMessageCreateListener(msg -> {
    System.out.println(msg.getContent());
});

// Method reference
gateway.addMessageCreateListener(this::handleMessage);

// Multiple listeners are supported
gateway.addMessageCreateListener(msg -> logMessage(msg));
gateway.addMessageCreateListener(msg -> processCommand(msg));

Session Events

Listener MethodData TypeDescription
addReadyListenerReadyGatewayDataBot is connected and ready
addResumedListenerResumedGatewayDataSession resumed after reconnect
addSessionsReplaceListenerSessionsReplaceGatewayDataSessions replaced

Message Events

Listener MethodData TypeDescription
addMessageCreateListenerMessageGatewayDataNew message sent
addMessageUpdateListenerMessageUpdateGatewayDataMessage edited
addMessageDeleteListenerMessageDeleteGatewayDataMessage deleted
addMessageBulkDeleteListenerMessageBulkDeleteGatewayDataMultiple messages deleted
addMessageAckListenerMessageAckGatewayDataMessage acknowledged
gateway.addMessageCreateListener(msg -> {
    if (msg.getAuthor() != null) {
        System.out.println(
            "[" + msg.getChannelId() + "] "
            + msg.getAuthor().getUsername() + ": "
            + msg.getContent()
        );
    }
});

gateway.addMessageDeleteListener(del -> {
    System.out.println("Message " + del.getMessageId() + " deleted");
});

Channel Events

Listener MethodData TypeDescription
addChannelCreateListenerChannelGatewayDataChannel created
addChannelUpdateListenerChannelGatewayDataChannel updated
addChannelDeleteListenerChannelGatewayDataChannel deleted
addChannelUpdateBulkListenerChannelUpdateBulkGatewayDataBulk channel update
addChannelRecipientAddListenerChannelRecipientGatewayDataRecipient added to DM
addChannelRecipientRemoveListenerChannelRecipientGatewayDataRecipient removed from DM

Guild Events

Listener MethodData TypeDescription
addGuildCreateListenerGuildGatewayDataBot joined a guild / guild data received
addGuildUpdateListenerGuildGatewayDataGuild settings updated
addGuildDeleteListenerGuildDeleteGatewayDataBot removed from guild / guild deleted
addGuildBanAddListenerGuildBanGatewayDataUser banned
addGuildBanRemoveListenerGuildBanGatewayDataUser unbanned
addGuildEmojisUpdateListenerGuildEmojisUpdateGatewayDataEmojis updated
addGuildStickersUpdateListenerGuildStickersUpdateGatewayDataStickers updated

Member Events

Listener MethodData TypeDescription
addGuildMemberAddListenerGuildMemberGatewayDataNew member joined
addGuildMemberUpdateListenerGuildMemberGatewayDataMember updated (roles, nick, etc.)
addGuildMemberRemoveListenerGuildMemberGatewayDataMember left/kicked/banned
addGuildMembersChunkListenerGuildMembersChunkGatewayDataBulk member data received

Role Events

Listener MethodData TypeDescription
addGuildRoleCreateListenerGuildRoleGatewayDataNew role created
addGuildRoleUpdateListenerGuildRoleGatewayDataRole modified
addGuildRoleDeleteListenerGuildRoleDeleteGatewayDataRole deleted

Reaction Events

Listener MethodData TypeDescription
addMessageReactionAddListenerMessageReactionGatewayDataReaction added
addMessageReactionRemoveListenerMessageReactionGatewayDataReaction removed
addMessageReactionRemoveAllListenerMessageReactionRemoveAllGatewayDataAll reactions removed
addMessageReactionRemoveEmojiListenerMessageReactionRemoveEmojiGatewayDataAll reactions for a specific emoji removed

Voice Events

Listener MethodData TypeDescription
addVoiceStateUpdateListenerVoiceStateGatewayDataUser joins/leaves/moves voice channel
addVoiceServerUpdateListenerVoiceServerUpdateGatewayDataVoice server endpoint changed
addCallCreateListenerCallCreateGatewayDataCall started
addCallUpdateListenerCallUpdateGatewayDataCall state changed
addCallDeleteListenerCallDeleteGatewayDataCall ended

User & Presence Events

Listener MethodData TypeDescription
addUserUpdateListenerUserGatewayDataUser profile updated
addPresenceUpdateListenerPresenceGatewayDataUser presence changed (online/idle/dnd/offline)
addTypingStartListenerTypingGatewayDataUser started typing
addTypingStopListenerTypingGatewayDataUser stopped typing
addRelationshipAddListenerRelationshipGatewayDataFriend/block relationship added
addRelationshipRemoveListenerRelationshipGatewayDataRelationship removed

Other Events

Listener MethodData TypeDescription
addInviteCreateListenerInviteCreateGatewayDataGuild invite created
addInviteDeleteListenerInviteDeleteGatewayDataInvite deleted
addWebhooksUpdateListenerWebhooksUpdateGatewayDataWebhooks updated for a channel
addUserSettingsUpdateListenerUserSettingsGatewayDataUser settings changed
addUserGuildSettingsUpdateListenerUserGuildSettingsGatewayDataPer-guild user settings changed

Event Filtering

Reduce noise by ignoring specific events via configuration:

FluxerConfig config = FluxerConfig.builder()
    .ignoredGatewayEvents(List.of(
        "PRESENCE_UPDATE",
        "TYPING_START",
        "TYPING_STOP"
    ))
    .build();
💡
Ignoring high-frequency events like PRESENCE_UPDATE and TYPING_START can significantly reduce CPU and memory usage for large bots.