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

Discord.js v12检测消息是否来自DM频道失效该如何解决

Discord.js v12 检测DM频道失效解决方案
  • 首先确认客户端初始化时是否正确声明了DIRECT_MESSAGES意图,Discord官方2022年起对未声明对应意图的应用,会屏蔽DM频道的元数据,导致类型识别异常,初始化示例如下:
const client = new Discord.Client({
  intents: [
    'GUILDS',
    'GUILD_MESSAGES',
    'DIRECT_MESSAGES'
  ]
});
  • 替换硬编码频道类型的判断逻辑,使用更稳定的属性判断:DM频道不属于任何服务器,不存在guild属性,该判断不受版本枚举值更新影响,写法如下:
// 最优判断方案,兼容所有v12小版本
if (!msg.channel.guild) {
  // 当前消息来自DM频道
}
  • 也可以做兼容判断,覆盖新旧版本的类型返回值:
if (msg.channel.type === 'dm' || (msg.channel.type === 'text' && !msg.channel.guild)) {
  // 当前消息来自DM频道
}
  • 失效原因说明:原有msg.channel.type === 'dm'逻辑失效,是因为Discord停止对v12版本维护后,网关推送的元数据字段与旧版本枚举映射逻辑不匹配,导致DM频道的类型返回值变为text,替换为无guild属性的判断即可解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:00