Estoy usando Discord.js V13 (Node JS v16.8.0) y quería pasar una cadena como opción
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.") }, };Tengo la selección del usuario (categoría) y me gustaría ejecutar un castigo de acuerdo con ella.
Cuando ejecuto member.type() , por supuesto, recibo un error ya que no puedo pasar una cadena como opción. ¿Hay alguna forma de que pueda hacer esto?
Sé que puedes hacerlo if (type == 'kick') { //... } if (type == 'ban') { //... } pero creo que mi solución es más conveniente y útil
Puede acceder a una propiedad de un member por su nombre (y llamar a sus métodos) de esta manera:
member["propertyName"]();Entonces, en su caso de uso:
member[type]('Reason: Spam');