diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index c0c20f80f..76ea4e274 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -83,7 +83,7 @@ namespace Discord.Commands _moduleLock.Release(); } } - public async Task AddModuleAsync() + public async Task AddModuleAsync() where T : IModuleBase { await _moduleLock.WaitAsync().ConfigureAwait(false); try @@ -96,7 +96,7 @@ namespace Discord.Commands var module = ModuleClassBuilder.Build(this, typeInfo).FirstOrDefault(); if (module.Value == default(ModuleInfo)) - throw new InvalidOperationException($"Could not build the module {typeof(T).FullName}, did you pass an invalid type?"); + throw new InvalidOperationException($"Could not build the module {typeof(T).FullName}"); _typedModuleDefs[module.Key] = module.Value; @@ -153,7 +153,7 @@ namespace Discord.Commands _moduleLock.Release(); } } - public async Task RemoveModuleAsync() + public async Task RemoveModuleAsync() where T : IModuleBase { await _moduleLock.WaitAsync().ConfigureAwait(false); try diff --git a/src/Discord.Net.Commands/IModuleBase.cs b/src/Discord.Net.Commands/IModuleBase.cs index fda768b53..14caea612 100644 --- a/src/Discord.Net.Commands/IModuleBase.cs +++ b/src/Discord.Net.Commands/IModuleBase.cs @@ -1,5 +1,10 @@ -namespace Discord.Commands +namespace Discord.Commands { + public interface IModuleBase + where T : ICommandContext + { + } + internal interface IModuleBase { void SetContext(ICommandContext context); diff --git a/src/Discord.Net.Commands/ModuleBase.cs b/src/Discord.Net.Commands/ModuleBase.cs index ed0b49006..17d551994 100644 --- a/src/Discord.Net.Commands/ModuleBase.cs +++ b/src/Discord.Net.Commands/ModuleBase.cs @@ -5,7 +5,7 @@ namespace Discord.Commands { public abstract class ModuleBase : ModuleBase { } - public abstract class ModuleBase : IModuleBase + public abstract class ModuleBase : IModuleBase, IModuleBase where T : class, ICommandContext { public T Context { get; private set; }