使用bulkDelete时,拒绝承诺时出错

时间:2020-02-22 10:04:13

标签: javascript node.js discord.js

因此,使用.bulkDelete()方法从通道中删除消息后,出现此错误:

UnhandledPromiseRejection警告:DiscordAPIError:未知消息

(节点:11720)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝。该错误是由抛出异步内部引起的 没有捕获块或拒绝承诺 未使用.catch()处理。 (拒绝ID:2)(节点:11720)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。在 未来,未处理的承诺拒绝将终止 具有非零退出代码的Node.js进程。

这是我的代码:

//delete the given amount of message + 1 for the sent message
let msgToDelete = parseInt(args[1]) + 1;

//filter messages too old and delete unfiltered messages
msg.channel.bulkDelete(msgToDelete, true)
  .then(deleted => {
    if (deleted.size <= 1) return;
    msg.channel.send(`deleted ${args[1]} messages.`)
      .then(m => m.delete(2500))
      .catch(err => console.error);
  }).catch(err => msg.channel.send(err));

谢谢。

1 个答案:

答案 0 :(得分:0)

问题是您的catch的代码引发了异常,该异常未在catch块内发生,因此无法处理。

值得在全局范围内捕获错误并记录错误。

此外,关于您兑现诺言的方式,您可以像这样简化

//delete the given amount of message + 1 for the sent message
let msgToDelete = parseInt(args[1]) + 1;

//filter messages too old and delete unfiltered messages
msg.channel.bulkDelete(msgToDelete, true)
  .then(deleted => {
    if (deleted.size <= 1) return;
    return msg.channel.send(`deleted ${args[1]} messages.`);
  })
  .then(m => m.delete(2500))
  .catch(err => msg.channel.send(err));