diff --git a/src/Discord.Net.Commands/Info/CommandInfo.cs b/src/Discord.Net.Commands/Info/CommandInfo.cs index 031d37581..63333f0d2 100644 --- a/src/Discord.Net.Commands/Info/CommandInfo.cs +++ b/src/Discord.Net.Commands/Info/CommandInfo.cs @@ -128,9 +128,11 @@ namespace Discord.Commands { object[] args = GenerateArgs(argList, paramList); - foreach (var parameter in Parameters) + for (int position = 0; position < Parameters.Count; position++) { - var result = await parameter.CheckPreconditionsAsync(context, args, map).ConfigureAwait(false); + var parameter = Parameters[position]; + var argument = args[position]; + var result = await parameter.CheckPreconditionsAsync(context, argument, map).ConfigureAwait(false); if (!result.IsSuccess) return ExecuteResult.FromError(result); } diff --git a/src/Discord.Net.Commands/Info/ParameterInfo.cs b/src/Discord.Net.Commands/Info/ParameterInfo.cs index a0cdf03d7..d49b84c7f 100644 --- a/src/Discord.Net.Commands/Info/ParameterInfo.cs +++ b/src/Discord.Net.Commands/Info/ParameterInfo.cs @@ -4,6 +4,7 @@ using System.Collections.Immutable; using System.Threading.Tasks; using Discord.Commands.Builders; +using System.Reflection; namespace Discord.Commands { @@ -40,19 +41,14 @@ namespace Discord.Commands _reader = builder.TypeReader; } - public async Task CheckPreconditionsAsync(ICommandContext context, object[] args, IDependencyMap map = null) + public async Task CheckPreconditionsAsync(ICommandContext context, object arg, IDependencyMap map = null) { if (map == null) map = DependencyMap.Empty; - int position = 0; - for(position = 0; position < Command.Parameters.Count; position++) - if (Command.Parameters[position] == this) - break; - foreach (var precondition in Preconditions) { - var result = await precondition.CheckPermissions(context, this, args[position], map).ConfigureAwait(false); + var result = await precondition.CheckPermissions(context, this, arg, map).ConfigureAwait(false); if (!result.IsSuccess) return result; }