Include which command failed to build on exception

This commit is contained in:
RogueException
2016-08-28 03:44:20 -03:00
parent 8406bd8f73
commit ab42129eb9

View File

@@ -31,39 +31,46 @@ namespace Discord.Commands
internal Command(MethodInfo source, Module module, object instance, CommandAttribute attribute, string groupPrefix) internal Command(MethodInfo source, Module module, object instance, CommandAttribute attribute, string groupPrefix)
{ {
Source = source; try
Module = module; {
_instance = instance; Source = source;
Module = module;
_instance = instance;
Name = source.Name; Name = source.Name;
Text = groupPrefix + attribute.Text; Text = groupPrefix + attribute.Text;
var aliasesBuilder = ImmutableArray.CreateBuilder<string>(); var aliasesBuilder = ImmutableArray.CreateBuilder<string>();
aliasesBuilder.Add(Text); aliasesBuilder.Add(Text);
var aliasesAttr = source.GetCustomAttribute<AliasAttribute>(); var aliasesAttr = source.GetCustomAttribute<AliasAttribute>();
if (aliasesAttr != null) if (aliasesAttr != null)
aliasesBuilder.AddRange(aliasesAttr.Aliases.Select(x => groupPrefix + x)); aliasesBuilder.AddRange(aliasesAttr.Aliases.Select(x => groupPrefix + x));
Aliases = aliasesBuilder.ToImmutable(); Aliases = aliasesBuilder.ToImmutable();
var nameAttr = source.GetCustomAttribute<NameAttribute>(); var nameAttr = source.GetCustomAttribute<NameAttribute>();
if (nameAttr != null) if (nameAttr != null)
Name = nameAttr.Text; Name = nameAttr.Text;
var description = source.GetCustomAttribute<DescriptionAttribute>(); var description = source.GetCustomAttribute<DescriptionAttribute>();
if (description != null) if (description != null)
Description = description.Text; Description = description.Text;
var summary = source.GetCustomAttribute<SummaryAttribute>(); var summary = source.GetCustomAttribute<SummaryAttribute>();
if (summary != null) if (summary != null)
Summary = summary.Text; Summary = summary.Text;
Parameters = BuildParameters(source); Parameters = BuildParameters(source);
HasVarArgs = Parameters.Count > 0 ? Parameters[Parameters.Count - 1].IsMultiple : false; HasVarArgs = Parameters.Count > 0 ? Parameters[Parameters.Count - 1].IsMultiple : false;
Preconditions = BuildPreconditions(source); Preconditions = BuildPreconditions(source);
_action = BuildAction(source); _action = BuildAction(source);
}
catch (Exception ex)
{
throw new Exception($"Failed to build command {source.DeclaringType.FullName}.{source.Name}", ex);
}
} }
public async Task<PreconditionResult> CheckPreconditions(IUserMessage context) public async Task<PreconditionResult> CheckPreconditions(IUserMessage context)