Ready event waits until guilds are downloaded

This commit is contained in:
RogueException
2017-03-13 21:10:07 -03:00
parent d111214bff
commit 7e7df27024

View File

@@ -500,12 +500,21 @@ namespace Discord.WebSocket
await SyncGuildsAsync().ConfigureAwait(false); await SyncGuildsAsync().ConfigureAwait(false);
_lastGuildAvailableTime = Environment.TickCount; _lastGuildAvailableTime = Environment.TickCount;
_guildDownloadTask = WaitForGuildsAsync(_connection.CancelToken, _gatewayLogger); _guildDownloadTask = WaitForGuildsAsync(_connection.CancelToken, _gatewayLogger)
.ContinueWith(async x =>
await _readyEvent.InvokeAsync().ConfigureAwait(false); {
if (x.IsFaulted)
{
_connection.Error(x.Exception);
return;
}
else if (_connection.CancelToken.IsCancellationRequested)
return;
await _readyEvent.InvokeAsync().ConfigureAwait(false);
await _gatewayLogger.InfoAsync("Ready").ConfigureAwait(false);
});
var _ = _connection.CompleteAsync(); var _ = _connection.CompleteAsync();
await _gatewayLogger.InfoAsync("Ready").ConfigureAwait(false);
} }
break; break;
case "RESUMED": case "RESUMED":
@@ -1580,12 +1589,12 @@ namespace Discord.WebSocket
await _gatewayLogger.ErrorAsync("Heartbeat Errored", ex).ConfigureAwait(false); await _gatewayLogger.ErrorAsync("Heartbeat Errored", ex).ConfigureAwait(false);
} }
} }
public async Task WaitForGuildsAsync() /*public async Task WaitForGuildsAsync()
{ {
var downloadTask = _guildDownloadTask; var downloadTask = _guildDownloadTask;
if (downloadTask != null) if (downloadTask != null)
await _guildDownloadTask.ConfigureAwait(false); await _guildDownloadTask.ConfigureAwait(false);
} }*/
private async Task WaitForGuildsAsync(CancellationToken cancelToken, Logger logger) private async Task WaitForGuildsAsync(CancellationToken cancelToken, Logger logger)
{ {
//Wait for GUILD_AVAILABLEs //Wait for GUILD_AVAILABLEs