discord.js 如何删除指定的服务器/全局斜杠命令?
Discord.js删除斜杠命令操作指南
先解决Command ID的获取问题
你不需要手动拼接或者猜测命令ID,直接通过API拉取已注册的命令列表就能拿到对应ID:
// 以下代码均需要在客户端触发ready事件后执行 // 1. 获取全局命令ID列表 const globalCommands = await client.application.commands.fetch(); // 输出格式:[ {id: 'xxx', name: '命令名'}, ... ] 找到你要删除的命令对应id即可 console.log('全局命令列表:', globalCommands.map(cmd => ({id: cmd.id, name: cmd.name}))); // 2. 获取指定服务器的命令ID列表 const targetGuildId = '替换为目标服务器ID'; const guildCommands = await client.guilds.cache.get(targetGuildId).commands.fetch(); console.log('指定服务器命令列表:', guildCommands.map(cmd => ({id: cmd.id, name: cmd.name})));
删除指定全局斜杠命令
const toDeleteGlobalCmdId = '替换为你要删除的全局命令ID'; // 删除单个全局命令 await client.application.commands.delete(toDeleteGlobalCmdId); // 如果要清空所有全局命令,使用批量设置空数组的方法 await client.application.commands.set([]);
删除指定服务器斜杠命令
const targetGuildId = '替换为目标服务器ID'; const toDeleteGuildCmdId = '替换为你要删除的服务器命令ID'; // 删除单个服务器命令 await client.guilds.cache.get(targetGuildId).commands.delete(toDeleteGuildCmdId); // 如果要清空该服务器下所有斜杠命令,使用批量设置空数组的方法 await client.guilds.cache.get(targetGuildId).commands.set([]);
注意事项
- 全局命令有最长1小时的Discord缓存延迟,删除操作提交后不会立刻在所有用户端生效,服务器级命令删除是即时生效的
- 操作前建议先拉取命令列表做备份,避免误删需要重新注册
- 机器人必须拥有
applications.commands权限,且对应Token具备目标服务器的命令操作权限
内容的提问来源于stack exchange,提问作者loldonut
相关产品推荐
相关产品推荐

