Browse Source

Merge pull request #178 from DigiTechs/command_tweaks

Command tweaks
pull/193/merge
RogueException GitHub 9 years ago
parent
commit
0b9f9b16a9
4 changed files with 25 additions and 13 deletions
  1. +6
    -4
      src/Discord.Net.Commands/Attributes/DescriptionAttribute.cs
  2. +6
    -6
      src/Discord.Net.Commands/Command.cs
  3. +3
    -3
      src/Discord.Net.Commands/CommandParameter.cs
  4. +10
    -0
      src/Discord.Net.Commands/Module.cs

+ 6
- 4
src/Discord.Net.Commands/Attributes/DescriptionAttribute.cs View File

@@ -2,7 +2,8 @@

namespace Discord.Commands
{
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)]
// Full summary of method
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)]
public class DescriptionAttribute : Attribute
{
public string Text { get; }
@@ -12,11 +13,12 @@ namespace Discord.Commands
}
}

[AttributeUsage(AttributeTargets.Method)]
public class SynopsisAttribute : Attribute
// Brief summary of method/module/parameter
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Parameter)]
public class SummaryAttribute : Attribute
{
public string Text { get; }
public SynopsisAttribute(string text)
public SummaryAttribute(string text)
{
Text = text;
}


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

@@ -15,7 +15,7 @@ namespace Discord.Commands

public string Name { get; }
public string Description { get; }
public string Synopsis { get; }
public string Summary { get; }
public string Text { get; }
public Module Module { get; }
public IReadOnlyList<CommandParameter> Parameters { get; }
@@ -33,9 +33,9 @@ namespace Discord.Commands
if (description != null)
Description = description.Text;

var synopsis = methodInfo.GetCustomAttribute<SynopsisAttribute>();
if (synopsis != null)
Synopsis = synopsis.Text;
var summary = methodInfo.GetCustomAttribute<SummaryAttribute>();
if (summary != null)
Summary = summary.Text;

Parameters = BuildParameters(methodInfo);
Preconditions = BuildPreconditions(methodInfo);
@@ -129,11 +129,11 @@ namespace Discord.Commands
throw new InvalidOperationException("Remainder parameters must be the last parameter in a command.");

string name = parameter.Name;
string description = typeInfo.GetCustomAttribute<DescriptionAttribute>()?.Text;
string summary = parameter.GetCustomAttribute<DescriptionAttribute>()?.Text;
bool isOptional = parameter.IsOptional;
object defaultValue = parameter.HasDefaultValue ? parameter.DefaultValue : null;

paramBuilder.Add(new CommandParameter(name, description, type, reader, isOptional, isRemainder, isMultiple, defaultValue));
paramBuilder.Add(new CommandParameter(name, summary, type, reader, isOptional, isRemainder, isMultiple, defaultValue));
}
return paramBuilder.ToImmutable();
}


+ 3
- 3
src/Discord.Net.Commands/CommandParameter.cs View File

@@ -10,17 +10,17 @@ namespace Discord.Commands
private readonly TypeReader _reader;

public string Name { get; }
public string Description { get; }
public string Summary { get; }
public bool IsOptional { get; }
public bool IsRemainder { get; }
public bool IsMultiple { get; }
public Type Type { get; }
internal object DefaultValue { get; }

public CommandParameter(string name, string description, Type type, TypeReader reader, bool isOptional, bool isRemainder, bool isMultiple, object defaultValue)
public CommandParameter(string name, string summary, Type type, TypeReader reader, bool isOptional, bool isRemainder, bool isMultiple, object defaultValue)
{
Name = name;
Description = description;
Summary = summary;
Type = type;
_reader = reader;
IsOptional = isOptional;


+ 10
- 0
src/Discord.Net.Commands/Module.cs View File

@@ -10,6 +10,8 @@ namespace Discord.Commands
{
public CommandService Service { get; }
public string Name { get; }
public string Summary { get; }
public string Description { get; }
public IEnumerable<Command> Commands { get; }
internal object Instance { get; }

@@ -21,6 +23,14 @@ namespace Discord.Commands
Name = typeInfo.Name;
Instance = instance;

var summaryAttr = typeInfo.GetCustomAttribute<SummaryAttribute>();
if (summaryAttr != null)
Summary = summaryAttr.Text;

var descriptionAttr = typeInfo.GetCustomAttribute<DescriptionAttribute>();
if (descriptionAttr != null)
Description = descriptionAttr.Text;

List<Command> commands = new List<Command>();
SearchClass(instance, commands, typeInfo, moduleAttr.Prefix ?? "");
Commands = commands;


Loading…
Cancel
Save