From ec71b84720023ae4a34ef7b24760f960ca896595 Mon Sep 17 00:00:00 2001 From: Christopher F Date: Sun, 4 Dec 2016 19:47:15 -0500 Subject: [PATCH] Add config option to download all users on GuildAvailable Resolves #302 --- src/Discord.Net.WebSocket/DiscordSocketClient.cs | 11 +++++++++++ src/Discord.Net.WebSocket/DiscordSocketConfig.cs | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/Discord.Net.WebSocket/DiscordSocketClient.cs b/src/Discord.Net.WebSocket/DiscordSocketClient.cs index 5776d8470..020a40967 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketClient.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketClient.cs @@ -57,6 +57,7 @@ namespace Discord.WebSocket internal ClientState State { get; private set; } internal int ConnectionTimeout { get; private set; } internal WebSocketProvider WebSocketProvider { get; private set; } + internal bool DownloadUsersOnGuildAvailable { get; private set; } public new DiscordSocketApiClient ApiClient => base.ApiClient as DiscordSocketApiClient; public new SocketSelfUser CurrentUser { get { return base.CurrentUser as SocketSelfUser; } private set { base.CurrentUser = value; } } @@ -76,6 +77,7 @@ namespace Discord.WebSocket LargeThreshold = config.LargeThreshold; AudioMode = config.AudioMode; WebSocketProvider = config.WebSocketProvider; + DownloadUsersOnGuildAvailable = config.DownloadUsersOnGuildAvailable; ConnectionTimeout = config.ConnectionTimeout; State = new ClientState(0, 0); @@ -108,6 +110,15 @@ namespace Discord.WebSocket GuildUnavailable += async g => await _gatewayLogger.VerboseAsync($"Disconnected from {g.Name}").ConfigureAwait(false); LatencyUpdated += async (old, val) => await _gatewayLogger.VerboseAsync($"Latency = {val} ms").ConfigureAwait(false); + if (DownloadUsersOnGuildAvailable) + { + GuildAvailable += g => + { + var _ = g.DownloadUsersAsync(); + return Task.CompletedTask; + }; + } + _voiceRegions = ImmutableDictionary.Create(); _largeGuilds = new ConcurrentQueue(); } diff --git a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs index dc0347a1c..9bf337f8e 100644 --- a/src/Discord.Net.WebSocket/DiscordSocketConfig.cs +++ b/src/Discord.Net.WebSocket/DiscordSocketConfig.cs @@ -28,5 +28,8 @@ namespace Discord.WebSocket /// Gets or sets the provider used to generate new websocket connections. public WebSocketProvider WebSocketProvider { get; set; } = () => new DefaultWebSocketClient(); + + /// Gets or sets whether or not all users should be downloaded as guilds come available. + public bool DownloadUsersOnGuildAvailable { get; set; } = false; } }