You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js 14中else语句无法执行的问题求助

Discord.js 14中catch内else语句无法执行的原因

你的代码里,.catch()回调只有在plr.send()的Promise被reject(也就是发送消息失败抛出错误)时才会触发。进入这个回调的前提就是已经产生了错误,err参数必然是一个有效的错误对象,不会是假值,所以if (err)的判断永远为真,对应的else分支根本没有执行的机会。

如果要在消息发送成功时执行console.log('test'),应该把成功逻辑放在.then()里,而不是在catch块里写else:

if (!attach) {
  plr.send({
    content: `<@${plr.user.id}>`,
    embeds: [dmcontent]
  })
  .then(() => {
    console.log('test') // 消息发送成功时执行
  })
  .catch(err => {
    console.log(err) // 消息发送失败时执行
  })
}

或者用async/await的写法,逻辑会更直观:

if (!attach) {
  try {
    await plr.send({
      content: `<@${plr.user.id}>`,
      embeds: [dmcontent]
    })
    console.log('test') // 发送成功
  } catch (err) {
    console.log(err) // 发送失败
  }
}

内容的提问来源于stack exchange,提问作者Joel T Byju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:30:49