Me estoy metiendo en javascript, o más específicamente en discord.js y he decidido intentar hacer un bot de moderación. Creé un comando de prohibición, y después de prohibir al usuario, envía un mensaje incrustado que muestra la información de la prohibición, como el motivo de la prohibición, la etiqueta del usuario, etc. Decidí usar la función setTimeout para eliminar la incrustación después de 5 segundos. Pero, no puedo averiguar cómo hacerlo. Sé exactamente cómo usar la función setTimeout, es solo que no sé qué hacer para eliminar la inserción. Aquí está mi código:
let kickEmbed = new Discord.MessageEmbed() .setTitle('Member Kicked!') .setColor("GREEN") .addFields( {name: `Member:`, value: `${memberTarget}`}, {name: `Moderator`, value: `${message.author}`}, {name: `Reason`, value: `${kickReason}`} ) await message.channel.send({embeds: [kickEmbed]}) setTimeout(function(){ kickEmbed.delete(); }, 5000); El problema es el "kickEmbed.delete();" parte. No se que poner ahi. kickEmbed no funciona, msg no funciona, el mensaje tampoco funciona. Aquí hay un error si eso ayuda: 'kickEmbed.delete' is not a function
puede alguien ayudarme a resolver esto?
setTimeout(function(newArg) { newArg.delete(); }, 5000, KickEmbed);No me gusta hacer publicaciones, pero la primera parte de la solución es comprender lo que envía a un tiempo de espera. Si no envía argumentos, es una llamada global y si se actualiza/cambia o se elimina, se producen errores en el código, por lo que es óptimo pasar el valor que pretende usar aquí. La segunda parte es la discordia y su uso adecuado. GL
Esto se debe a que lo está ejecutando en el propio objeto MessageEmbed . Haga que guarde el mensaje enviado en una variable, en lugar del objeto incrustado
let kickEmbed = new Discord.MessageEmbed() .setTitle('Member Kicked!') .setColor("GREEN") .addFields( {name: `Member:`, value: `${memberTarget}`}, {name: `Moderator`, value: `${message.author}`}, {name: `Reason`, value: `${kickReason}`} ) let sentMessage = await message.channel.send({embeds: [kickEmbed]}) setTimeout(function(){ sentMessage.delete(); }, 5000)