如何设置Discord私有斜杠命令仅本人可见并可使用?
如何让Discord斜杠命令仅本人可见且可用
你设置default_member_permissions: 0只能限制普通用户执行命令,但无法隐藏命令。要实现仅自己可见且可用,需要结合默认权限限制+用户权限覆盖,具体操作如下:
核心思路
- 将命令的默认成员权限设为
0,让所有用户默认无访问权限; - 单独给你自己的Discord用户ID添加允许访问的权限覆盖,确保只有你能看到并使用该命令。
具体实现步骤
1. 修改命令基础配置
保留命令代码中的default_member_permissions: 0(字符串或数值形式均可,部分discord.js版本建议用字符串'0'):
const Discord = require("discord.js"); module.exports = { name: "ping", description: "nada", type: Discord.ApplicationCommandType.ChatInput, default_member_permissions: 0, // 全局默认无权限 run: async (client, interaction) => { interaction.reply({ content: `Pong ${Math.round(client.ws.ping)}` }) } }
2. 添加针对你ID的权限覆盖
注册命令后,通过discord.js的API给你的用户ID单独开放权限,可选择两种方式实现:
方式一:在机器人ready事件中设置
client.on('ready', async () => { // 获取已注册的ping命令(替换成你的命令ID,或通过名称查找) const pingCommand = await client.application.commands.fetch('你的ping命令ID'); if (pingCommand) { await pingCommand.permissions.add({ permissions: [ { id: '你的Discord用户ID', // 替换为你自己的用户ID type: 'User', // 指定权限对象为用户 permission: true, // 允许访问 }, ], }); console.log('ping命令权限已设置为仅本人可见'); } });
方式二:在部署脚本中设置(推荐)
如果用脚本批量部署命令,可在注册后直接设置权限:
const { REST, Routes } = require('discord.js'); const commands = [ { name: 'ping', description: 'nada', type: Discord.ApplicationCommandType.ChatInput, default_member_permissions: '0', }, ]; const rest = new REST({ version: '10' }).setToken('你的机器人令牌'); (async () => { try { // 注册全局命令(如需服务器专属,替换为Routes.applicationGuildCommands(机器人ID, 服务器ID)) const registeredCommands = await rest.put( Routes.applicationCommands('你的机器人ID'), { body: commands }, ); // 找到ping命令并设置权限 const pingCmd = registeredCommands.find(cmd => cmd.name === 'ping'); await rest.put( Routes.applicationCommandPermissions('你的机器人ID', pingCmd.id), { body: { permissions: [ { id: '你的用户ID', type: 2, // User类型对应的数值 permission: true, }, ], }, }, ); console.log('命令注册及权限设置完成'); } catch (err) { console.error(err); } })();
效果说明
完成以上设置后,其他用户打开斜杠命令列表时看不到这个ping命令,只有你自己能看到并正常执行。
内容的提问来源于stack exchange,提问作者Djs enjoyer
相关产品推荐
相关产品推荐

