Fix IsTopLevelCommand (#2025)

* init

* fix IsTopLevel for ModuleInfo and CommandInfo
This commit is contained in:
Cenk Ergen
2022-01-08 11:34:02 +03:00
committed by GitHub
parent 9594ccc6d9
commit 4b7cda01a6
2 changed files with 18 additions and 3 deletions

View File

@@ -50,7 +50,7 @@ namespace Discord.Interactions
public abstract bool SupportsWildCards { get; }
/// <inheritdoc/>
public bool IsTopLevelCommand => IgnoreGroupNames || !Module.IsTopLevelGroup;
public bool IsTopLevelCommand { get; }
/// <inheritdoc/>
public RunMode RunMode { get; }
@@ -72,6 +72,7 @@ namespace Discord.Interactions
Name = builder.Name;
MethodName = builder.MethodName;
IgnoreGroupNames = builder.IgnoreGroupNames;
IsTopLevelCommand = IgnoreGroupNames || CheckTopLevel(Module);
RunMode = builder.RunMode != RunMode.Default ? builder.RunMode : commandService._runMode;
Attributes = builder.Attributes.ToImmutableArray();
Preconditions = builder.Preconditions.ToImmutableArray();
@@ -230,6 +231,20 @@ namespace Discord.Interactions
}
}
private static bool CheckTopLevel(ModuleInfo parent)
{
var currentParent = parent;
while (currentParent != null)
{
if (currentParent.IsSlashGroup)
return false;
currentParent = currentParent.Parent;
}
return true;
}
// ICommandInfo
/// <inheritdoc/>

View File

@@ -115,7 +115,7 @@ namespace Discord.Interactions
SubModules = BuildSubModules(builder, commandService, services).ToImmutableArray();
Attributes = BuildAttributes(builder).ToImmutableArray();
Preconditions = BuildPreconditions(builder).ToImmutableArray();
IsTopLevelGroup = CheckTopLevel(parent);
IsTopLevelGroup = IsSlashGroup && CheckTopLevel(parent);
DontAutoRegister = builder.DontAutoRegister;
GroupedPreconditions = Preconditions.ToLookup(x => x.Group, x => x, StringComparer.Ordinal);
@@ -206,7 +206,7 @@ namespace Discord.Interactions
while (currentParent != null)
{
if (currentParent.IsTopLevelGroup)
if (currentParent.IsSlashGroup)
return false;
currentParent = currentParent.Parent;