Table of Contents

Class DiscordSocketConfig

Namespace
Discord.WebSocket
Assembly
Discord.Net.WebSocket.dll

Represents a configuration class for DiscordSocketClient.

public class DiscordSocketConfig : DiscordRestConfig
Inheritance
DiscordSocketConfig
Inherited Members

Examples

The following config enables the message cache and configures the client to always download user upon guild availability.

var config = new DiscordSocketConfig
{
    AlwaysDownloadUsers = true,
    MessageCacheSize = 100
};
var client = new DiscordSocketClient(config);

Remarks

This configuration, based on DiscordRestConfig, helps determine several key configurations the socket client depend on. For instance, shards and connection timeout.

Constructors

DiscordSocketConfig()

Initializes a new instance of the DiscordSocketConfig class with the default configuration.

public DiscordSocketConfig()

Fields

GatewayEncoding

Returns the encoding gateway should use.

public const string GatewayEncoding = "json"

Field Value

string

Properties

AlwaysDownloadDefaultStickers

Gets or sets whether or not the client should download the default stickers on startup.

public bool AlwaysDownloadDefaultStickers { get; set; }

Property Value

bool

Remarks

When this is set to false default stickers aren't present and cannot be resolved by the client. This will make all default stickers have the type of SocketUnknownSticker.

AlwaysDownloadUsers

Gets or sets whether or not all users should be downloaded as guilds come available.

public bool AlwaysDownloadUsers { get; set; }

Property Value

bool

Remarks

By default, the Discord gateway will only send offline members if a guild has less than a certain number of members (determined by LargeThreshold in this library). This behavior is why sometimes a user may be missing from the WebSocket cache for collections such as Users.

This property ensures that whenever a guild becomes available (determined by GuildAvailable), incomplete user chunks will be downloaded to the WebSocket cache.

For more information, please see Request Guild Members on the official Discord API documentation.

note

Please note that it can be difficult to fill the cache completely on large guilds depending on the traffic. If you are using the command system, the default user TypeReader may fail to find the user due to this issue. This may be resolved at v3 of the library. Until then, you may want to consider overriding the TypeReader and use GetUserAsync(ulong, RequestOptions) or GetGuildUserAsync(ulong, ulong, RequestOptions) as a backup.

AlwaysResolveStickers

Gets or sets whether or not the client should automatically resolve the stickers sent on a message.

public bool AlwaysResolveStickers { get; set; }

Property Value

bool

Remarks

Note if a sticker isn't cached the client will preform a rest request to resolve it. This may be very rest heavy depending on your bots size, it isn't recommended to use this with large scale bots as you can get ratelimited easily.

AuditLogCacheSize

Gets or sets the number of audit logs per guild that should be kept in cache. Setting this to zero disables the audit log cache entirely.

public int AuditLogCacheSize { get; set; }

Property Value

int

ConnectionTimeout

Gets or sets the time, in milliseconds, to wait for a connection to complete before aborting.

public int ConnectionTimeout { get; set; }

Property Value

int

GatewayHost

Gets or sets the WebSocket host to connect to. If null, the client will use the /gateway endpoint.

public string GatewayHost { get; set; }

Property Value

string

GatewayIntents

Gets or sets gateway intents to limit what events are sent from Discord. The default is AllUnprivileged.

public GatewayIntents GatewayIntents { get; set; }

Property Value

GatewayIntents

Remarks

For more information, please see GatewayIntents on the official Discord API documentation.

HandlerTimeout

Gets or sets the timeout for event handlers, in milliseconds, after which a warning will be logged. Setting this property to nulldisables this check.

public int? HandlerTimeout { get; set; }

Property Value

int?

IdentifyMaxConcurrency

Gets or sets the maximum identify concurrency.

public int IdentifyMaxConcurrency { get; set; }

Property Value

int

Remarks

This information is provided by Discord. It is only used when using a DiscordShardedClient and auto-sharding is disabled.

IncludeRawPayloadOnGatewayErrors

Gets or sets whether or not to include the raw payload on gateway errors.

public bool IncludeRawPayloadOnGatewayErrors { get; set; }

Property Value

bool

Remarks

Note that this may expose sensitive information to logs. It is recommended to only enable this in cases where you are actively debugging an issue.

LargeThreshold

Gets or sets the max number of users a guild may have for offline users to be included in the READY packet. The maximum value allowed is 250.

public int LargeThreshold { get; set; }

Property Value

int

LogGatewayIntentWarnings

Gets or sets whether or not to log warnings related to guild intents and events.

public bool LogGatewayIntentWarnings { get; set; }

Property Value

bool

MaxWaitBetweenGuildAvailablesBeforeReady

Gets or sets the maximum wait time in milliseconds between GUILD_AVAILABLE events before firing READY. If zero, READY will fire as soon as it is received and all guilds will be unavailable.

public int MaxWaitBetweenGuildAvailablesBeforeReady { get; set; }

Property Value

int

A int representing the maximum wait time in milliseconds between GUILD_AVAILABLE events before firing READY.

Remarks

This property is measured in milliseconds; negative values will throw an exception.

If a guild is not received before READY, it will be unavailable.

Exceptions

ArgumentException

Value must be at least 0.

MessageCacheSize

Gets or sets the number of messages per channel that should be kept in cache. Setting this to zero disables the message cache entirely.

public int MessageCacheSize { get; set; }

Property Value

int

ShardId

Gets or sets the ID for this shard. Must be less than TotalShards.

public int? ShardId { get; set; }

Property Value

int?

SuppressUnknownDispatchWarnings

Gets or sets whether or not Unknown Dispatch event messages should be logged.

public bool SuppressUnknownDispatchWarnings { get; set; }

Property Value

bool

TotalShards

Gets or sets the total number of shards for this application.

public int? TotalShards { get; set; }

Property Value

int?

Remarks

If this is left null in a sharded client the bot will get the recommended shard count from discord and use that.

UdpSocketProvider

Gets or sets the provider used to generate new UDP sockets.

public UdpSocketProvider UdpSocketProvider { get; set; }

Property Value

UdpSocketProvider

WebSocketProvider

Gets or sets the provider used to generate new WebSocket connections.

public WebSocketProvider WebSocketProvider { get; set; }

Property Value

WebSocketProvider