📜  删除 discord.js 斜杠命令 - Javascript (1)

📅  最后修改于: 2023-12-03 14:50:17.163000             🧑  作者: Mango

删除 discord.js 斜杠命令 - Javascript

如果你使用 discord.js v13 并且已经创建了斜杠命令,你可能会遇到以下问题:

  • 需要删除某些斜杠命令
  • 需要动态地添加和删除斜杠命令

在这篇文章中,我们将学习如何使用 discord.js 的 API 删除斜杠命令。

删除单个斜杠命令

要删除单个斜杠命令,你需要知道要删除的命令的 ID。我们可以使用 Client#applications.commands.fetch()GuildApplicationCommandManager#fetch() 方法来获取命令的详细信息,包括 ID。

下面的示例演示了如何使用 Client#applications.commands.fetch() 来获取所有命令的信息,并将结果存储在 commands 数组中。然后,我们可以使用 GuildApplicationCommand#delete() 方法删除特定的命令。

const { Client } = require('discord.js');
const client = new Client();

client.on('ready', async () => {
  const commands = await client.application.commands.fetch();

  for (const cmd of commands.values()) {
    if (cmd.name === 'my-command-name') {
      await cmd.delete();
      console.log(`Deleted command ${cmd.name}`);
      break;
    }
  }
});

client.login('your-token');

在上面的代码中,我们遍历所有命令,如果命令的名称为 'my-command-name',则使用 GuildApplicationCommand#delete() 方法删除它。

批量删除斜杠命令

与删除单个命令类似,我们可以通过遍历所有命令并使用 GuildApplicationCommand#delete() 方法来批量删除命令。

const { Client } = require('discord.js');
const client = new Client();

client.on('ready', async () => {
  const commands = await client.application.commands.fetch();

  for (const cmd of commands.values()) {
    await cmd.delete();
    console.log(`Deleted command ${cmd.name}`);
  }
});

client.login('your-token');

在上面的代码中,我们遍历所有命令,并使用 GuildApplicationCommand#delete() 方法删除每个命令。

动态添加和删除斜杠命令

在某些情况下,你可能需要在运行时动态地添加和删除斜杠命令。为此,你可以使用 GuildApplicationCommandManager#create()GuildApplicationCommand#delete() 方法。

下面的示例演示了如何创建一个新命令,并在 5 秒后删除它:

const { Client } = require('discord.js');
const client = new Client();

client.on('ready', async () => {
  const guildId = '1234567890'; // 替换为你的服务器 ID
  const cmd = await client.guilds.cache.get(guildId).commands.create({
    name: 'test-command',
    description: 'Test command'
  });
  console.log(`Created command ${cmd.name}`);

  setTimeout(async () => {
    await cmd.delete();
    console.log(`Deleted command ${cmd.name}`);
  }, 5000);
});

client.login('your-token');

在上面的代码中,我们使用 GuildApplicationCommandManager#create() 方法创建一个新命令,然后使用 setTimeout() 函数在 5 秒后删除它。

结论

在本文中,我们学习了如何删除 discord.js v13 斜杠命令以及如何动态添加和删除命令。希望这篇文章对你有所帮助!