private async Task RunCommandAsync(CoreMessage message, CommandInfo command, CommandUsageParser parser) { try { await Client.EventHandler.OnCommandRunAsync(message, command.Name, parser.Parameters); #pragma warning disable CS8600, CS8602 await(Task) parser.Overload !.Method.Invoke(command.Instance, parser.Parameters); #pragma warning restore CS8600, CS8602 await Client.EventHandler.OnCommandSuccessAsync(message, command.Name, parser.Parameters); } catch (Exception exception) { await Client.EventHandler.OnCommandErrorAsync(message, command.Name, parser.Parameters, exception); } }
private async Task RunArgumentsAsync(Message message, CommandInfo command, string content) { var parser = new CommandUsageParser(command, message, content); try { parser.Run(); await RunCommandAsync(message, command, parser); } catch (ArgumentException exception) { await Client.EventHandler.OnCommandArgumentExceptionAsync(message, command.Name, exception); } catch (Exception exception) { await Client.EventHandler.OnArgumentErrorAsync(message, command.Name, exception); } }
private async Task RunArgumentsAsync(Message message, CommandInfo command, string content) { var parser = new CommandUsageParser(command, message, content); try { parser.Run(); await RunCommandAsync(message, command, parser); } catch (ArgumentException exception) { await message.SendAsync(Client, $"Argument Error: {exception.InnerException?.Message ?? exception.Message}"); } catch (Exception exception) { Console.Error.WriteLine($"[COMMANDS]: {exception.Message}\n{exception.StackTrace}"); await message.SendAsync(Client, "Whoops! Something while processing arguments!"); } }
private async Task RunCommandAsync(Message message, CommandInfo command, CommandUsageParser parser) { try { #pragma warning disable CS8600, CS8602 await(Task) parser.Overload !.Method.Invoke(command.Instance, parser.Parameters); #pragma warning restore CS8600, CS8602 } catch (TargetInvocationException exception) { if (exception.InnerException == null) { throw; } Console.Error.WriteLine($"[COMMANDS]: {exception.Message}\n{exception.StackTrace}"); await message.SendAsync(Client, "Whoops! Something happened!"); } catch (Exception exception) { Console.Error.WriteLine($"[COMMANDS]: {exception.Message}\n{exception.StackTrace}"); await message.SendAsync(Client, "Whoops! Something happened while processing the command!"); } }