在承诺后获得警告,但捕获块除外

时间:2020-07-31 10:27:58

标签: javascript node.js command discord discord.js

我正在编码discord.js机器人,并且需要一个命令,其中第一个参数是Message-ID。 由于fetch()返回了保证,因此不能保证会找到该消息(显然,如果ID错误),所以只有找到消息后,它才会进入.then(),否则,我只需使.catch(msg.delete())

但是,我仍然在控制台UnhandledPromiseRejectionWarning: DiscordAPIError: Unknown Message中收到警告 但是,如果我将catch块更改为.catch(console.error),则警告消失,并且我得到了对象类型的输出。但是我不认为此错误会显示在控制台中,我也不需要这些警告。我的机器人只应该删除该消息,因为键入错误的ID是用户的错。

还有一个问题:catch块何时确切触发,如果ID(args [0])本身有效(18个字符,只有数字),但仍与任何消息都不匹配,或者是否有任何原因导致Promise中的错误。

谢谢!

这里有更多代码:

msg.channel.messages.fetch(args[0])
                .then(message => {
                    console.log("then");
                })
                .catch(console.log("catch"));

真正有趣的是,如果我的ID有效,那么它会首先显示“ catch”,然后显示“ then”。如果无效,则会显示“ catch”,然后显示警告消息

1 个答案:

答案 0 :(得分:1)

尝试.catch((err) => { console.log(err); msg.delete(); });

相关问题