gpt4 book ai didi

javascript - 为什么在运行我的代码时出现错误 "UnhandledPromiseRejectionWarning"?

转载 作者:行者123 更新时间:2023-11-30 19:37:59 45 4
gpt4 key购买 nike

我正在尝试使用 node.js discord 模块制作一个机器人,当在 discord 中输入命令时,它会向用户发送私有(private)消息。该命令应该像这样使用

!rp <@recipient>

然后邮件将发送给收件人。

我的代码是:

else if (rhysmessage.substring(0,4) == ("!rp ")) {
e.message.delete();
var end
var charactercheck
for (end=0; charactercheck < rhysmessage.length; charactercheck =
charactercheck + 1) {
console.log(rhysmessage.charAt(charactercheck))
if (rhysmessage.charAt(charactercheck) == " ") {
end = charactercheck}
}
if (end == 0){
rhyschannel.sendMessage("Please use format `!rp <recipient>
<message>`")
}
else {
usersendto = rhysmessage.substring(5,end-1)
usersendto.sendMessage(rhysmessage.substring(end+1,rhysmessage.leng
th)
}
}

当我运行此代码时,出现错误:“UnhandledPromiseRejectionWarning”。这是为什么?

最佳答案

参见 here有关未处理的 promise 拒绝的信息。

解释:
一些方法(即 Discord.js 中的 send() )返回 promises .引用自 MDN...

The Promise object represents the eventual completion (or failure) of an asynchronous operation, and its resulting value.

换句话说,有些功能必须等待某些事情完成。当出现错误时,promise 将被拒绝,您必须处理它。您看到的警告是因为您的代码没有捕捉到任何被拒绝的 promise 。

解决方案:
实现 .catch() 的使用方法或 try...catch语句来处理任何错误。

await channel.send('hey')
.catch(err => console.error(err));
try {
await channel.send('hey');
await user.send('hey again');
} catch(err) {
console.error(err);
}

请注意,虽然在上面的示例中错误将发送到控制台,但它不会停止您的代码。确保正确处理它,以便任何进一步的代码都不会出错。此外,要使用 await,您必须在异步函数中。

//sendMessage() 在 Discord.js 中已弃用。请改用 send()

关于javascript - 为什么在运行我的代码时出现错误 "UnhandledPromiseRejectionWarning"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734973/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com