* Apply consistency to attributes in the commands extension This resolves #527. Not sure if I missed any, putting this up for review. * Allow preconditions to be used multiple times (for use with groups)tags/2.0.0-beta
| @@ -3,7 +3,7 @@ using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| /// <summary> Provides aliases for a command. </summary> | /// <summary> Provides aliases for a command. </summary> | ||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] | |||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||||
| public class AliasAttribute : Attribute | public class AliasAttribute : Attribute | ||||
| { | { | ||||
| /// <summary> The aliases which have been defined for the command. </summary> | /// <summary> The aliases which have been defined for the command. </summary> | ||||
| @@ -1,8 +1,8 @@ | |||||
| using System; | |||||
| using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [AttributeUsage(AttributeTargets.Method)] | |||||
| [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||||
| public class CommandAttribute : Attribute | public class CommandAttribute : Attribute | ||||
| { | { | ||||
| public string Text { get; } | public string Text { get; } | ||||
| @@ -1,8 +1,8 @@ | |||||
| using System; | |||||
| using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [AttributeUsage(AttributeTargets.Class)] | |||||
| [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] | |||||
| public class DontAutoLoadAttribute : Attribute | public class DontAutoLoadAttribute : Attribute | ||||
| { | { | ||||
| } | } | ||||
| @@ -2,7 +2,7 @@ using System; | |||||
| namespace Discord.Commands { | namespace Discord.Commands { | ||||
| [AttributeUsage(AttributeTargets.Property)] | |||||
| [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)] | |||||
| public class DontInjectAttribute : Attribute { | public class DontInjectAttribute : Attribute { | ||||
| } | } | ||||
| @@ -1,8 +1,8 @@ | |||||
| using System; | |||||
| using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [AttributeUsage(AttributeTargets.Class)] | |||||
| [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)] | |||||
| public class GroupAttribute : Attribute | public class GroupAttribute : Attribute | ||||
| { | { | ||||
| public string Prefix { get; } | public string Prefix { get; } | ||||
| @@ -3,7 +3,7 @@ using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| // Override public name of command/module | // Override public name of command/module | ||||
| [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Parameter)] | |||||
| [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] | |||||
| public class NameAttribute : Attribute | public class NameAttribute : Attribute | ||||
| { | { | ||||
| public string Text { get; } | public string Text { get; } | ||||
| @@ -4,7 +4,7 @@ using System.Reflection; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [AttributeUsage(AttributeTargets.Parameter)] | |||||
| [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] | |||||
| public class OverrideTypeReaderAttribute : Attribute | public class OverrideTypeReaderAttribute : Attribute | ||||
| { | { | ||||
| private static readonly TypeInfo _typeReaderTypeInfo = typeof(TypeReader).GetTypeInfo(); | private static readonly TypeInfo _typeReaderTypeInfo = typeof(TypeReader).GetTypeInfo(); | ||||
| @@ -19,4 +19,4 @@ namespace Discord.Commands | |||||
| TypeReader = overridenTypeReader; | TypeReader = overridenTypeReader; | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| } | |||||
| @@ -1,6 +1,5 @@ | |||||
| using System; | using System; | ||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
| using Microsoft.Extensions.DependencyInjection; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| @@ -9,4 +8,4 @@ namespace Discord.Commands | |||||
| { | { | ||||
| public abstract Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, ParameterInfo parameter, object value, IServiceProvider services); | public abstract Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, ParameterInfo parameter, object value, IServiceProvider services); | ||||
| } | } | ||||
| } | |||||
| } | |||||
| @@ -1,4 +1,4 @@ | |||||
| using System; | |||||
| using System; | |||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
| using Microsoft.Extensions.DependencyInjection; | using Microsoft.Extensions.DependencyInjection; | ||||
| @@ -15,7 +15,7 @@ namespace Discord.Commands | |||||
| /// <summary> | /// <summary> | ||||
| /// Require that the command be invoked in a specified context. | /// Require that the command be invoked in a specified context. | ||||
| /// </summary> | /// </summary> | ||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] | |||||
| public class RequireContextAttribute : PreconditionAttribute | public class RequireContextAttribute : PreconditionAttribute | ||||
| { | { | ||||
| public ContextType Contexts { get; } | public ContextType Contexts { get; } | ||||
| @@ -1,4 +1,4 @@ | |||||
| using System; | |||||
| using System; | |||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| @@ -6,7 +6,7 @@ namespace Discord.Commands | |||||
| /// <summary> | /// <summary> | ||||
| /// Require that the command is invoked in a channel marked NSFW | /// Require that the command is invoked in a channel marked NSFW | ||||
| /// </summary> | /// </summary> | ||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] | |||||
| public class RequireNsfwAttribute : PreconditionAttribute | public class RequireNsfwAttribute : PreconditionAttribute | ||||
| { | { | ||||
| public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services) | public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services) | ||||
| @@ -1,7 +1,6 @@ | |||||
| #pragma warning disable CS0618 | |||||
| #pragma warning disable CS0618 | |||||
| using System; | using System; | ||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
| using Microsoft.Extensions.DependencyInjection; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| @@ -9,7 +8,7 @@ namespace Discord.Commands | |||||
| /// Require that the command is invoked by the owner of the bot. | /// Require that the command is invoked by the owner of the bot. | ||||
| /// </summary> | /// </summary> | ||||
| /// <remarks>This precondition will only work if the bot is a bot account.</remarks> | /// <remarks>This precondition will only work if the bot is a bot account.</remarks> | ||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||||
| [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] | |||||
| public class RequireOwnerAttribute : PreconditionAttribute | public class RequireOwnerAttribute : PreconditionAttribute | ||||
| { | { | ||||
| public override async Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services) | public override async Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services) | ||||
| @@ -3,7 +3,7 @@ using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| /// <summary> Sets priority of commands </summary> | /// <summary> Sets priority of commands </summary> | ||||
| [AttributeUsage(AttributeTargets.Method)] | |||||
| [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | |||||
| public class PriorityAttribute : Attribute | public class PriorityAttribute : Attribute | ||||
| { | { | ||||
| /// <summary> The priority which has been set for the command </summary> | /// <summary> The priority which has been set for the command </summary> | ||||
| @@ -1,8 +1,8 @@ | |||||
| using System; | |||||
| using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| [AttributeUsage(AttributeTargets.Parameter)] | |||||
| [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] | |||||
| public class RemainderAttribute : Attribute | public class RemainderAttribute : Attribute | ||||
| { | { | ||||
| } | } | ||||
| @@ -1,9 +1,9 @@ | |||||
| using System; | |||||
| using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| // Extension of the Cosmetic Summary, for Groups, Commands, and Parameters | // Extension of the Cosmetic Summary, for Groups, Commands, and Parameters | ||||
| [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class)] | |||||
| [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = false, Inherited = true)] | |||||
| public class RemarksAttribute : Attribute | public class RemarksAttribute : Attribute | ||||
| { | { | ||||
| public string Text { get; } | public string Text { get; } | ||||
| @@ -1,9 +1,9 @@ | |||||
| using System; | |||||
| using System; | |||||
| namespace Discord.Commands | namespace Discord.Commands | ||||
| { | { | ||||
| // Cosmetic Summary, for Groups and Commands | // Cosmetic Summary, for Groups and Commands | ||||
| [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Parameter)] | |||||
| [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class | AttributeTargets.Parameter, AllowMultiple = false, Inherited = true)] | |||||
| public class SummaryAttribute : Attribute | public class SummaryAttribute : Attribute | ||||
| { | { | ||||
| public string Text { get; } | public string Text { get; } | ||||