Browse Source

Added Command[paramName]

pull/12/merge
RogueException 9 years ago
parent
commit
3f9e9040a5
1 changed files with 12 additions and 29 deletions
  1. +12
    -29
      src/Discord.Net.Commands/Command.cs

+ 12
- 29
src/Discord.Net.Commands/Command.cs View File

@@ -19,6 +19,7 @@ namespace Discord.Commands
public sealed class CommandParameter public sealed class CommandParameter
{ {
public string Name { get; } public string Name { get; }
public int Id { get; internal set; }
public ParameterType Type { get; } public ParameterType Type { get; }


public CommandParameter(string name, ParameterType type) public CommandParameter(string name, ParameterType type)
@@ -45,6 +46,7 @@ namespace Discord.Commands
private IPermissionChecker[] _checks; private IPermissionChecker[] _checks;
private Func<CommandEventArgs, Task> _runFunc; private Func<CommandEventArgs, Task> _runFunc;
private Dictionary<string, CommandParameter> _parametersByName;


internal Command(string text) internal Command(string text)
{ {
@@ -52,44 +54,25 @@ namespace Discord.Commands
IsHidden = false; IsHidden = false;
_aliases = new string[0]; _aliases = new string[0];
_parameters = new CommandParameter[0]; _parameters = new CommandParameter[0];
_parametersByName = new Dictionary<string, CommandParameter>();
} }


public CommandParameter this[string name] => _parametersByName[name];

internal void SetAliases(string[] aliases) internal void SetAliases(string[] aliases)
{ {
_aliases = aliases; _aliases = aliases;
} }
internal void SetParameters(CommandParameter[] parameters) internal void SetParameters(CommandParameter[] parameters)
{ {
_parameters = parameters;
/*if (parameters != null)
_parametersByName.Clear();
for (int i = 0; i < parameters.Length; i++)
{ {
if (parameters.Length == 0)
{
MinArgs = 0;
MaxArgs = 0;
}
else
{
if (parameters[parameters.Length - 1].Type == ParameterType.Multiple)
MaxArgs = null;
else
MaxArgs = parameters.Length;

int? optionalStart = null;
for (int i = parameters.Length - 1; i >= 0; i--)
{
if (parameters[i].Type == ParameterType.Optional)
optionalStart = i;
else
break;
}
if (optionalStart == null)
MinArgs = MaxArgs;
else
MinArgs = optionalStart.Value;
}
}*/
}
parameters[i].Id = i;
_parametersByName[parameters[i].Name] = parameters[i];
}
_parameters = parameters;
}
internal void SetChecks(IPermissionChecker[] checks) internal void SetChecks(IPermissionChecker[] checks)
{ {
_checks = checks; _checks = checks;


Loading…
Cancel
Save