diff --git a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs index 083de8e81..1a4f46663 100644 --- a/src/Discord.Net.Commands/Builders/ModuleBuilder.cs +++ b/src/Discord.Net.Commands/Builders/ModuleBuilder.cs @@ -14,8 +14,7 @@ namespace Discord.Commands.Builders public CommandService Service { get; } public ModuleBuilder Parent { get; } public string Name { get; set; } - public string Summary { get; set; } - public string Remarks { get; set; } + public string Summary { get; set; } public string Remarks { get; set; } public IReadOnlyList Commands => _commands; public IReadOnlyList Modules => _submodules; @@ -97,13 +96,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..ad228baf1 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 +}