Browse Source

Fix commands from being created with invalid aliases

tags/1.0-rc
FiniteReality 8 years ago
parent
commit
fd5e237b41
2 changed files with 18 additions and 4 deletions
  1. +7
    -1
      src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs
  2. +11
    -3
      src/Discord.Net.Commands/Info/CommandInfo.cs

+ 7
- 1
src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs View File

@@ -116,6 +116,9 @@ namespace Discord.Commands
{
var attributes = method.GetCustomAttributes();

builder.Name = method.Name;

var setName = false;
foreach (var attribute in attributes)
{
// TODO: C#7 type switch
@@ -124,10 +127,13 @@ namespace Discord.Commands
var cmdAttr = attribute as CommandAttribute;
builder.AddAliases(cmdAttr.Text);
builder.RunMode = cmdAttr.RunMode;
builder.Name = builder.Name ?? cmdAttr.Text;
builder.Name = setName ? builder.Name ?? cmdAttr.Text : cmdAttr.Text ?? builder.Name;
}
else if (attribute is NameAttribute)
{
builder.Name = (attribute as NameAttribute).Text;
setName = true;
}
else if (attribute is PriorityAttribute)
builder.Priority = (attribute as PriorityAttribute).Priority;
else if (attribute is SummaryAttribute)


+ 11
- 3
src/Discord.Net.Commands/Info/CommandInfo.cs View File

@@ -39,11 +39,19 @@ namespace Discord.Commands

RunMode = builder.RunMode;
Priority = builder.Priority;
if (module.Aliases.Count != 0)

// both command and module provide aliases
if (module.Aliases.Count > 0 && builder.Aliases.Count > 0)
Aliases = module.Aliases.Permutate(builder.Aliases, (first, second) => first + " " + second).ToImmutableArray();
else
// only module provides aliases
else if (module.Aliases.Count > 0)
Aliases = module.Aliases.ToImmutableArray();
// only command provides aliases
else if (builder.Aliases.Count > 0)
Aliases = builder.Aliases.ToImmutableArray();
// neither provide aliases
else
throw new InvalidOperationException("Cannot build a command without any aliases");

Preconditions = builder.Preconditions.ToImmutableArray();



Loading…
Cancel
Save