From 22a8e91f852c791538fdd263c07bcc9db3e2e50d Mon Sep 17 00:00:00 2001 From: Sanae Date: Sun, 19 Jun 2022 19:33:45 -0600 Subject: [PATCH] Try/catch bot msg sending and add exception handlers --- Server/DiscordBot.cs | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/Server/DiscordBot.cs b/Server/DiscordBot.cs index 2849032..a0bb07f 100644 --- a/Server/DiscordBot.cs +++ b/Server/DiscordBot.cs @@ -63,17 +63,31 @@ public class DiscordBot { SettingsLoadHandler(); string mentionPrefix = $"{DiscordClient.CurrentUser.Mention} "; DiscordClient.MessageCreated += async (_, args) => { - DiscordMessage msg = args.Message; - if (msg.Content.StartsWith(Prefix)) { - await msg.Channel.TriggerTypingAsync(); - await msg.RespondAsync(string.Join('\n', - CommandHandler.GetResult(msg.Content[Prefix.Length..]).ReturnStrings)); - } else if (msg.Content.StartsWith(mentionPrefix)) { - await msg.Channel.TriggerTypingAsync(); - await msg.RespondAsync(string.Join('\n', - CommandHandler.GetResult(msg.Content[mentionPrefix.Length..]).ReturnStrings)); + try { + DiscordMessage msg = args.Message; + if (msg.Content.StartsWith(Prefix)) { + await msg.Channel.TriggerTypingAsync(); + await msg.RespondAsync(string.Join('\n', + CommandHandler.GetResult(msg.Content[Prefix.Length..]).ReturnStrings)); + } else if (msg.Content.StartsWith(mentionPrefix)) { + await msg.Channel.TriggerTypingAsync(); + await msg.RespondAsync(string.Join('\n', + CommandHandler.GetResult(msg.Content[mentionPrefix.Length..]).ReturnStrings)); + } + } catch (Exception e) { + Logger.Error(e); } }; + DiscordClient.ClientErrored += (_, args) => { + Logger.Error("Discord client caught an error in handler!"); + Logger.Error(args.Exception); + return Task.CompletedTask; + }; + DiscordClient.SocketErrored += (_, args) => { + Logger.Error("Discord client caught an error on socket!"); + Logger.Error(args.Exception); + return Task.CompletedTask; + }; } catch (Exception e) { Logger.Error("Exception occurred in discord runner!"); Logger.Error(e);