我正在使用 TypeScript 和 Discord.js 编写一个 Discord 机器人来实现游戏。
作为游戏的一部分,我希望某些命令是秘密的 - 它们应该仅限于一个用户,并且该用户不应该具有表明他们有权访问该命令的角色。我在指南或文档中找不到有关如何完成此操作或是否可能的任何内容。
这是一个斜杠命令示例,仅管理员可见。这可行,但我不知道如何使其仅适用于特定用户。
{
data: new SlashCommandBuilder()
.setName("protect")
.setDescription("Protect a user from all visits")
.setDefaultMemberPermissions(0)
.addUserOption(
(option): SlashCommandUserOption =>
option.setName("target").setDescription("The user you wish to protect").setRequired(true),
),
async execute(interaction: ChatInputCommandInteraction) {
const target = interaction.options.getUser("target");
await interaction.reply(`You have selected ${target?.username}!`);
},
}
在 Discord.js 中,您无法专门为用户隐藏它。你只能根据权限让它看到命令。
但是,使用该命令后,您可以检测用户并决定是否运行该命令。
例如:
命令.js
{
data: new SlashCommandBuilder()
.setName(‘protect’)
.setDescription(‘Protect a user from all visits’)
.setDefaultMemberPermissions(0)
.addUserOption(
(option): SlashCommandUserOption =>
option.setName(‘target’).setDescription(‘The user you wish to protect’).setRequired(true),
),
async execute(interaction: ChatInputCommandInteraction) {
const target = interaction.options.getUser(‘target’);
await interaction.reply(`You have selected ${target?.username}!`);
},
whiteList: [‘111111111’] // User Id
}
interactionCreate.js
{
// ...
if(!command.whiteList.includes(interaction.user.id)) return
// ...
}
// return if the user ID is not in the whitelist.