From e73650b51f0105b39d33e0f8b0e0b7a63ee9cd5b Mon Sep 17 00:00:00 2001 From: Joe4evr Date: Sat, 27 May 2017 13:30:45 +0200 Subject: [PATCH] Log warning on non-public modules. --- .../Builders/ModuleClassBuilder.cs | 13 ++++++++----- src/Discord.Net.Commands/CommandService.cs | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs index d8464ea72..b6db74843 100644 --- a/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleClassBuilder.cs @@ -12,12 +12,12 @@ namespace Discord.Commands { private static readonly TypeInfo _moduleTypeInfo = typeof(IModuleBase).GetTypeInfo(); - public static IEnumerable Search(Assembly assembly) + public static IEnumerable Search(Assembly assembly, CommandService service) { foreach (var type in assembly.ExportedTypes) { var typeInfo = type.GetTypeInfo(); - if (IsValidModuleDefinition(typeInfo) && + if (IsValidModuleDefinition(typeInfo, service) && !typeInfo.IsDefined(typeof(DontAutoLoadAttribute))) { yield return typeInfo; @@ -59,7 +59,7 @@ namespace Discord.Commands { foreach (var typeInfo in subTypes) { - if (!IsValidModuleDefinition(typeInfo)) + if (!IsValidModuleDefinition(typeInfo, service)) continue; if (builtTypes.Contains(typeInfo)) @@ -249,10 +249,13 @@ namespace Discord.Commands return reader; } - private static bool IsValidModuleDefinition(TypeInfo typeInfo) + private static bool IsValidModuleDefinition(TypeInfo typeInfo, CommandService service) { + if (typeInfo.IsNotPublic) + service._cmdLogger.WarningAsync($"Module class {typeInfo.FullName} is not public. Commands from this module will be ignored."); + return _moduleTypeInfo.IsAssignableFrom(typeInfo) && - !typeInfo.IsAbstract; + !typeInfo.IsAbstract; } private static bool IsValidCommandDefinition(MethodInfo methodInfo) diff --git a/src/Discord.Net.Commands/CommandService.cs b/src/Discord.Net.Commands/CommandService.cs index f526e8f3b..93726636a 100644 --- a/src/Discord.Net.Commands/CommandService.cs +++ b/src/Discord.Net.Commands/CommandService.cs @@ -114,7 +114,7 @@ namespace Discord.Commands await _moduleLock.WaitAsync().ConfigureAwait(false); try { - var types = ModuleClassBuilder.Search(assembly).ToArray(); + var types = ModuleClassBuilder.Search(assembly, this).ToArray(); var moduleDefs = ModuleClassBuilder.Build(types, this); foreach (var info in moduleDefs)