发送消息并立即删除

Send message and shortly delete it

我正在尝试让 Discord 机器人在比方说 10 秒后删除它的 "system messages",因为我已经看到很多 "Invalid command" 错误和 "Done!" 通知,我想清除它们以获取实际消息。这不同于删除用户有命令的消息;我已经有那个能力了。

我建议您发送消息,等待回复,然后删除返回的消息。这是它现在的工作方式:

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

有关 setTimeout() 的信息,请参阅 the Discord.JS Docs for more information about the Message.delete() function and the Node Docs

旧的 方法是:

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.*/);

当前 API 与旧版本不同。现在传递超时的正确方法如下所示。

Discord.js v13

message.reply('Invalid command!')
  .then(msg => {
    setTimeout(() => msg.delete(), 10000)
  })
  .catch(console.error);

Discord.js v12

message.reply('Invalid command!')
  .then(msg => {
    msg.delete({ timeout: 10000 })
  })
  .catch(console.error);

每个Discord.JS版本都有新的超时删除方式。

Discord.JS V11:

message.channel.send('Test!').then(msg => msg.delete(10000));

Discord.JS V12:

message.channel.send('Test!').then(msg => msg.delete({timeout: 10000}));

Discord.JS V13:

message.channel.send('Test!').then(msg => setTimeout(() => msg.delete(), 10000));

时间以毫秒为单位