@@ -2,6 +2,7 @@ | |||||
namespace Discord.Commands | namespace Discord.Commands | ||||
{ | { | ||||
// Full summary of method/parameter | |||||
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)] | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Parameter)] | ||||
public class DescriptionAttribute : Attribute | public class DescriptionAttribute : Attribute | ||||
{ | { | ||||
@@ -12,7 +13,8 @@ namespace Discord.Commands | |||||
} | } | ||||
} | } | ||||
[AttributeUsage(AttributeTargets.Method)] | |||||
// Brief summary of method/module | |||||
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] | |||||
public class SynopsisAttribute : Attribute | public class SynopsisAttribute : Attribute | ||||
{ | { | ||||
public string Text { get; } | public string Text { get; } | ||||
@@ -103,7 +103,7 @@ namespace Discord.Commands | |||||
throw new InvalidOperationException("Remainder parameters must be the last parameter in a command."); | throw new InvalidOperationException("Remainder parameters must be the last parameter in a command."); | ||||
string name = parameter.Name; | string name = parameter.Name; | ||||
string description = typeInfo.GetCustomAttribute<DescriptionAttribute>()?.Text; | |||||
string description = parameter.GetCustomAttribute<DescriptionAttribute>()?.Text; | |||||
bool isOptional = parameter.IsOptional; | bool isOptional = parameter.IsOptional; | ||||
object defaultValue = parameter.HasDefaultValue ? parameter.DefaultValue : null; | object defaultValue = parameter.HasDefaultValue ? parameter.DefaultValue : null; | ||||
@@ -9,6 +9,7 @@ namespace Discord.Commands | |||||
{ | { | ||||
public CommandService Service { get; } | public CommandService Service { get; } | ||||
public string Name { get; } | public string Name { get; } | ||||
public string Synopsis { get; } | |||||
public IEnumerable<Command> Commands { get; } | public IEnumerable<Command> Commands { get; } | ||||
internal object Instance { get; } | internal object Instance { get; } | ||||
@@ -18,6 +19,10 @@ namespace Discord.Commands | |||||
Name = typeInfo.Name; | Name = typeInfo.Name; | ||||
Instance = instance; | Instance = instance; | ||||
var synopsisAttr = typeInfo.GetCustomAttribute<SynopsisAttribute>(); | |||||
if (synopsisAttr != null) | |||||
Synopsis = synopsisAttr.Text; | |||||
List<Command> commands = new List<Command>(); | List<Command> commands = new List<Command>(); | ||||
SearchClass(instance, commands, typeInfo, moduleAttr.Prefix ?? ""); | SearchClass(instance, commands, typeInfo, moduleAttr.Prefix ?? ""); | ||||
Commands = commands; | Commands = commands; | ||||