0

我已经在 Discord.JS Bot 上写了很长时间了,在执行它的一个聊天命令(特别是!clear)后,它似乎时不时地在控制台中向我抛出一个随机错误/警告。

现在,正如我已经说过的,我在控制台中收到的消息是警告,而不是实际错误,所以这不是我遇到的主要问题;

我的问题在于 Discord 一方的命令执行:由于未解决、被拒绝的承诺,它根本不会执行!clear,留下包括命令本身在内的所有消息。这是我的代码片段:

if (member.hasPermission("MANAGE_MESSAGES")) {
    channel.fetchMessages({ limit: 100 })
        .then(messages => {
            console.log(`Deleting ${messages.size} messages...`);
            channel.bulkDelete(messages).then(res => {}, err => {});
            channel.sendEmbed({
                // Success Message
            }).then(msg => msg.delete(10000), err => console.log(err));
        }, err => { console.log(err) })
} else {
    channel.sendEmbed({
        // Permission Message
    }).then(msg => msg.delete(10000), err => { console.log(err) });
}

如您所见,我解决了每个 Promise 的成功失败状态,但我仍然会在控制台中看到以下警告:

(节点:14768)错误:错误请求有时也会抛出未找到

-- 仅包含内部 Node.JS 错误的堆栈跟踪 --

(节点:14768)DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。

-- 更多堆栈跟踪与我自己的任何代码无关 --

如果你们中的任何人需要提供额外的代码来回答问题,请随时问我,我会这样做。另外,我还不能 +rep 回答,但我总是很感激他们 :)

4

1 回答 1

1

你没有处理msg.delete(10000)拒绝。你应该这样处理它:

channel.sendEmbed({
  // Success Message
}).then(msg => msg.delete(10000)).catch(err => console.log(err));
于 2017-02-24T20:12:52.273 回答