The DefaultShardManagerBuilder is used to create and configure ShardManager instances with various settings for sharded Discord bots.
Creating a Builder
createDefault
Creates a builder with recommended default settings.
static DefaultShardManagerBuilder createDefault(String token)
static DefaultShardManagerBuilder createDefault(String token, GatewayIntent intent, GatewayIntent... intents)
static DefaultShardManagerBuilder createDefault(String token, Collection<GatewayIntent> intents)
intents
Collection<GatewayIntent>
Gateway intents to enable
Default settings:
- MemberCachePolicy:
DEFAULT
- ChunkingFilter:
NONE
- Intents:
GatewayIntent.DEFAULT
- Disables
ACTIVITY and CLIENT_STATUS cache flags
Example:
ShardManager manager = DefaultShardManagerBuilder
.createDefault("YOUR_BOT_TOKEN")
.build();
createLight
Creates a builder with minimal memory usage settings.
static DefaultShardManagerBuilder createLight(String token)
static DefaultShardManagerBuilder createLight(String token, GatewayIntent intent, GatewayIntent... intents)
static DefaultShardManagerBuilder createLight(String token, Collection<GatewayIntent> intents)
Light profile settings:
- MemberCachePolicy:
NONE
- ChunkingFilter:
NONE
- Disables all cache flags
- Large threshold: 50
Example:
ShardManager manager = DefaultShardManagerBuilder
.createLight("YOUR_BOT_TOKEN")
.enableIntents(GatewayIntent.GUILD_MESSAGES)
.build();
create
Creates a builder with no defaults, maximum customization.
static DefaultShardManagerBuilder create(GatewayIntent intent, GatewayIntent... intents)
static DefaultShardManagerBuilder create(Collection<GatewayIntent> intents)
static DefaultShardManagerBuilder create(String token, GatewayIntent intent, GatewayIntent... intents)
static DefaultShardManagerBuilder create(String token, Collection<GatewayIntent> intents)
Your bot token (can be set later with setToken())
intents
Collection<GatewayIntent>
required
Gateway intents to enable
Example:
ShardManager manager = DefaultShardManagerBuilder
.create("YOUR_BOT_TOKEN", GatewayIntent.GUILD_MESSAGES, GatewayIntent.MESSAGE_CONTENT)
.setToken("YOUR_BOT_TOKEN")
.setMemberCachePolicy(MemberCachePolicy.ALL)
.build();
Basic Configuration
setToken
Sets the bot token.
DefaultShardManagerBuilder setToken(String token)
setShardsTotal
Sets the total number of shards.
DefaultShardManagerBuilder setShardsTotal(int shardsTotal)
Total number of shards (Discord recommends this value)
Discord provides the recommended shard count in the /gateway/bot endpoint. JDA automatically fetches this if not specified.
setShards
Sets specific shard IDs to run.
DefaultShardManagerBuilder setShards(int... shardIds)
DefaultShardManagerBuilder setShards(Collection<Integer> shardIds)
shardIds
Collection<Integer>
required
Specific shard IDs to start
Example:
// Run only shards 0, 1, and 2 out of 4 total
DefaultShardManagerBuilder.createDefault(token)
.setShardsTotal(4)
.setShards(0, 1, 2)
.build();
Gateway Intents
enableIntents
Enables specific gateway intents.
DefaultShardManagerBuilder enableIntents(GatewayIntent intent, GatewayIntent... intents)
DefaultShardManagerBuilder enableIntents(Collection<GatewayIntent> intents)
intents
Collection<GatewayIntent>
required
Intents to enable
disableIntents
Disables specific gateway intents.
DefaultShardManagerBuilder disableIntents(GatewayIntent intent, GatewayIntent... intents)
DefaultShardManagerBuilder disableIntents(Collection<GatewayIntent> intents)
Example:
DefaultShardManagerBuilder.createDefault(token)
.enableIntents(GatewayIntent.MESSAGE_CONTENT)
.disableIntents(GatewayIntent.GUILD_PRESENCES)
.build();
setEnabledIntents
Sets the exact set of enabled intents.
DefaultShardManagerBuilder setEnabledIntents(Collection<GatewayIntent> intents)
Cache Configuration
enableCache
Enables specific cache flags.
DefaultShardManagerBuilder enableCache(CacheFlag flag, CacheFlag... flags)
DefaultShardManagerBuilder enableCache(Collection<CacheFlag> flags)
flags
Collection<CacheFlag>
required
Cache flags to enable
disableCache
Disables specific cache flags.
DefaultShardManagerBuilder disableCache(CacheFlag flag, CacheFlag... flags)
DefaultShardManagerBuilder disableCache(Collection<CacheFlag> flags)
Example:
DefaultShardManagerBuilder.createDefault(token)
.enableCache(CacheFlag.VOICE_STATE)
.disableCache(CacheFlag.ACTIVITY, CacheFlag.CLIENT_STATUS)
.build();
setMemberCachePolicy
Configures member caching policy.
DefaultShardManagerBuilder setMemberCachePolicy(MemberCachePolicy policy)
The member caching policy (default: ALL)
Example:
// Only cache members in voice channels
DefaultShardManagerBuilder.createDefault(token)
.setMemberCachePolicy(MemberCachePolicy.VOICE)
.build();
// Cache members with specific roles
MemberCachePolicy policy = (member) ->
member.getRoles().stream()
.anyMatch(role -> role.getName().equals("Moderator"));
DefaultShardManagerBuilder.createDefault(token)
.setMemberCachePolicy(policy)
.build();
setChunkingFilter
Configures guild member chunking.
DefaultShardManagerBuilder setChunkingFilter(ChunkingFilter filter)
Determines which guilds to chunk members for
Example:
// Chunk all guilds
DefaultShardManagerBuilder.createDefault(token)
.setChunkingFilter(ChunkingFilter.ALL)
.build();
// Don't chunk any guilds
DefaultShardManagerBuilder.createDefault(token)
.setChunkingFilter(ChunkingFilter.NONE)
.build();
Event Listeners
addEventListeners
Adds global event listeners to all shards.
DefaultShardManagerBuilder addEventListeners(Object... listeners)
DefaultShardManagerBuilder addEventListeners(Collection<Object> listeners)
Event listeners (must implement EventListener)
Example:
DefaultShardManagerBuilder.createDefault(token)
.addEventListeners(new MyEventListener())
.build();
addEventListenerProvider
Adds shard-specific event listeners via a provider.
DefaultShardManagerBuilder addEventListenerProvider(IntFunction<Object> listenerProvider)
DefaultShardManagerBuilder addEventListenerProviders(Collection<IntFunction<Object>> listenerProviders)
listenerProvider
IntFunction<Object>
required
Function that receives shard ID and returns a listener
Example:
DefaultShardManagerBuilder.createDefault(token)
.addEventListenerProvider(shardId -> new ShardListener(shardId))
.build();
setEventManagerProvider
Sets a custom event manager for each shard.
DefaultShardManagerBuilder setEventManagerProvider(IntFunction<? extends IEventManager> eventManagerProvider)
Example:
DefaultShardManagerBuilder.createDefault(token)
.setEventManagerProvider(shardId -> new AnnotatedEventManager())
.build();
Presence Configuration
setActivity
Sets the activity for all shards.
DefaultShardManagerBuilder setActivity(Activity activity)
Example:
DefaultShardManagerBuilder.createDefault(token)
.setActivity(Activity.playing("with shards"))
.build();
setActivityProvider
Sets shard-specific activities.
DefaultShardManagerBuilder setActivityProvider(IntFunction<? extends Activity> activityProvider)
Example:
DefaultShardManagerBuilder.createDefault(token)
.setActivityProvider(shardId ->
Activity.playing("Shard " + shardId)
)
.build();
setStatus
Sets the online status for all shards.
DefaultShardManagerBuilder setStatus(OnlineStatus status)
setStatusProvider
Sets shard-specific online statuses.
DefaultShardManagerBuilder setStatusProvider(IntFunction<OnlineStatus> statusProvider)
setIdle
Sets the idle state for all shards.
DefaultShardManagerBuilder setIdle(boolean idle)
Advanced Configuration
setSessionController
Sets a custom session controller for managing shard connections.
DefaultShardManagerBuilder setSessionController(SessionController controller)
Session controller for coordinating shard connections
setVoiceDispatchInterceptor
Sets a custom voice dispatch handler.
DefaultShardManagerBuilder setVoiceDispatchInterceptor(VoiceDispatchInterceptor interceptor)
Custom voice dispatch interceptor
setAudioModuleConfig
Configures the audio module.
DefaultShardManagerBuilder setAudioModuleConfig(AudioModuleConfig config)
Audio module configuration
setCompression
Sets the gateway compression algorithm.
DefaultShardManagerBuilder setCompression(Compression compression)
Compression type (default: ZLIB)
setGatewayEncoding
Sets the gateway encoding format.
DefaultShardManagerBuilder setGatewayEncoding(GatewayEncoding encoding)
Encoding format (default: JSON)
Behavioral Flags
setAutoReconnect
Enables/disables automatic reconnection.
DefaultShardManagerBuilder setAutoReconnect(boolean autoReconnect)
true to enable auto-reconnect (default)
setBulkDeleteSplittingEnabled
Enables/disables splitting bulk delete events.
DefaultShardManagerBuilder setBulkDeleteSplittingEnabled(boolean enabled)
true to split bulk deletes into individual events (default)
setEnableShutdownHook
Enables/disables the JVM shutdown hook.
DefaultShardManagerBuilder setEnableShutdownHook(boolean enable)
true to enable shutdown hook (default)
setRawEventsEnabled
Enables raw gateway events.
DefaultShardManagerBuilder setRawEventsEnabled(boolean enable)
true to fire RawGatewayEvent for all events
setEventPassthrough
Enables raw data passthrough on events.
DefaultShardManagerBuilder setEventPassthrough(boolean enable)
true to include raw DataObject in events
Thread Pool Configuration
setCallbackPoolProvider
Sets the thread pool for RestAction callbacks.
DefaultShardManagerBuilder setCallbackPoolProvider(ThreadPoolProvider<? extends ExecutorService> provider)
setGatewayPoolProvider
Sets the thread pool for gateway operations.
DefaultShardManagerBuilder setGatewayPoolProvider(ThreadPoolProvider<? extends ScheduledExecutorService> provider)
setRateLimitSchedulerProvider
Sets the thread pool for rate limit scheduling.
DefaultShardManagerBuilder setRateLimitSchedulerProvider(ThreadPoolProvider<? extends ScheduledExecutorService> provider)
Building
build
Builds and starts the ShardManager.
ShardManager build() throws LoginException, InvalidTokenException
The configured ShardManager instance
Example:
ShardManager manager = DefaultShardManagerBuilder
.createDefault("YOUR_BOT_TOKEN")
.setActivity(Activity.watching("the shards"))
.addEventListeners(new MyListener())
.build();
Complete Example
public class ShardedBot {
public static void main(String[] args) throws Exception {
ShardManager shardManager = DefaultShardManagerBuilder
.createDefault(
"YOUR_BOT_TOKEN",
GatewayIntent.GUILDS,
GatewayIntent.GUILD_MESSAGES,
GatewayIntent.MESSAGE_CONTENT
)
// Cache configuration
.setMemberCachePolicy(MemberCachePolicy.VOICE)
.enableCache(CacheFlag.VOICE_STATE)
.disableCache(CacheFlag.ACTIVITY, CacheFlag.CLIENT_STATUS)
// Event listeners
.addEventListeners(new GlobalListener())
.addEventListenerProvider(shardId -> new ShardListener(shardId))
// Presence
.setActivityProvider(shardId ->
Activity.playing("Shard " + shardId)
)
.setStatus(OnlineStatus.ONLINE)
// Advanced configuration
.setAutoReconnect(true)
.setCompression(Compression.ZLIB)
.setBulkDeleteSplittingEnabled(false)
.build();
System.out.println("ShardManager started with " +
shardManager.getShardsTotal() + " shards");
}
}