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; }
|
public abstract bool SupportsWildCards { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public bool IsTopLevelCommand => IgnoreGroupNames || !Module.IsTopLevelGroup;
|
public bool IsTopLevelCommand { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public RunMode RunMode { get; }
|
public RunMode RunMode { get; }
|
||||||
@@ -72,6 +72,7 @@ namespace Discord.Interactions
|
|||||||
Name = builder.Name;
|
Name = builder.Name;
|
||||||
MethodName = builder.MethodName;
|
MethodName = builder.MethodName;
|
||||||
IgnoreGroupNames = builder.IgnoreGroupNames;
|
IgnoreGroupNames = builder.IgnoreGroupNames;
|
||||||
|
IsTopLevelCommand = IgnoreGroupNames || CheckTopLevel(Module);
|
||||||
RunMode = builder.RunMode != RunMode.Default ? builder.RunMode : commandService._runMode;
|
RunMode = builder.RunMode != RunMode.Default ? builder.RunMode : commandService._runMode;
|
||||||
Attributes = builder.Attributes.ToImmutableArray();
|
Attributes = builder.Attributes.ToImmutableArray();
|
||||||
Preconditions = builder.Preconditions.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
|
// ICommandInfo
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ namespace Discord.Interactions
|
|||||||
SubModules = BuildSubModules(builder, commandService, services).ToImmutableArray();
|
SubModules = BuildSubModules(builder, commandService, services).ToImmutableArray();
|
||||||
Attributes = BuildAttributes(builder).ToImmutableArray();
|
Attributes = BuildAttributes(builder).ToImmutableArray();
|
||||||
Preconditions = BuildPreconditions(builder).ToImmutableArray();
|
Preconditions = BuildPreconditions(builder).ToImmutableArray();
|
||||||
IsTopLevelGroup = CheckTopLevel(parent);
|
IsTopLevelGroup = IsSlashGroup && CheckTopLevel(parent);
|
||||||
DontAutoRegister = builder.DontAutoRegister;
|
DontAutoRegister = builder.DontAutoRegister;
|
||||||
|
|
||||||
GroupedPreconditions = Preconditions.ToLookup(x => x.Group, x => x, StringComparer.Ordinal);
|
GroupedPreconditions = Preconditions.ToLookup(x => x.Group, x => x, StringComparer.Ordinal);
|
||||||
@@ -206,7 +206,7 @@ namespace Discord.Interactions
|
|||||||
|
|
||||||
while (currentParent != null)
|
while (currentParent != null)
|
||||||
{
|
{
|
||||||
if (currentParent.IsTopLevelGroup)
|
if (currentParent.IsSlashGroup)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
currentParent = currentParent.Parent;
|
currentParent = currentParent.Parent;
|
||||||
|
|||||||
Reference in New Issue
Block a user