Browse Source

Include which command failed to build on exception

tags/1.0-rc
RogueException 8 years ago
parent
commit
ab42129eb9
1 changed files with 32 additions and 25 deletions
  1. +32
    -25
      src/Discord.Net.Commands/Command.cs

+ 32
- 25
src/Discord.Net.Commands/Command.cs View File

@@ -31,39 +31,46 @@ namespace Discord.Commands

internal Command(MethodInfo source, Module module, object instance, CommandAttribute attribute, string groupPrefix)
{
Source = source;
Module = module;
_instance = instance;
try
{
Source = source;
Module = module;
_instance = instance;

Name = source.Name;
Text = groupPrefix + attribute.Text;
Name = source.Name;
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>();
if (aliasesAttr != null)
aliasesBuilder.AddRange(aliasesAttr.Aliases.Select(x => groupPrefix + x));
var aliasesAttr = source.GetCustomAttribute<AliasAttribute>();
if (aliasesAttr != null)
aliasesBuilder.AddRange(aliasesAttr.Aliases.Select(x => groupPrefix + x));

Aliases = aliasesBuilder.ToImmutable();
Aliases = aliasesBuilder.ToImmutable();

var nameAttr = source.GetCustomAttribute<NameAttribute>();
if (nameAttr != null)
Name = nameAttr.Text;
var nameAttr = source.GetCustomAttribute<NameAttribute>();
if (nameAttr != null)
Name = nameAttr.Text;

var description = source.GetCustomAttribute<DescriptionAttribute>();
if (description != null)
Description = description.Text;
var description = source.GetCustomAttribute<DescriptionAttribute>();
if (description != null)
Description = description.Text;

var summary = source.GetCustomAttribute<SummaryAttribute>();
if (summary != null)
Summary = summary.Text;
Parameters = BuildParameters(source);
HasVarArgs = Parameters.Count > 0 ? Parameters[Parameters.Count - 1].IsMultiple : false;
Preconditions = BuildPreconditions(source);
_action = BuildAction(source);
var summary = source.GetCustomAttribute<SummaryAttribute>();
if (summary != null)
Summary = summary.Text;

Parameters = BuildParameters(source);
HasVarArgs = Parameters.Count > 0 ? Parameters[Parameters.Count - 1].IsMultiple : false;
Preconditions = BuildPreconditions(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)


Loading…
Cancel
Save