private async Task OnCommandFailureAsync(CommandFailedEventArgs args) { var reason = args.Result switch { CommandNotFoundResult _ => "Unknown command.", ChecksFailedResult cfr => $"One or more checks failed for command **{cfr.Command.Name}**: {Format.Code(cfr.FailedChecks.Select(x => x.Result.FailureReason).Join('\n'), "css")}", ParameterChecksFailedResult pcfr => $"One or more checks failed on parameter **{pcfr.Parameter.Name}**: {Format.Code(pcfr.FailedChecks.Select(x => x.Result.FailureReason).Join('\n'), "css")}", ArgumentParseFailedResult apfr => $"Parsing for arguments failed for {Format.Bold(apfr.Command.Name)}.", TypeParseFailedResult tpfr => tpfr.FailureReason, OverloadsFailedResult _ => "A suitable overload could not be found for the given parameter type/order.", CommandExecutionFailedResult cefr => ExecutionFailed(cefr), _ => Unknown(args.Result) };
static string ExecutionFailed(CommandExecutionFailedResult result) { Logger.Exception(result.Exception); return($"Execution of this command failed. Exception: {result.Exception.GetType().AsPrettyString()}"); }