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

discord.js开发中message存在时message.mentions返回undefined问题求助

问题原因

interaction.channel.awaitMessages 方法的返回值是 Collection 类型的消息集合,即使你设置了 max: 1 只采集1条消息,也不会直接返回单个 Message 实例,所以你直接访问集合对象的 mentions 属性自然会返回undefined。

修复方案

你只需要从返回的集合中取出第一条消息实例,再访问对应的属性即可,修改后的代码如下:

interaction.channel.awaitMessages({ messagefilter, max: 1, time: 20000, errors: ['time'] }).then(async collected => {
    // 从采集到的消息集合中提取第一条消息
    const targetMessage = collected.first();
    console.log(targetMessage.mentions);
    if (targetMessage.mentions) {
        // 该分支现在可以正常执行
    } else {
        // 原有分支逻辑
    }
});

额外注意项

如果你使用的是discord.js v14及以上版本,还需要确认客户端初始化时已经开启了必要的网关意图,否则即使拿到Message实例也可能无法读取mentions属性:

  • 必须开启 MessageContent 意图才能获取消息内容、提及用户/角色等相关数据
  • 按需开启对应场景的消息权限:服务器消息需开启 GuildMessages,私信消息需开启 DirectMessages
    客户端初始化参考代码:
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent
  ]
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:57:04