Soy un poco nuevo en la codificación de bots de discordia y tengo un problema. Quiero tener un comando de prohibición que prohíba al usuario mencionado en el comando o al usuario que tiene una ID que se proporcionó en el comando. Por ejemplo: & ban @ El usuario n. ° 0001 prohibiría al usuario n. ° 0001 pero si el comando se ve así: & ban 123456789123456789 (digamos que ese es el ID de usuario # 0001) todavía prohibiría el Usuario # 0001 (ya que es el ID del usuario).

Tengo este código, funciona si menciono al usuario, pero no funciona si ingreso el ID.

const Discord = require('discord.js');

module.exports = {
    name: 'testban',
    description: "Executer will simp for the mentioned user",
    execute(message, args){
        if (!message.member.hasPermission("BAN_MEMBERS")) return message.channel.send("Invalid Permissions")
        let User = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0])
        if (!User) return message.channel.send("Invalid User")
        if (User.hasPermission("BAN_MEMBERS")) return message.reply("Can't ban that one, he also can ban")
        let banReason = args.join(" ").slice(22);
        if (!banReason) {
            banReason = "None"
        }
        console.log(`USER = ${User}`)
        User.ban({reason: banReason})
        var UserID = User.id
        console.log(`USER ID = ${UserID}`)
    }
}

El error que obtengo al ingresar la ID es este: message.guild.members.get is not a function

¿Cómo puedo prohibir a la persona incluso si solo proporciono la identificación?

1
Michal Kachlík 26 ago. 2020 a las 16:40

1 respuesta

La mejor respuesta

Si está usando las versiones más recientes de discord.js, necesita usar cache, solo necesita cambiarlo a esto:

message.guild.members.cache.get(args[0])
1
Vinicius Antonio 26 ago. 2020 a las 13:45