@@ -19,8 +19,8 @@ namespace Discord.Commands
public string Text { get; }
public Module Module { get; }
public IReadOnlyList<CommandParameter> Parameters { get; }
public IReadOnlyList<FilterAttribute> Filters { get; }
public IReadOnlyList<FilterAttribute> Filters { get; }
internal Command(Module module, object instance, CommandAttribute attribute, MethodInfo methodInfo, string groupPrefix)
{
Module = module;
@@ -38,7 +38,7 @@ namespace Discord.Commands
Synopsis = synopsis.Text;
Parameters = BuildParameters(methodInfo);
Filters = BuildFilters(methodInfo);
Filters = BuildFilters(methodInfo);
_action = BuildAction(methodInfo);
}
@@ -54,13 +54,13 @@ namespace Discord.Commands
if (!parseResult.IsSuccess)
return ExecuteResult.FromError(parseResult);
var context = new CommandExecutionContext(this, parseResult, msg);
foreach (FilterAttribute filter in Filters)
{
filter.OnCommandExecuting(context);
if (context.Handled)
return ExecuteResult.FromError(CommandError.InvalidPermissions, $"Permission check for {filter.GetType().FullName} failed");
}
var context = new CommandExecutionContext(this, parseResult, msg);
foreach (FilterAttribute filter in Filters)
{
filter.OnCommandExecuting(context);
if (context.Handled)
return ExecuteResult.FromError(CommandError.InvalidPermissions, $"Permission check for {filter.GetType().FullName} failed");
}
try
{
@@ -73,10 +73,10 @@ namespace Discord.Commands
}
}
private IReadOnlyList<FilterAttribute> BuildFilters(MethodInfo methodInfo)
{
return methodInfo.GetCustomAttributes<FilterAttribute>().ToImmutableArray();
}
private IReadOnlyList<FilterAttribute> BuildFilters(MethodInfo methodInfo)
{
return methodInfo.GetCustomAttributes<FilterAttribute>().ToImmutableArray();
}
private IReadOnlyList<CommandParameter> BuildParameters(MethodInfo methodInfo)
{
@@ -130,7 +130,7 @@ namespace Discord.Commands
{
if (methodInfo.ReturnType != typeof(Task))
throw new InvalidOperationException("Commands must return a non-generic Task.");
return (msg, args) =>
{
object[] newArgs = new object[args.Count + 1];