Add MatchResult
This commit is contained in:
47
src/Discord.Net.Commands/Results/MatchResult.cs
Normal file
47
src/Discord.Net.Commands/Results/MatchResult.cs
Normal file
@@ -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}";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user