DiscordJS V12 反应未捕获错误
DiscordJS V12 Reactions not Catching Error
channel.send(embed).then(m => {
m.react("<:check:947079937372872704>")
m.react("<:warning:943421375526355024>")
}).catch(err => {
message.channel.send('Error')
})
这是我的代码,但当机器人没有添加反应权限时,它会崩溃而不是捕获它并打印错误
问题是您的 then 块中有两个 promise,它们作为一个整体 return 没有任何内容。这意味着您的 catch 块不会捕获任何东西,因为没有什么可捕获的。
如果您删除其中一个反应并稍微调整一下,它就会按预期工作。
.then((m) => m.react("✅"))
请注意,这隐含地 return 是由 m.react("✅")
创建的承诺,然后可以有条件地由您的 catch 块捕获。
所以自然的问题是如何在保持结构的同时添加这些反应?
一种解决方案是使用 Promise.all()
.then((m) => Promise.all([m.react("✅"), m.react("⚠️")]))
简而言之,它需要一系列承诺并尝试解决它们。如果一切顺利,它 return 是一个解析值数组。如果出现错误,它将 return 它遇到的第一个错误。
希望对您有所帮助!
channel.send(embed).then(m => {
m.react("<:check:947079937372872704>")
m.react("<:warning:943421375526355024>")
}).catch(err => {
message.channel.send('Error')
})
这是我的代码,但当机器人没有添加反应权限时,它会崩溃而不是捕获它并打印错误
问题是您的 then 块中有两个 promise,它们作为一个整体 return 没有任何内容。这意味着您的 catch 块不会捕获任何东西,因为没有什么可捕获的。
如果您删除其中一个反应并稍微调整一下,它就会按预期工作。
.then((m) => m.react("✅"))
请注意,这隐含地 return 是由 m.react("✅")
创建的承诺,然后可以有条件地由您的 catch 块捕获。
所以自然的问题是如何在保持结构的同时添加这些反应?
一种解决方案是使用 Promise.all()
.then((m) => Promise.all([m.react("✅"), m.react("⚠️")]))
简而言之,它需要一系列承诺并尝试解决它们。如果一切顺利,它 return 是一个解析值数组。如果出现错误,它将 return 它遇到的第一个错误。
希望对您有所帮助!