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