Module.exports = {nombre: 'borrar', descripción: 'borrar cierta cantidad de mensajes', ejecución asíncrona (mensaje, args) {if (! args [0]) return message.reply ("por favor ingrese la cantidad de .. .

0
Dale 14 mar. 2021 a las 18:51

2 respuestas

La mejor respuesta

messages.fetch se resuelve en un Collection de mensajes. Debe pasar esa matriz al método bulkDelete en el mensaje original .

Además, dado que está utilizando await, también podría eliminar los .then por completo.

const messages = await message.channel.messages.fetch({limit: args[0]});
await message.channel.bulkDelete(messages);

Pero sería más fácil simplemente pasar el número de mensajes para eliminar.

message.channel.bulkDelete(args[0]);

También recomendaría poner args[0] en una variable de antemano, para una mejor legibilidad.

async execute(message, args){
  const numToDelete = args[0];
  // continue using numToDelete, not args[0]
0
Lioness100 14 mar. 2021 a las 16:04

Nombró el argumento en la función .then() message, por lo que sobrescribió el primer objeto de mensaje. Debería cambiarle el nombre a messages porque hace referencia a ese nombre en la misma línea.

Algunos consejos:

  • args[0] será una cadena, no un número, por lo que no tendrá ningún efecto. Puede utilizar el operador unario para convertirlo.

  • No tiene sentido buscar los mensajes, porque solo puede ingresar un número en la función bulkDelete()

await message.channel.bulkDelete(+args[0]);
1
Lioness100 14 mar. 2021 a las 16:00