Cleaned up Command Result structs
This commit is contained in:
@@ -61,10 +61,12 @@ namespace Discord.Commands
|
|||||||
return PreconditionResult.FromSuccess();
|
return PreconditionResult.FromSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ParseResult> Parse(IMessage msg, SearchResult searchResult)
|
public async Task<ParseResult> Parse(IMessage msg, SearchResult searchResult, PreconditionResult? preconditionResult = null)
|
||||||
{
|
{
|
||||||
if (!searchResult.IsSuccess)
|
if (!searchResult.IsSuccess)
|
||||||
return ParseResult.FromError(searchResult);
|
return ParseResult.FromError(searchResult);
|
||||||
|
if (preconditionResult != null && !preconditionResult.Value.IsSuccess)
|
||||||
|
return ParseResult.FromError(preconditionResult.Value);
|
||||||
|
|
||||||
return await CommandParser.ParseArgs(this, msg, searchResult.Text.Substring(Text.Length), 0).ConfigureAwait(false);
|
return await CommandParser.ParseArgs(this, msg, searchResult.Text.Substring(Text.Length), 0).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -209,7 +209,6 @@ namespace Discord.Commands
|
|||||||
return searchResult;
|
return searchResult;
|
||||||
|
|
||||||
var commands = searchResult.Commands;
|
var commands = searchResult.Commands;
|
||||||
|
|
||||||
for (int i = commands.Count - 1; i >= 0; i--)
|
for (int i = commands.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
var preconditionResult = await commands[i].CheckPreconditions(message);
|
var preconditionResult = await commands[i].CheckPreconditions(message);
|
||||||
@@ -221,7 +220,7 @@ namespace Discord.Commands
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var parseResult = await commands[i].Parse(message, searchResult);
|
var parseResult = await commands[i].Parse(message, searchResult, preconditionResult);
|
||||||
if (!parseResult.IsSuccess)
|
if (!parseResult.IsSuccess)
|
||||||
{
|
{
|
||||||
if (commands.Count == 1)
|
if (commands.Count == 1)
|
||||||
@@ -229,6 +228,7 @@ namespace Discord.Commands
|
|||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var executeResult = await commands[i].Execute(message, parseResult);
|
var executeResult = await commands[i].Execute(message, parseResult);
|
||||||
return executeResult;
|
return executeResult;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,15 +20,13 @@ namespace Discord.Commands
|
|||||||
ErrorReason = errorReason;
|
ErrorReason = errorReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static ExecuteResult FromSuccess()
|
public static ExecuteResult FromSuccess()
|
||||||
=> new ExecuteResult(null, null, null);
|
=> new ExecuteResult(null, null, null);
|
||||||
internal static ExecuteResult FromError(CommandError error, string reason)
|
public static ExecuteResult FromError(CommandError error, string reason)
|
||||||
=> new ExecuteResult(null, error, reason);
|
=> new ExecuteResult(null, error, reason);
|
||||||
internal static ExecuteResult FromError(Exception ex)
|
public static ExecuteResult FromError(Exception ex)
|
||||||
=> new ExecuteResult(ex, CommandError.Exception, ex.Message);
|
=> new ExecuteResult(ex, CommandError.Exception, ex.Message);
|
||||||
internal static ExecuteResult FromError(ParseResult result)
|
public static ExecuteResult FromError(IResult result)
|
||||||
=> new ExecuteResult(null, result.Error, result.ErrorReason);
|
|
||||||
internal static ExecuteResult FromError(PreconditionResult result)
|
|
||||||
=> new ExecuteResult(null, result.Error, result.ErrorReason);
|
=> new ExecuteResult(null, result.Error, result.ErrorReason);
|
||||||
|
|
||||||
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
||||||
|
|||||||
@@ -20,13 +20,11 @@ namespace Discord.Commands
|
|||||||
ErrorReason = errorReason;
|
ErrorReason = errorReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static ParseResult FromSuccess(IReadOnlyList<object> values)
|
public static ParseResult FromSuccess(IReadOnlyList<object> values)
|
||||||
=> new ParseResult(values, null, null);
|
=> new ParseResult(values, null, null);
|
||||||
internal static ParseResult FromError(CommandError error, string reason)
|
public static ParseResult FromError(CommandError error, string reason)
|
||||||
=> new ParseResult(null, error, reason);
|
=> new ParseResult(null, error, reason);
|
||||||
internal static ParseResult FromError(SearchResult result)
|
public static ParseResult FromError(IResult result)
|
||||||
=> new ParseResult(null, result.Error, result.ErrorReason);
|
|
||||||
internal static ParseResult FromError(TypeReaderResult result)
|
|
||||||
=> new ParseResult(null, result.Error, result.ErrorReason);
|
=> new ParseResult(null, result.Error, result.ErrorReason);
|
||||||
|
|
||||||
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
||||||
|
|||||||
@@ -16,10 +16,12 @@ namespace Discord.Commands
|
|||||||
ErrorReason = errorReason;
|
ErrorReason = errorReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static PreconditionResult FromSuccess()
|
public static PreconditionResult FromSuccess()
|
||||||
=> new PreconditionResult(null, null);
|
=> new PreconditionResult(null, null);
|
||||||
internal static PreconditionResult FromError(string reason)
|
public static PreconditionResult FromError(string reason)
|
||||||
=> new PreconditionResult(CommandError.UnmetPrecondition, reason);
|
=> new PreconditionResult(CommandError.UnmetPrecondition, reason);
|
||||||
|
public static PreconditionResult FromError(IResult result)
|
||||||
|
=> new PreconditionResult(result.Error, result.ErrorReason);
|
||||||
|
|
||||||
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
||||||
private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
||||||
|
|||||||
@@ -22,10 +22,12 @@ namespace Discord.Commands
|
|||||||
ErrorReason = errorReason;
|
ErrorReason = errorReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal static SearchResult FromSuccess(string text, IReadOnlyList<Command> commands)
|
public static SearchResult FromSuccess(string text, IReadOnlyList<Command> commands)
|
||||||
=> new SearchResult(text, commands, null, null);
|
=> new SearchResult(text, commands, null, null);
|
||||||
internal static SearchResult FromError(CommandError error, string reason)
|
public static SearchResult FromError(CommandError error, string reason)
|
||||||
=> new SearchResult(null, null, error, reason);
|
=> new SearchResult(null, null, error, reason);
|
||||||
|
public static SearchResult FromError(IResult result)
|
||||||
|
=> new SearchResult(null, null, result.Error, result.ErrorReason);
|
||||||
|
|
||||||
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
||||||
private string DebuggerDisplay => IsSuccess ? $"Success ({Commands.Count} Results)" : $"{Error}: {ErrorReason}";
|
private string DebuggerDisplay => IsSuccess ? $"Success ({Commands.Count} Results)" : $"{Error}: {ErrorReason}";
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
namespace Discord.Commands
|
namespace Discord.Commands
|
||||||
{
|
{
|
||||||
@@ -24,6 +23,8 @@ namespace Discord.Commands
|
|||||||
=> new TypeReaderResult(value, null, null);
|
=> new TypeReaderResult(value, null, null);
|
||||||
public static TypeReaderResult FromError(CommandError error, string reason)
|
public static TypeReaderResult FromError(CommandError error, string reason)
|
||||||
=> new TypeReaderResult(null, error, reason);
|
=> new TypeReaderResult(null, error, reason);
|
||||||
|
public static TypeReaderResult FromError(IResult result)
|
||||||
|
=> new TypeReaderResult(null, result.Error, result.ErrorReason);
|
||||||
|
|
||||||
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
|
||||||
private string DebuggerDisplay => IsSuccess ? $"Success ({Value})" : $"{Error}: {ErrorReason}";
|
private string DebuggerDisplay => IsSuccess ? $"Success ({Value})" : $"{Error}: {ErrorReason}";
|
||||||
|
|||||||
Reference in New Issue
Block a user