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 Method | Data Type | Description |
addReadyListener | ReadyGatewayData | Bot is connected and ready |
addResumedListener | ResumedGatewayData | Session resumed after reconnect |
addSessionsReplaceListener | SessionsReplaceGatewayData | Sessions replaced |
Message Events
| Listener Method | Data Type | Description |
addMessageCreateListener | MessageGatewayData | New message sent |
addMessageUpdateListener | MessageUpdateGatewayData | Message edited |
addMessageDeleteListener | MessageDeleteGatewayData | Message deleted |
addMessageBulkDeleteListener | MessageBulkDeleteGatewayData | Multiple messages deleted |
addMessageAckListener | MessageAckGatewayData | Message 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 Method | Data Type | Description |
addChannelCreateListener | ChannelGatewayData | Channel created |
addChannelUpdateListener | ChannelGatewayData | Channel updated |
addChannelDeleteListener | ChannelGatewayData | Channel deleted |
addChannelUpdateBulkListener | ChannelUpdateBulkGatewayData | Bulk channel update |
addChannelRecipientAddListener | ChannelRecipientGatewayData | Recipient added to DM |
addChannelRecipientRemoveListener | ChannelRecipientGatewayData | Recipient removed from DM |
Guild Events
| Listener Method | Data Type | Description |
addGuildCreateListener | GuildGatewayData | Bot joined a guild / guild data received |
addGuildUpdateListener | GuildGatewayData | Guild settings updated |
addGuildDeleteListener | GuildDeleteGatewayData | Bot removed from guild / guild deleted |
addGuildBanAddListener | GuildBanGatewayData | User banned |
addGuildBanRemoveListener | GuildBanGatewayData | User unbanned |
addGuildEmojisUpdateListener | GuildEmojisUpdateGatewayData | Emojis updated |
addGuildStickersUpdateListener | GuildStickersUpdateGatewayData | Stickers updated |
Member Events
| Listener Method | Data Type | Description |
addGuildMemberAddListener | GuildMemberGatewayData | New member joined |
addGuildMemberUpdateListener | GuildMemberGatewayData | Member updated (roles, nick, etc.) |
addGuildMemberRemoveListener | GuildMemberGatewayData | Member left/kicked/banned |
addGuildMembersChunkListener | GuildMembersChunkGatewayData | Bulk member data received |
Role Events
| Listener Method | Data Type | Description |
addGuildRoleCreateListener | GuildRoleGatewayData | New role created |
addGuildRoleUpdateListener | GuildRoleGatewayData | Role modified |
addGuildRoleDeleteListener | GuildRoleDeleteGatewayData | Role deleted |
Reaction Events
| Listener Method | Data Type | Description |
addMessageReactionAddListener | MessageReactionGatewayData | Reaction added |
addMessageReactionRemoveListener | MessageReactionGatewayData | Reaction removed |
addMessageReactionRemoveAllListener | MessageReactionRemoveAllGatewayData | All reactions removed |
addMessageReactionRemoveEmojiListener | MessageReactionRemoveEmojiGatewayData | All reactions for a specific emoji removed |
Voice Events
| Listener Method | Data Type | Description |
addVoiceStateUpdateListener | VoiceStateGatewayData | User joins/leaves/moves voice channel |
addVoiceServerUpdateListener | VoiceServerUpdateGatewayData | Voice server endpoint changed |
addCallCreateListener | CallCreateGatewayData | Call started |
addCallUpdateListener | CallUpdateGatewayData | Call state changed |
addCallDeleteListener | CallDeleteGatewayData | Call ended |
User & Presence Events
| Listener Method | Data Type | Description |
addUserUpdateListener | UserGatewayData | User profile updated |
addPresenceUpdateListener | PresenceGatewayData | User presence changed (online/idle/dnd/offline) |
addTypingStartListener | TypingGatewayData | User started typing |
addTypingStopListener | TypingGatewayData | User stopped typing |
addRelationshipAddListener | RelationshipGatewayData | Friend/block relationship added |
addRelationshipRemoveListener | RelationshipGatewayData | Relationship removed |
Other Events
| Listener Method | Data Type | Description |
addInviteCreateListener | InviteCreateGatewayData | Guild invite created |
addInviteDeleteListener | InviteDeleteGatewayData | Invite deleted |
addWebhooksUpdateListener | WebhooksUpdateGatewayData | Webhooks updated for a channel |
addUserSettingsUpdateListener | UserSettingsGatewayData | User settings changed |
addUserGuildSettingsUpdateListener | UserGuildSettingsGatewayData | Per-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.