Browse Source

Add RemoveModulesFromGuildAsync

pull/2537/head
Gradyn Wursten 2 years ago
parent
commit
b813570ae5
1 changed files with 20 additions and 0 deletions
  1. +20
    -0
      src/Discord.Net.Interactions/InteractionService.cs

+ 20
- 0
src/Discord.Net.Interactions/InteractionService.cs View File

@@ -684,6 +684,26 @@ namespace Discord.Interactions
}
}

public async Task<IReadOnlyCollection<RestGuildCommand>> RemoveModulesFromGuildAsync(IGuild guild, params ModuleInfo[] modules)
{
if (guild is null)
throw new ArgumentNullException(nameof(guild));

return await RemoveModulesFromGuildAsync(guild.Id, modules).ConfigureAwait(false);
}

public async Task<IReadOnlyCollection<RestGuildCommand>> RemoveModulesFromGuildAsync(ulong guildId, params ModuleInfo[] modules)
{
EnsureClientReady();

var exclude = modules.SelectMany(x => x.ToApplicationCommandProps(true)).ToList();
var existing = (await RestClient.GetGuildApplicationCommands(guildId).ConfigureAwait(false)).Select(x => x.ToApplicationCommandProps());

var props = existing.Except(exclude);

return await RestClient.BulkOverwriteGuildCommands(props.ToArray(), guildId).ConfigureAwait(false);
}

private bool RemoveModuleInternal (ModuleInfo moduleInfo)
{
if (!_moduleDefs.Remove(moduleInfo))


Loading…
Cancel
Save