I need Help
I need Help

Reputation: 204

Delete Messages Discord.js v.13

I'm trying to delete a message after a few seconds after it was send. I noticed that my Discord v.12 Code isn't working anymore. Can someone tell me what the replacement for .then(m => m.delete({ timeout: 3000 })) is?

My v.12 Code:


    else if (parts[0] == prefix + 'c') {
        if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send("You don't have permission to do that!")
        if (!parts[1]) return message.channel.send('You forgot the number').then(m => m.delete({ timeout: 3000 }))
        if (isNaN(parts[1])) return message.channel.send('You need a number').then(m => m.delete({ timeout: 3000 }))
        if (parts[1] > 100) return message.channel.send("You can't delete more than 100 messages").then(m => m.delete({ timeout: 3000 }))
        if (parts[1] < 2) return message.channel.send('You need to delete at least 2 messages').then(m => m.delete({ timeout: 3000 }))
        message.channel.bulkDelete(parts[1])
        message.channel.send(`I deleted ${parts[1]} messages`).then(m => m.delete({ timeout: 3000 }))

My v.13 Code:


   case 'c':
        case 'C':

            let parts = message.content.split(" ");
            if (!message.member.permissions.has(Discord.Permissions.FLAGS.MANAGE_ROLES)) return;
            if (!parts[1]) return message.channel.send('You need a number!')
            if (isNaN(parts[1])) return;
            if (parts[1] > 100) return;
            if (parts[1] < 2) return;
            message.channel.bulkDelete(parts[1]);


            break;

Upvotes: 1

Views: 2882

Answers (3)

MegaMix_Craft
MegaMix_Craft

Reputation: 2210

You can use this code:

message.channel.send(`I deleted ${parts[1]} messages`)
  .then(msg => {
    setTimeout(() => msg.delete(), 3000)
  }).catch((err) => {console.log(err)}) 

Upvotes: 0

MrMythical
MrMythical

Reputation: 9041

message.delete no longer accepts the options parameter.

The timeout must now be done with setTimeout. See the official guide.

//message.delete({ timeout: 3000 }) in v12 is now
setTimeout(() => message.delete(), 3000)

Upvotes: 5

779804
779804

Reputation: 199

Well, discord completely removed the option to add a delay when deleting messages, so you will have to use the setTimeout function.

let msg = await message.channel.send("test")
setTimeout(function() {
   msg.delete();
}, 3000) // replace the 3000 with the amount of miliseconds.

Upvotes: 0

Related Questions