|
|
@@ -40,7 +40,6 @@ namespace Discord.WebSocket |
|
|
|
private int _nextAudioId; |
|
|
|
private DateTimeOffset? _statusSince; |
|
|
|
private RestApplication _applicationInfo; |
|
|
|
private ConcurrentHashSet<ulong> _downloadUsersFor; |
|
|
|
|
|
|
|
/// <summary> Gets the shard of of this client. </summary> |
|
|
|
public int ShardId { get; } |
|
|
@@ -88,7 +87,6 @@ namespace Discord.WebSocket |
|
|
|
WebSocketProvider = config.WebSocketProvider; |
|
|
|
AlwaysDownloadUsers = config.AlwaysDownloadUsers; |
|
|
|
State = new ClientState(0, 0); |
|
|
|
_downloadUsersFor = new ConcurrentHashSet<ulong>(); |
|
|
|
_heartbeatTimes = new ConcurrentQueue<long>(); |
|
|
|
|
|
|
|
_stateLock = new SemaphoreSlim(1, 1); |
|
|
@@ -120,12 +118,9 @@ namespace Discord.WebSocket |
|
|
|
|
|
|
|
GuildAvailable += g => |
|
|
|
{ |
|
|
|
if (ConnectionState == ConnectionState.Connected && (AlwaysDownloadUsers || _downloadUsersFor.ContainsKey(g.Id))) |
|
|
|
if (ConnectionState == ConnectionState.Connected && AlwaysDownloadUsers && !g.HasAllMembers) |
|
|
|
{ |
|
|
|
if (!g.HasAllMembers) |
|
|
|
{ |
|
|
|
var _ = g.DownloadUsersAsync(); |
|
|
|
} |
|
|
|
var _ = g.DownloadUsersAsync(); |
|
|
|
} |
|
|
|
return Task.Delay(0); |
|
|
|
}; |
|
|
@@ -159,7 +154,6 @@ namespace Discord.WebSocket |
|
|
|
await StopAsync().ConfigureAwait(false); |
|
|
|
_applicationInfo = null; |
|
|
|
_voiceRegions = ImmutableDictionary.Create<string, RestVoiceRegion>(); |
|
|
|
_downloadUsersFor.Clear(); |
|
|
|
} |
|
|
|
|
|
|
|
public async Task StartAsync() |
|
|
@@ -192,9 +186,6 @@ namespace Discord.WebSocket |
|
|
|
|
|
|
|
await _gatewayLogger.DebugAsync("Sending Status").ConfigureAwait(false); |
|
|
|
await SendStatusAsync().ConfigureAwait(false); |
|
|
|
|
|
|
|
await ProcessUserDownloadsAsync(_downloadUsersFor.Select(x => GetGuild(x)) |
|
|
|
.Where(x => x != null).ToImmutableArray()).ConfigureAwait(false); |
|
|
|
} |
|
|
|
finally |
|
|
|
{ |
|
|
@@ -317,9 +308,6 @@ namespace Discord.WebSocket |
|
|
|
/// <summary> Downloads the users list for the provided guilds, if they don't have a complete list. </summary> |
|
|
|
public async Task DownloadUsersAsync(IEnumerable<IGuild> guilds) |
|
|
|
{ |
|
|
|
foreach (var guild in guilds) |
|
|
|
_downloadUsersFor.TryAdd(guild.Id); |
|
|
|
|
|
|
|
if (ConnectionState == ConnectionState.Connected) |
|
|
|
{ |
|
|
|
//Race condition leads to guilds being requested twice, probably okay |
|
|
@@ -664,7 +652,6 @@ namespace Discord.WebSocket |
|
|
|
{ |
|
|
|
await _gatewayLogger.DebugAsync($"Received Dispatch (GUILD_DELETE)").ConfigureAwait(false); |
|
|
|
|
|
|
|
_downloadUsersFor.TryRemove(data.Id); |
|
|
|
var guild = RemoveGuild(data.Id); |
|
|
|
if (guild != null) |
|
|
|
{ |
|
|
|