Fix IsTopLevelCommand (#2025)
* init * fix IsTopLevel for ModuleInfo and CommandInfo
This commit is contained in:
@@ -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/>
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user