You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

discord.js v13 如何获取全部斜杠命令并完成批量删除?

拉取完整斜杠命令及获取ID的方法

你当前调用的guild.commands.fetch()返回值是Discord.js内置的Collection集合类型(本质是增强版的Map结构),其中存储了所有拉取到的完整斜杠命令对象,你之前只打印了commands.size所以只能看到总数,按以下写法即可提取每条命令的ID:

guild.commands.fetch()
  .then(commands => {
    console.log(`共拉取到 ${commands.size} 条斜杠命令`)
    // 遍历输出每条命令的名称与ID
    commands.forEach(command => {
      console.log(`命令名:${command.name} | 命令ID:${command.id}`)
    })
  })
  .catch(console.error)

批量删除所有斜杠命令的实现

提供两种实现方案,可按需选择:

方案1:直接清空(推荐,执行效率最高)

直接传入空数组覆盖现有命令列表,即可一步清空所有对应范围的斜杠命令:

// 清空指定服务器的斜杠命令
guild.commands.set([])
  .then(() => console.log('该服务器所有斜杠命令已清空'))
  .catch(console.error)

// 如需清空全局范围的斜杠命令,替换为以下代码即可
// client.application.commands.set([])
//   .then(() => console.log('所有全局斜杠命令已清空'))
//   .catch(console.error)

方案2:拉取后逐个删除(适合需要筛选删除的场景)

如果后续需要增加筛选逻辑(比如只删除特定名称的命令),可以先拉取全量命令后遍历删除:

guild.commands.fetch()
  .then(async commands => {
    console.log(`待删除命令总数:${commands.size}`)
    // 遍历逐个删除
    for (const command of commands.values()) {
      await command.delete()
      console.log(`已删除命令:${command.name} (${command.id})`)
    }
    console.log('全部命令删除完成')
  })
  .catch(console.error)

注意事项

  • 服务器斜杠命令的增删操作是即时生效的,全局斜杠命令的同步周期最长可达1小时,删除后不会立刻在所有客户端刷新
  • 操作前请确认机器人已被授权applications.commands权限,且在对应服务器拥有命令管理权限

内容的提问来源于stack exchange,提问作者Enderhoang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 22:06:01