我正在使用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');