diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index 083de8e81..4a4b83497 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -97,13 +97,17 @@ namespace Discord.Commands.Builders return this; } - public ModuleInfo Build(CommandService service) + private ModuleInfo BuildImpl(CommandService service, ModuleInfo parent = null) { //Default name to first alias if (Name == null) Name = _aliases[0]; - return new ModuleInfo(this, service); + return new ModuleInfo(this, service, parent); } + + public ModuleInfo Build(CommandService service) => BuildImpl(service); + + internal ModuleInfo Build(CommandService service, ModuleInfo parent) => BuildImpl(service, parent); } } diff --git a/src/Discord.Net.Commands/Info/ModuleInfo.cs b/src/Discord.Net.Commands/Info/ModuleInfo.cs index 3baa2d34f..ab4f65713 100644 --- a/src/Discord.Net.Commands/Info/ModuleInfo.cs +++ b/src/Discord.Net.Commands/Info/ModuleInfo.cs @@ -1,3 +1,4 @@ +using System; using System.Linq; using System.Collections.Generic; using System.Collections.Immutable; @@ -17,14 +18,17 @@ namespace Discord.Commands public IEnumerable Commands { get; } public IReadOnlyList Preconditions { get; } public IReadOnlyList Submodules { get; } + public ModuleInfo Parent { get; } + public bool IsSubmodule => Parent != null; - internal ModuleInfo(ModuleBuilder builder, CommandService service) + internal ModuleInfo(ModuleBuilder builder, CommandService service, ModuleInfo parent = null) { Service = service; Name = builder.Name; Summary = builder.Summary; Remarks = builder.Remarks; + Parent = parent; Aliases = BuildAliases(builder).ToImmutableArray(); Commands = builder.Commands.Select(x => x.Build(this, service)); @@ -67,13 +71,13 @@ namespace Discord.Commands return result; } - private static List BuildSubmodules(ModuleBuilder parent, CommandService service) + private List BuildSubmodules(ModuleBuilder parent, CommandService service) { var result = new List(); foreach (var submodule in parent.Modules) { - result.Add(submodule.Build(service)); + result.Add(submodule.Build(service, this)); } return result; @@ -93,4 +97,4 @@ namespace Discord.Commands return result; } } -} \ No newline at end of file +}