Search code examples
javascriptdiscorddiscord.js

Send message and shortly delete it


I'm trying to make a Discord bot delete its "system messages" after, say, 10 seconds, because I've been seeing a lot of "Invalid command" errors and "Done!" notifications, and I'd like to clear them out for actual messages. This is different from deleting messages where the user has a command; I already have that capability.


Solution

  • I recommend you send the message, wait for the response and delete the returned message after that time. Here's how it'd work now:

    message.reply('Invalid command')
      .then(msg => {
        setTimeout(() => msg.delete(), 10000)
      })
      .catch(/*Your Error handling if the Message isn't returned, sent, etc.*/);
    

    See the Discord.JS Docs for more information about the Message.delete() function and the Node Docs for information about setTimeout().

    Old ways to do this were:

    Discord.JS v12:

    message.reply('Invalid command')
      .then(msg => {
        msg.delete({ timeout: 10000 })
      })
      .catch(/*Your Error handling if the Message isn't returned, sent, etc.*/);
    

    Discord.JS v11:

    message.reply('Invalid command')
      .then(msg => {
        msg.delete(10000)
      })
      .catch(/*Your Error handling if the Message isn't returned, sent, etc.*/);