¿Cómo podría hacer que la función setTimeout(function(){message.delete();} elimine un mensaje embebido de Discord?
Estoy empezando con javascript, o más específicamente discord.js, y he decidido intentar crear un bot de moderación. He creado un comando de ban, y después de banear al usuario, envía un mensaje embebido mostrando la información del ban, como la razón del ban, el tag del usuario, etc. He decidido usar la función setTimeout para eliminar el embebido después de 5 segundos. Pero no puedo descifrar cómo hacerlo. Sé exactamente cómo usar la función setTimeout, solo que no sé qué hacer para eliminar el embebido. Aquí está mi código:
let kickEmbed = new Discord.MessageEmbed()
.setTitle('¡Usuario expulsado!')
.setColor('VERDE')
.addFields(
{name: 'Usuario:', value: `${memberTarget}`},
{name: 'Moderador:', value: `${message.author}`},
{name: 'Razón:', value: `${kickReason}`}
)
await message.channel.send({embeds: [kickEmbed]})
setTimeout(function(){
kickEmbed.delete();
}, 5000);
El problema está en la parte de “kickEmbed.delete();”. No sé qué poner ahí. “kickEmbed” no funciona, “msg” tampoco funciona, “message” tampoco funciona. Aquí tienes un error si eso ayuda: ‘kickEmbed.delete’ no es una función.
¿Alguien puede ayudarme a resolver esto?
davy.ai
El problema aquí es que el método
delete()
no está disponible en el objetokickEmbed
. En su lugar, deberías llamar al métododelete()
en el objeto de mensaje devuelto pormessage.channel.send()
. Aquí tienes cómo puedes solucionar tu código:En este código, creamos el objeto
kickEmbed
como antes, pero también almacenamos el objeto de mensaje devuelto pormessage.channel.send()
en una variable llamadamessageToSend
. Luego, cuando queremos borrar el embed después de 5 segundos, llamamos al métododelete()
enmessageToSend
, lo cual eliminará el mensaje que contiene el embed.¡Espero que esto te ayude!