public final class DiscordClientBuilder extends Object
DiscordClient
.
Allows creating a Discord client for a single shard with many configurable options. You can reuse this builder for
sharding as long as you set the setShardIndex(Integer)
and setShardCount(Integer)
options, or setIdentifyOptions(IdentifyOptions)
.
Constructor and Description |
---|
DiscordClientBuilder(String token)
Initialize a new builder with the given token.
|
public DiscordClientBuilder(String token)
token
- the bot token used to authenticate to Discord@Deprecated public String getToken()
public DiscordClientBuilder setToken(String token)
token
- the new bot token@Nullable @Deprecated public Integer getShardIndex()
null
public DiscordClientBuilder setShardIndex(@Nullable Integer shardIndex)
setIdentifyOptions(IdentifyOptions)
.
Validation is only performed during build()
. Make sure the following holds:
0 <= shardIndex < shardCount
shardIndex
- the new shard index, can be set to null
to use the value under
setIdentifyOptions(IdentifyOptions)
if set, or fallback to a default@Nullable @Deprecated public Integer getShardCount()
null
public DiscordClientBuilder setShardCount(@Nullable Integer shardCount)
Validation is only performed during build()
. Make sure the following holds:
0 <= shardIndex < shardCount
shardCount
- the new shard count, can be set to null
to use a default value@Nullable @Deprecated public StoreService getStoreService()
StoreService
factory, used to create Store
instances on
login to cache entities.
Can be null
if automatic discovery is to be used.
null
if automatic discovery should be usedpublic DiscordClientBuilder setStoreService(@Nullable StoreService storeService)
StoreService
to this builder, used to create Store
instances on
login to cache entities.storeService
- a new StoreService factory, can be null
to enable automatic discovery@Nullable @Deprecated public FluxProcessor<Event,Event> getEventProcessor()
FluxProcessor
used to queue Discord events in conjunction with EventDispatcher
.
Can be null
if a default EmitterProcessor
is used.null
when using a default valuepublic DiscordClientBuilder setEventProcessor(@Nullable FluxProcessor<Event,Event> eventProcessor)
FluxProcessor
used to queue Discord events in conjunction with EventDispatcher
.eventProcessor
- a new FluxProcessor used in this builder. Can be left null
if a default
EmitterProcessor
is used@Nullable @Deprecated public Scheduler getEventScheduler()
Scheduler
used to publish events through EventDispatcher
.null
when using a default valuepublic DiscordClientBuilder setEventScheduler(@Nullable Scheduler eventScheduler)
Scheduler
used to publish events through EventDispatcher
.eventScheduler
- a new Scheduler for event dispatching. Can be null
to use a default value@Nullable @Deprecated public JacksonResourceProvider getJacksonResourceProvider()
JacksonResourceProvider
, providing an ObjectMapper
for serialization and
deserialization of data.null
when
using a default valuepublic DiscordClientBuilder setJacksonResourceProvider(@Nullable JacksonResourceProvider jacksonResourceProvider)
JacksonResourceProvider
to this builder, dedicated to provide an ObjectMapper
for
serialization and deserialization of data.jacksonResourceProvider
- the new resource provider for serialization and deserialization, use null
to use a default one@Nullable @Deprecated public RouterFactory getRouterFactory()
RouterFactory
used to create a Router
that executes
Discord REST API requests.public DiscordClientBuilder setRouterFactory(@Nullable RouterFactory routerFactory)
RouterFactory
used to create a Router
that executes Discord
REST API requests.
The resulting client will utilize the produced Router for every request. When performing sharding operations, it
is expected that the underlying Router
instance to be shared across shards in
order to properly coordinate rate-limits on global endpoints. For those cases, use
SingleRouterFactory
.
routerFactory
- a new RouterFactory to create a Router that performs API requests. Pass null
to
use a default value@Nullable @Deprecated public RouterOptions getRouterOptions()
RouterOptions
used to configure RouterFactory
instances.RouterOptions
used by this clientpublic DiscordClientBuilder setRouterOptions(@Nullable RouterOptions routerOptions)
RouterOptions
used to configure a RouterFactory
.
RouterOptions
instances provide a way to override the Scheduler
used for retrieving API responses
and scheduling rate limiting actions. It also allows changing the behavior associated with API errors through
RouterOptions.Builder#onClientResponse(ResponseFunction)
.
If you use a default RouterFactory
, it will use the supplied RouterOptions
to configure itself
while building this client.
Calling this method while sharding clients will not apply the supplied options as requests on the coordinated
Router
implementation have already begun. Use
ShardingClientBuilder.setRouterOptions(RouterOptions)
instead.
routerOptions
- a new RouterOptions
to configure a RouterFactory
@Nullable @Deprecated public GatewayClientFactory getGatewayClientFactory()
GatewayClientFactory
to use with the resulting clients.null
if using a DefaultGatewayClientFactory
public DiscordClientBuilder setGatewayClientFactory(@Nullable GatewayClientFactory gatewayClientFactory)
GatewayClientFactory
to this builder, allowing you to configure the underlying
GatewayClient
used when logging in with the resulting clients.gatewayClientFactory
- the new factory, or null
to use a DefaultGatewayClientFactory
@Nullable @Deprecated public Presence getInitialPresence()
Presence
object used when identifying to the Gateway.null
to use the value under
setIdentifyOptions(IdentifyOptions)
if set, or fallback to a defaultpublic DiscordClientBuilder setInitialPresence(@Nullable Presence initialPresence)
Presence
object used when identifying to the Gateway.initialPresence
- the new presence status used for login. Can be null
to use the value under
setIdentifyOptions(IdentifyOptions)
if set, or fallback to a default@Nullable @Deprecated public IdentifyOptions getIdentifyOptions()
IdentifyOptions
set in this builder. IdentifyOptions is a container
object targeted to group all parameters applied on bot login, like shard information, initial status and even
session identifier and sequence required to resume a session.
Options under getShardIndex()
, getShardCount()
and getInitialPresence()
override the
values in this object.
public DiscordClientBuilder setIdentifyOptions(@Nullable IdentifyOptions identifyOptions)
IdentifyOptions
to this builder. IdentifyOptions is a container object
targeted to group all parameters applied on bot login, like shard information, initial status and even session
identifier and sequence required to resume a session.
Options under setShardIndex(Integer)
, setShardCount(Integer)
and
setInitialPresence(Presence)
override the values in this object.
identifyOptions
- the new bot identification options. Can be set to null
to use a default@Nullable @Deprecated public RetryOptions getRetryOptions()
RetryOptions
set in this builder. RetryOptions is an advanced container object to
parameterize the retry policy used in the gateway operations.null
if default is usedpublic DiscordClientBuilder setRetryOptions(@Nullable RetryOptions retryOptions)
RetryOptions
to this builder. RetryOptions is an advanced container object to parameterize
the retry policy used in the gateway operations.retryOptions
- the new retry policy. Can be set to null
to use a default@Nullable @Deprecated public GatewayObserver getGatewayObserver()
GatewayObserver
set in this builder. GatewayObserver is used as a simple event
listener for gateway connection lifecycle. User can be notified of broad lifecycle events like connections,
resumes, reconnects and disconnects but also very specific ones like session sequence updates.null
if default is usedStoreInvalidator
public DiscordClientBuilder setGatewayObserver(@Nullable GatewayObserver gatewayObserver)
GatewayObserver
to this builder. GatewayObserver is used as a simple event listener for
gateway connection lifecycle. User can be notified of broad lifecycle events like connections, resumes,
reconnects and disconnects but also very specific ones like session sequence updates.gatewayObserver
- a new event listener for gateway lifecycle. Can be chained using
GatewayObserver.then(GatewayObserver)
to create a composite of an arbitrary number of listeners. Can
be set to null
to use a default@Nullable @Deprecated public PayloadTransformer getIdentifyLimiter()
PayloadTransformer
set in this builder. The transformer will be used as a rate
limiting strategy dedicated to coordinate identify requests between shards.null
if default is usedpublic DiscordClientBuilder setIdentifyLimiter(@Nullable PayloadTransformer identifyLimiter)
PayloadTransformer
to this builder. The transformer will be used as a rate limiting strategy
dedicated to coordinate identify requests between shards.identifyLimiter
- the current limiter strategy, for shard coordination, can be null
for a default@Deprecated public Scheduler getVoiceConnectionScheduler()
Scheduler
for voice sending tasks.public DiscordClientBuilder setVoiceConnectionScheduler(Scheduler voiceConnectionScheduler)
Scheduler
for voice sending tasks.voiceConnectionScheduler
- the new scheduler for voice sending tasks, must not be null
public DiscordClient build()
DiscordClient
based on this builder parameters