Merge branch 'issue/365'

Conflicts:
	src/Discord.Net.Commands/CommandService.cs
This commit is contained in:
Christopher F
2016-11-26 22:26:47 -05:00
4 changed files with 26 additions and 9 deletions

View File

@@ -39,11 +39,19 @@ namespace Discord.Commands
RunMode = (builder.RunMode == RunMode.Default ? service._defaultRunMode : builder.RunMode);
Priority = builder.Priority;
if (module.Aliases.Count != 0)
Aliases = module.Aliases.Permutate(builder.Aliases, (first, second) => first + " " + second).ToImmutableArray();
else
// both command and module provide aliases
if (module.Aliases.Count > 0 && builder.Aliases.Count > 0)
Aliases = module.Aliases.Permutate(builder.Aliases, (first, second) => second != null ? first + " " + second : first).ToImmutableArray();
// 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();

View File

@@ -49,15 +49,21 @@ namespace Discord.Commands
while (builderStack.Count() > 0)
{
ModuleBuilder level = builderStack.Pop(); // get the topmost builder
ModuleBuilder level = builderStack.Pop(); //get the topmost builder
if (result == null)
result = level.Aliases.ToList(); // create a shallow copy so we don't overwrite the builder unexpectedly
{
if (level.Aliases.Count > 0)
result = level.Aliases.ToList(); //create a shallow copy so we don't overwrite the builder unexpectedly
}
else if (result.Count() > level.Aliases.Count)
result = result.Permutate(level.Aliases, (first, second) => first + " " + second);
else
result = level.Aliases.Permutate(result, (second, first) => first + " " + second);
}
if (result == null) //there were no aliases; default to an empty list
result = new List<string>();
return result;
}