📅  最后修改于: 2023-12-03 14:50:17.163000             🧑  作者: Mango
如果你使用 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 斜杠命令以及如何动态添加和删除命令。希望这篇文章对你有所帮助!