如何在Discord.js中传递字符串作为选项



我正在使用Discord.js V13(节点js v16.8.0(,并希望传递一个字符串作为选项

module.exports = {
data: new SlashCommandBuilder()
.setName('punish')
.setDescription('Punish a Guild Member')
.addUserOption(option =>
option.setName('target')
.setDescription('Select a user')
.setRequired(true))
.addStringOption(option =>
option.setName('category')
.setDescription('Choose punishment')
.setRequired(true)
.addChoice('Kick', 'kick')
.addChoice('Ban', 'ban')),
async execute(interaction) {
const member = interaction.options.getMember('target');
const type = interaction.options.getString('type')

await member.type(`Reason: Spam`) //member.ban() / member.kick()
await interaction.reply("Kicked member successfully.")
},
};

我已经得到了用户的选择(类别(,并希望根据它执行惩罚。

当我执行member.type()时,我当然会遇到一个错误,因为我不能将字符串作为选项传递,有什么方法可以做到这一点吗?

我知道你可以做if (type == 'kick') { //... } if (type == 'ban') { //... },但我认为我的解决方案更方便、更有用

您可以通过名称访问member的属性(并调用其方法(,如下所示:

member["propertyName"]();

所以在您的用例中:

member[type]('Reason: Spam');

最新更新