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

Discord.js v14如何设置仅特定服务器可见的私有斜杠命令?

在Discord.js v14中设置私有斜杠命令

要实现仅让单个服务器查看指定斜杠命令,其余命令全局可见,核心是区分全局命令与服务器专属命令:将需要私有展示的命令注册为目标服务器的专属命令,其余命令保持全局注册即可。

具体实现步骤

  • 维护两个命令列表:一个存放全局可见的命令,另一个存放仅目标服务器可见的私有命令
  • 分别注册两类命令:
    1. 注册全局命令:通过client.application.commands.set()将全局命令同步到所有服务器(注意:全局命令同步后需要约1小时生效)
    2. 注册服务器专属命令:先获取目标服务器的Guild实例,再通过guild.commands.set()将私有命令同步到该服务器(服务器命令同步后立即生效)

代码示例

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

// 全局命令列表
const globalCommands = [
  {
    name: 'help',
    description: '查看全局帮助'
    // 其他命令配置...
  }
];

// 私有命令列表(仅目标服务器可见)
const privateCommands = [
  {
    name: 'admin-tool',
    description: '仅管理员服务器可用的工具命令'
    // 其他命令配置...
  }
];

// 目标服务器ID
const TARGET_GUILD_ID = '你的目标服务器ID';

client.on('ready', async () => {
  console.log(`已登录为 ${client.user.tag}`);

  // 注册全局命令
  await client.application.commands.set(globalCommands);
  console.log('全局命令已注册');

  // 获取目标服务器并注册私有命令
  const targetGuild = await client.guilds.fetch(TARGET_GUILD_ID);
  if (targetGuild) {
    await targetGuild.commands.set(privateCommands);
    console.log(`私有命令已注册到目标服务器 ${targetGuild.name}`);
  } else {
    console.error('未找到目标服务器');
  }
});

client.login('你的机器人Token');

注意事项

  • 服务器专属命令仅在注册的服务器内可见,不会出现在其他服务器的命令列表中
  • 如果需要更新命令,直接修改对应列表后重新执行注册逻辑即可
  • 确保机器人在目标服务器内拥有Manage Guild权限,否则无法注册服务器专属命令

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:12:08