|
|
@@ -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}"; |
|
|
|
|
|
|
|
} |
|
|
|
} |