Browse Source

Fix IsTopLevelCommand (#2025)

* init

* fix IsTopLevel for ModuleInfo and CommandInfo
tags/3.2.0
Cenk Ergen GitHub 3 years ago
parent
commit
4b7cda01a6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 3 deletions
  1. +16
    -1
      src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs
  2. +2
    -2
      src/Discord.Net.Interactions/Info/ModuleInfo.cs

+ 16
- 1
src/Discord.Net.Interactions/Info/Commands/CommandInfo.cs 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/>


+ 2
- 2
src/Discord.Net.Interactions/Info/ModuleInfo.cs 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;


Loading…
Cancel
Save