到目前为止 roles.add
效果很好
我的代码是
isMember.roles.add(myRole.id).catch(console.error);
但是,我不想捕获错误并在控制台上显示。
相反,我希望向用户发送错误消息。
我试过了,但没有用。
if(isMember.roles.add(myRole.id))
msg.author.send("Success!");
else
msg.author.send("Error!")
任何帮助都会很棒,谢谢!
答案 0 :(得分:1)
添加角色会返回一个承诺。可以使用 then/catch
回调或 async/await + try/catch
块来处理 Promise。
然后/抓住
.catch()
块将在错误时执行 - .then()
成功时 - 发送消息,只需在函数中执行
isMember.roles.add(myRole.id)
.catch(err => msg.channel.send("Error!"))
.then(() => msg.channel.send("Success!");
异步/等待 + 尝试/捕获
确保您在 async
函数中
try {
await isMember.roles.add(myRole.id);
} catch (err) {
msg.channel.send("Error!");
}
Discord.JS 的 Guide To Promises
答案 1 :(得分:0)
在 if
语句的条件中使用函数通常是不好的做法。相反,这似乎是 try/catch 的一个很好的用途。 try
块尝试执行其中的函数,如果发生异常,它将移至 catch
块。例如:
try {
isMember.roles.add(myRole.id)
msg.author.send('Success!')
} catch {
msg.author.send('Error!')
}