El comando de prohibición de mi bot de Discord no funciona y actualmente me está dando este error. Mi identificación de roles es 853527575317708820 No sé qué estoy haciendo mal, así que por favor ayúdenme
Aquí está el comando:
Server is ready. TigerShark Community#3557 Has logged in (node:204) UnhandledPromiseRejectiontarning: DiscordAPTError: T AEE RS user_id: Value "<@!856413967595012127>" is not snowflake. at RequestHandler.execute (/home/Tunner/TSC/node_modules/di scoxd. js/src/rest/RequestHandler. js:154:13) at processTicksAndRejections (internal/process/task §5:97:5) :! at async RequestHandler.push (/home/zunner/TSC/node /discord. js/s1c/rest/RequestHandler. js:39:14)Aquí está mi código:
module.exports = { name: 'ban', description: "Used to ban members from a server", async execute(client, message, args, Discord) { if (!(message.member.roles.cache.some(r => r.id === "853527575317708820"))) return let reason; const user = await client.users.fetch(args[0]) if (!args[1]) { reason = "Not specified" } else { reason = args[1] } const embed = new Discord.MessageEmbed() .setTitle(`${user.username} was banned!`) .setDescription(`${user.username} was banned by ${message.author.username} for: ${reason}`) .setColor("#f0db4f") .setFooter("Ban Command") .setTimestamp() message.channel.send(embed) message.guild.members.ban(user) } }Su comando tiene pocos problemas.
La primera es que no permite banear usuarios con comando si se menciona al usuario, solo permite banear por ID de usuario. Para arreglar eso simplemente haz:
const user = message.mentions.members.first() || await client.users.fetch(args[0]) También debe agregar verificar si se encuentra el usuario, así que justo después de declarar el valor para user
const user = message.mentions.members.first() || await client.users.fetch(args[0]) if(!user) return message.reply(`No user found`); Ahora, si permite prohibir tanto las menciones como las ID de usuario, puede haber un valor de user diferente. Así que recomiendo editar su incrustación también a algo como:
const embed = new Discord.MessageEmbed() .setTitle(`${user.user.username} was banned!`) .setDescription(`${user.user.username} was banned by ${message.author.username} for: ${reason}`) .setColor("#f0db4f") .setFooter("Ban Command") .setTimestamp() Esto debería solucionar la mayoría de sus problemas, le recomiendo que si algo no está undefined en el futuro o si encuentra algún error en su código. Haga algo de depuración enviando mensajes a la consola console.log(variable) o console.log("This works?")
si está usando discord.js v12, puede hacer lo que dijo la otra respuesta y obtener al usuario mencionando message.mentions.members.first() pero si está usando v13 eso ya no funcionará
la razón por la que da ese error es porque necesita recuperar al usuario solo por su ID, por lo que puede hacer esto client.users.fetch(args[0].replace('<@!', '').replace('>', '')) para eliminar el <@! y > (prefijo de mención) de él.