From 45e41af2940554ecc9fb9cb88382fb743fc86a86 Mon Sep 17 00:00:00 2001 From: RogueException Date: Thu, 1 Oct 2015 12:05:19 -0300 Subject: [PATCH] Push an error to the log if an event was failed to be processed --- src/Discord.Net/DiscordClient.cs | 7 ++++++ src/Discord.Net/DiscordSimpleClient.cs | 35 +++++++++++++++----------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs index e41e83656..a47a8e0c3 100644 --- a/src/Discord.Net/DiscordClient.cs +++ b/src/Discord.Net/DiscordClient.cs @@ -337,6 +337,8 @@ namespace Discord internal override async Task OnReceivedEvent(WebSocketEventEventArgs e) { + try + { await base.OnReceivedEvent(e); switch (e.Type) @@ -682,6 +684,11 @@ namespace Discord default: RaiseOnLog(LogMessageSeverity.Warning, LogMessageSource.DataWebSocket, $"Unknown message type: {e.Type}"); break; + } + } + catch (Exception ex) + { + RaiseOnLog(LogMessageSeverity.Error, LogMessageSource.Client, $"Error handling {e.Type} event: {ex.GetBaseException().Message}"); } } diff --git a/src/Discord.Net/DiscordSimpleClient.cs b/src/Discord.Net/DiscordSimpleClient.cs index c1393008d..745735cae 100644 --- a/src/Discord.Net/DiscordSimpleClient.cs +++ b/src/Discord.Net/DiscordSimpleClient.cs @@ -289,23 +289,30 @@ namespace Discord internal virtual Task OnReceivedEvent(WebSocketEventEventArgs e) { - switch (e.Type) + try { - case "READY": - _currentUserId = e.Payload["user"].Value("id"); - break; - case "VOICE_SERVER_UPDATE": - { - string guildId = e.Payload.Value("guild_id"); - - if (_enableVoice && guildId == _voiceSocket.CurrentServerId) + switch (e.Type) + { + case "READY": + _currentUserId = e.Payload["user"].Value("id"); + break; + case "VOICE_SERVER_UPDATE": { - string token = e.Payload.Value("token"); - _voiceSocket.Host = "wss://" + e.Payload.Value("endpoint").Split(':')[0]; - return _voiceSocket.Login(_currentUserId, _dataSocket.SessionId, token, CancelToken); + string guildId = e.Payload.Value("guild_id"); + + if (_enableVoice && guildId == _voiceSocket.CurrentServerId) + { + string token = e.Payload.Value("token"); + _voiceSocket.Host = "wss://" + e.Payload.Value("endpoint").Split(':')[0]; + return _voiceSocket.Login(_currentUserId, _dataSocket.SessionId, token, CancelToken); + } } - } - break; + break; + } + } + catch (Exception ex) + { + RaiseOnLog(LogMessageSeverity.Error, LogMessageSource.Client, $"Error handling {e.Type} event: {ex.GetBaseException().Message}"); } return TaskHelper.CompletedTask; }