删除 Discord.js v13 不存在的斜杠命令

Delete Discord.js v13 slash command that doesnt exist

最近,我开始研究 discord 机器人并添加了斜杠命令。

我注意到我有一个 ping(用 pong 回复)命令,不是我创建的,就是我创建的,但我无法摆脱它。

这是我的interactionHandler.js

const { REST } = require("@discordjs/rest");
const { Routes } = require("discord-api-types/v9");

module.exports = async (err, files, client) => {
  if (err) return console.error(err);

  client.interactionsArray = [];
  files.forEach((file) => {
    const interaction = require(`./../interactions/${file}`);
    client.interactions.set(interaction.data.name, interaction);
    client.interactionsArray.push(interaction.data.toJSON());
  });

  const rest = new REST({ version: "9" }).setToken(process.env.DISCORD_TOKEN);
  
  (async () => {
    try {
      // console.log("Refreshing slash command list");
      // const guildIds = await client.guilds.cache.map((guild) => guild.id);
      // const clientId = await client.user.id;
      // guildIds.forEach(async (guildId) => {
      //   await rest.put(Routes.applicationGuildCommands(clientId, guildId), {
      //     body: client.interactionsArray,
      //   });
      // });
      await rest.put(
            Routes.applicationGuildCommands("934895917453168653", "967384688069066852"),
            { body: client.interactionsArray},
        );

      console.log("Successfully refreshed slash command list");
    } catch (error) {
      console.error(error);
    }
  })();
};

有没有办法删除命令,因为我找不到办法。 我正在考虑获取命令的 ID,但我不知道如何获取。 感谢所有的帮手:) Discord.jsv13

这些命令可能不会刷新,原因有两个:

  • 这些命令可能是全局命令,将其更改为刷新全局(而不是公会)命令将Routes.applicationGuildCommands替换为Routes.applicationCommands
  • 这些命令可能来自不同的公会,在这种情况下您应该更改公会 ID

要找出问题,您应该 client.application.commands.fetch() 获取所有命令,然后 console.log() 结果。

例子

//This will fetch all your slash commands
const commands = await client.application.commands.fetch();
//Returns a collection of application commands
console.log(commands);