diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index a76c7bdc3..59586d923 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -70,13 +70,16 @@ namespace Discord.Commands await _moduleLock.WaitAsync().ConfigureAwait(false); try { - if (_moduleDefs.ContainsKey(typeof(T))) - throw new ArgumentException($"This module has already been added."); - var typeInfo = typeof(T).GetTypeInfo(); if (!_moduleTypeInfo.IsAssignableFrom(typeInfo)) throw new ArgumentException($"Modules must inherit ModuleBase."); + if (typeInfo.IsAbstract) + throw new InvalidOperationException("Modules must not be abstract."); + + if (_moduleDefs.ContainsKey(typeof(T))) + throw new ArgumentException($"This module has already been added."); + return AddModuleInternal(typeInfo, dependencyMap); } finally @@ -98,7 +101,7 @@ namespace Discord.Commands if (_moduleTypeInfo.IsAssignableFrom(typeInfo)) { var dontAutoLoad = typeInfo.GetCustomAttribute(); - if (dontAutoLoad == null) + if (dontAutoLoad == null && !typeInfo.IsAbstract) moduleDefs.Add(AddModuleInternal(typeInfo, dependencyMap)); } }