diff --git a/src/Discord.Net.Commands/Command.cs b/src/Discord.Net.Commands/Command.cs index a91251f88..777a8424d 100644 --- a/src/Discord.Net.Commands/Command.cs +++ b/src/Discord.Net.Commands/Command.cs @@ -34,8 +34,8 @@ namespace Discord.Commands public string Category { get; internal set; } public bool IsHidden { get; internal set; } public string Description { get; internal set; } - public int? MinArgs { get; private set; } - public int? MaxArgs { get; private set; } + //public int? MinArgs { get; private set; } + //public int? MaxArgs { get; private set; } public IEnumerable Aliases => _aliases; private string[] _aliases; @@ -61,7 +61,7 @@ namespace Discord.Commands internal void SetParameters(CommandParameter[] parameters) { _parameters = parameters; - if (parameters != null) + /*if (parameters != null) { if (parameters.Length == 0) { @@ -88,7 +88,7 @@ namespace Discord.Commands else MinArgs = optionalStart.Value; } - } + }*/ } internal void SetChecks(IPermissionChecker[] checks) { diff --git a/src/Discord.Net.Commands/CommandParser.cs b/src/Discord.Net.Commands/CommandParser.cs index 323b719ca..affdc7e2c 100644 --- a/src/Discord.Net.Commands/CommandParser.cs +++ b/src/Discord.Net.Commands/CommandParser.cs @@ -78,10 +78,7 @@ namespace Discord.Commands { if (startPosition == endPosition && (parameter == null || parameter.Type != ParameterType.Multiple)) //Is first char of a new arg { - if (argList.Count == command.MaxArgs) - return CommandErrorType.BadArgCount; - - parameter = command._parameters[argList.Count]; + parameter = expectedArgs[argList.Count]; if (parameter.Type == ParameterType.Unparsed) { argList.Add(input.Substring(startPosition)); @@ -147,9 +144,9 @@ namespace Discord.Commands } } - for (int i = argList.Count; i < command._parameters.Length; i++) + for (int i = argList.Count; i < expectedArgs.Length; i++) { - var param = command._parameters[i]; + var param = expectedArgs[i]; switch (param.Type) { case ParameterType.Required: @@ -161,6 +158,12 @@ namespace Discord.Commands } } + if (argList.Count > expectedArgs.Length) + { + if (expectedArgs.Length == 0 || expectedArgs[expectedArgs.Length - 1].Type != ParameterType.Multiple) + return CommandErrorType.BadArgCount; + } + args = argList.ToArray(); return null; }