因此,使用.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));
谢谢。
答案 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));