diff --git a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs index eec3e36c6..5f8e9ceaf 100644 --- a/src/Discord.Net.Commands/Attributes/CommandAttribute.cs +++ b/src/Discord.Net.Commands/Attributes/CommandAttribute.cs @@ -6,6 +6,7 @@ namespace Discord.Commands public class CommandAttribute : Attribute { public string Text { get; } + public RunMode RunMode { get; set; } = RunMode.Default; public CommandAttribute() { diff --git a/src/Discord.Net.Commands/Attributes/SetRunModeAttribute.cs b/src/Discord.Net.Commands/Attributes/SetRunModeAttribute.cs deleted file mode 100644 index 607df1b4d..000000000 --- a/src/Discord.Net.Commands/Attributes/SetRunModeAttribute.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace Discord.Commands -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] - public sealed class SetRunModeAttribute : Attribute - { - public RunMode RunMode { get; } - - public SetRunModeAttribute(RunMode runMode) - { - RunMode = runMode; - } - } -} diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index 8215e0232..d774de716 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -20,7 +20,6 @@ namespace Discord.Commands.Builders public string Remarks { get; set; } public string Group { get; set; } public bool IgnoreExtraArgs { get; set; } - public RunMode RunMode { get; set; } public IReadOnlyList Commands => _commands; public IReadOnlyList Modules => _submodules; @@ -36,7 +35,6 @@ namespace Discord.Commands.Builders Service = service; Parent = parent; IgnoreExtraArgs = service._ignoreExtraArgs; - RunMode = service._defaultRunMode; _commands = new List(); _submodules = new List(); diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs index ee2920fa3..58e55d76d 100644 --- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs @@ -126,9 +126,6 @@ namespace Discord.Commands case IgnoreExtraArgsAttribute ignoreExtra: builder.IgnoreExtraArgs = ignoreExtra.IgnoreValue; break; - case SetRunModeAttribute runmode: - builder.RunMode = runmode.RunMode; - break; default: builder.AddAttributes(attribute); break; @@ -162,6 +159,7 @@ namespace Discord.Commands { case CommandAttribute command: builder.AddAliases(command.Text); + builder.RunMode = command.RunMode; builder.Name = builder.Name ?? command.Text; break; case NameAttribute name: @@ -185,9 +183,6 @@ namespace Discord.Commands case IgnoreExtraArgsAttribute ignoreExtra: builder.IgnoreExtraArgs = ignoreExtra.IgnoreValue; break; - case SetRunModeAttribute runmode: - builder.RunMode = runmode.RunMode; - break; default: builder.AddAttributes(attribute); break; diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index 620d540fa..611693cc1 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -45,6 +45,8 @@ namespace Discord.Commands _ignoreExtraArgs = config.IgnoreExtraArgs; _separatorChar = config.SeparatorChar; _defaultRunMode = config.DefaultRunMode; + if (_defaultRunMode == RunMode.Default) + throw new InvalidOperationException("The default run mode cannot be set to Default."); _logManager = new LogManager(config.LogLevel); _logManager.Message += async msg => await _logEvent.InvokeAsync(msg).ConfigureAwait(false); diff --git a/src/Discord.Net.Commands/Info/CommandInfo.cs b/src/Discord.Net.Commands/Info/CommandInfo.cs index f6958db32..7c570bae3 100644 --- a/src/Discord.Net.Commands/Info/CommandInfo.cs +++ b/src/Discord.Net.Commands/Info/CommandInfo.cs @@ -43,7 +43,7 @@ namespace Discord.Commands Summary = builder.Summary; Remarks = builder.Remarks; - RunMode = builder.RunMode; + RunMode = (builder.RunMode == RunMode.Default ? service._defaultRunMode : builder.RunMode); Priority = builder.Priority; Aliases = module.Aliases diff --git a/src/Discord.Net.Commands/Info/ModuleInfo.cs b/src/Discord.Net.Commands/Info/ModuleInfo.cs index 68dcd32bb..02cac00a6 100644 --- a/src/Discord.Net.Commands/Info/ModuleInfo.cs +++ b/src/Discord.Net.Commands/Info/ModuleInfo.cs @@ -14,7 +14,6 @@ namespace Discord.Commands public string Remarks { get; } public string Group { get; } public bool IgnoreExtraArgs { get; } - public RunMode RunMode { get; } public IReadOnlyList Aliases { get; } public IReadOnlyList Commands { get; } @@ -33,7 +32,6 @@ namespace Discord.Commands Remarks = builder.Remarks; Group = builder.Group; IgnoreExtraArgs = builder.IgnoreExtraArgs; - RunMode = builder.RunMode; Parent = parent; Aliases = BuildAliases(builder, service).ToImmutableArray(); diff --git a/src/Discord.Net.Commands/RunMode.cs b/src/Discord.Net.Commands/RunMode.cs index 37e044933..ecb6a4b58 100644 --- a/src/Discord.Net.Commands/RunMode.cs +++ b/src/Discord.Net.Commands/RunMode.cs @@ -1,7 +1,8 @@ -namespace Discord.Commands +namespace Discord.Commands { public enum RunMode { + Default, Sync, Async }