| @@ -0,0 +1,47 @@ | |||||
| using System; | |||||
| namespace Discord.Commands | |||||
| { | |||||
| public class MatchResult : IResult | |||||
| { | |||||
| /// <summary> | |||||
| /// Gets the command that may have matched during the command execution. | |||||
| /// </summary> | |||||
| public CommandMatch? Match { get; } | |||||
| /// <summary> | |||||
| /// Gets on which pipeline stage the command may have matched or failed. | |||||
| /// </summary> | |||||
| public IResult? Pipeline { get; } | |||||
| /// <inheritdoc /> | |||||
| public CommandError? Error { get; } | |||||
| /// <inheritdoc /> | |||||
| public string ErrorReason { get; } | |||||
| /// <inheritdoc /> | |||||
| public bool IsSuccess => !Error.HasValue; | |||||
| private MatchResult(CommandMatch? match, IResult? pipeline, CommandError? error, string errorReason) | |||||
| { | |||||
| Match = match; | |||||
| Error = error; | |||||
| Pipeline = pipeline; | |||||
| ErrorReason = errorReason; | |||||
| } | |||||
| public static MatchResult FromSuccess(CommandMatch match, IResult pipeline) | |||||
| => new MatchResult(match,pipeline,null, null); | |||||
| public static MatchResult FromError(CommandError error, string reason) | |||||
| => new MatchResult(null,null,error, reason); | |||||
| public static MatchResult FromError(Exception ex) | |||||
| => FromError(CommandError.Exception, ex.Message); | |||||
| public static MatchResult FromError(IResult result) | |||||
| => new MatchResult(null, null,result.Error, result.ErrorReason); | |||||
| public static MatchResult FromError(IResult pipeline, CommandError error, string reason) | |||||
| => new MatchResult(null, pipeline, error, reason); | |||||
| public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; | |||||
| private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; | |||||
| } | |||||
| } | |||||