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

Discord机器人开发:如何将单服务器斜杠命令修改为全局生效

修改方案

Discord 斜杠命令分为单服务器(测试用,即时生效)和全局(全服务器生效,最长需1小时同步)两种,你当前代码是固定注册到指定ID的单服务器,按以下步骤修改即可实现全局生效:

1. 修改 dataHandler.js 中的 createCmd 函数

兼容单服务器测试和全局注册逻辑,修改后代码如下:

async function createCmd(Client, guildId) {
  const data = [
    //ping cmd
    {
      name: 'test',
      description: 'test slash command'
    }
    // 其余命令继续往这里加即可
  ]

  if (guildId) {
    // 传入服务器ID则注册为单服务器命令
    await Client.guilds.cache.get(guildId)?.commands.set(data)
  } else {
    // 未传入服务器ID则注册为全局命令
    await Client.application.commands.set(data)
  }
}

module.exports = {createCmd}

2. 修改 ready.js 中的调用逻辑

去掉调用createCmd时传入的服务器ID参数即可:

const {prefix} = require("../../botconfig.json")
const {createCmd} = require("../../dataHandler.js")
module.exports = bot => {
  
    console.log(`${bot.user.username} is online`);

    setInterval(() => bot.user.setActivity(`!help | Switch Support`, { type: "WATCHING" }), 15000)
    createCmd(bot) // 去掉第二个参数的服务器ID,走全局注册逻辑
};

注意事项

  • 全局命令注册后最长需要等待1小时才能在所有服务器同步完成,开发阶段可以临时传入测试服务器ID走单服务器注册,即时生效验证功能
  • 邀请机器人进服的链接必须勾选applications.commands权限,否则服务器无法加载你注册的全局斜杠命令
  • 如果需要清理之前测试时注册的单服务器命令,可以单独调用Client.guilds.cache.get(服务器ID).commands.set([])清空即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:06:03