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

Discord.js:如何在操作前检测消息是否已删除?

解决Discord机器人检测消息是否已删除的问题

直接使用channel.messages.fetch时会优先读取本地缓存,导致机器人运行中被删除的消息仍会返回缓存对象,无法提前检测。解决方法是调用fetch时强制跳过缓存,直接请求Discord API获取最新状态:

try {
  const message = await channel.messages.fetch({ snowflake, force: true });
  // 消息存在,可执行后续操作
} catch (error) {
  if (error.code === 10008) {
    // 消息已被删除
  }
}

原理说明:

  • 添加{ force: true }参数后,Discord.js会绕过本地缓存,直接向Discord服务器查询该消息的实时状态
  • 若消息已删除,API会立即抛出代码为10008的DiscordAPIError,无需等到执行delete/edit等操作才触发错误

注意:该方式每次检测都会发起API请求,会占用一定的请求额度,适合需要精准判断消息状态的场景。

内容的提问来源于stack exchange,提问作者TNTzx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:22:09