我正在编码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”,然后显示警告消息
答案 0 :(得分:1)
尝试.catch((err) => { console.log(err); msg.delete(); });