| @@ -16,9 +16,9 @@ namespace Discord.Commands | |||||
| Alias = alias; | Alias = alias; | ||||
| } | } | ||||
| public Task<IResult> CheckPreconditionsAsync(ICommandContext context, IServiceProvider services = null) | |||||
| public Task<PreconditionResult> CheckPreconditionsAsync(ICommandContext context, IServiceProvider services = null) | |||||
| => Command.CheckPreconditionsAsync(context, services); | => Command.CheckPreconditionsAsync(context, services); | ||||
| public Task<ParseResult> ParseAsync(ICommandContext context, SearchResult searchResult, IResult preconditionResult = null) | |||||
| public Task<ParseResult> ParseAsync(ICommandContext context, SearchResult searchResult, PreconditionResult preconditionResult = null) | |||||
| => Command.ParseAsync(context, Alias.Length, searchResult, preconditionResult); | => Command.ParseAsync(context, Alias.Length, searchResult, preconditionResult); | ||||
| public Task<ExecuteResult> ExecuteAsync(ICommandContext context, IEnumerable<object> argList, IEnumerable<object> paramList, IServiceProvider services) | public Task<ExecuteResult> ExecuteAsync(ICommandContext context, IEnumerable<object> argList, IEnumerable<object> paramList, IServiceProvider services) | ||||
| => Command.ExecuteAsync(context, argList, paramList, services); | => Command.ExecuteAsync(context, argList, paramList, services); | ||||
| @@ -64,7 +64,7 @@ namespace Discord.Commands | |||||
| _action = builder.Callback; | _action = builder.Callback; | ||||
| } | } | ||||
| public async Task<IResult> CheckPreconditionsAsync(ICommandContext context, IServiceProvider services = null) | |||||
| public async Task<PreconditionResult> CheckPreconditionsAsync(ICommandContext context, IServiceProvider services = null) | |||||
| { | { | ||||
| services = services ?? EmptyServiceProvider.Instance; | services = services ?? EmptyServiceProvider.Instance; | ||||
| @@ -105,7 +105,7 @@ namespace Discord.Commands | |||||
| return PreconditionResult.FromSuccess(); | return PreconditionResult.FromSuccess(); | ||||
| } | } | ||||
| public async Task<ParseResult> ParseAsync(ICommandContext context, int startIndex, SearchResult searchResult, IResult preconditionResult = null) | |||||
| public async Task<ParseResult> ParseAsync(ICommandContext context, int startIndex, SearchResult searchResult, PreconditionResult preconditionResult = null) | |||||
| { | { | ||||
| if (!searchResult.IsSuccess) | if (!searchResult.IsSuccess) | ||||
| return ParseResult.FromError(searchResult); | return ParseResult.FromError(searchResult); | ||||
| @@ -5,28 +5,21 @@ using System.Linq; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | ||||
| public struct PreconditionGroupResult : IResult | |||||
| public class PreconditionGroupResult : PreconditionResult | |||||
| { | { | ||||
| public CommandError? Error { get; } | |||||
| public string ErrorReason { get; } | |||||
| public bool IsSuccess => !Error.HasValue; | |||||
| public IReadOnlyCollection<PreconditionResult> Preconditions { get; } | public IReadOnlyCollection<PreconditionResult> Preconditions { get; } | ||||
| private PreconditionGroupResult(CommandError? error, string errorReason, ICollection<PreconditionResult> preconditions) | |||||
| protected PreconditionGroupResult(CommandError? error, string errorReason, ICollection<PreconditionResult> preconditions) | |||||
| : base(error, errorReason) | |||||
| { | { | ||||
| Error = error; | |||||
| ErrorReason = errorReason; | |||||
| Preconditions = (preconditions ?? Enumerable.Empty<PreconditionResult>().ToList()).ToReadOnlyCollection(); | Preconditions = (preconditions ?? Enumerable.Empty<PreconditionResult>().ToList()).ToReadOnlyCollection(); | ||||
| } | } | ||||
| public static PreconditionGroupResult FromSuccess() | |||||
| public static new PreconditionGroupResult FromSuccess() | |||||
| => new PreconditionGroupResult(null, null, null); | => new PreconditionGroupResult(null, null, null); | ||||
| public static PreconditionGroupResult FromError(string reason, ICollection<PreconditionResult> preconditions) | public static PreconditionGroupResult FromError(string reason, ICollection<PreconditionResult> preconditions) | ||||
| => new PreconditionGroupResult(CommandError.UnmetPrecondition, reason, preconditions); | => new PreconditionGroupResult(CommandError.UnmetPrecondition, reason, preconditions); | ||||
| public static PreconditionGroupResult FromError(IResult result) //needed? | |||||
| public static new PreconditionGroupResult FromError(IResult result) //needed? | |||||
| => new PreconditionGroupResult(result.Error, result.ErrorReason, null); | => new PreconditionGroupResult(result.Error, result.ErrorReason, null); | ||||
| public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; | public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; | ||||
| @@ -3,14 +3,14 @@ | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | ||||
| public struct PreconditionResult : IResult | |||||
| public class PreconditionResult : IResult | |||||
| { | { | ||||
| public CommandError? Error { get; } | public CommandError? Error { get; } | ||||
| public string ErrorReason { get; } | public string ErrorReason { get; } | ||||
| public bool IsSuccess => !Error.HasValue; | public bool IsSuccess => !Error.HasValue; | ||||
| private PreconditionResult(CommandError? error, string errorReason) | |||||
| protected PreconditionResult(CommandError? error, string errorReason) | |||||
| { | { | ||||
| Error = error; | Error = error; | ||||
| ErrorReason = errorReason; | ErrorReason = errorReason; | ||||