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

Message.embeds返回undefined但消息实际包含Embed的问题求助

正确获取Discord消息中的Embed对象

你遇到的问题核心是:messages.fetch({limit:1})返回的是MessageCollection(消息集合),而非单个Message对象。集合本身没有embeds属性,只有集合内的单个Message实例才有这个属性,所以直接调用reportMessage.embeds会返回undefined。

以下是几种正确获取Embed的方法:

方法一:使用first()获取集合中的第一条消息

这是最直接的方式,因为你设置了limit:1,集合里只会有一条消息:

const reportMessage = await interaction.channel.messages.fetch({
    limit: 1,
    cache: false,
});

// 从集合中取出第一条消息
const targetMessage = reportMessage.first();
// 现在可以正常获取embeds数组
console.log(targetMessage.embeds);

方法二:遍历集合中的消息

如果后续可能处理多条消息,这种方式更通用:

const reportMessage = await interaction.channel.messages.fetch({
    limit: 1,
    cache: false,
});

// 遍历集合内的所有消息
reportMessage.forEach(message => {
    console.log(message.embeds);
});

额外提示:安全获取第一个Embed

如果需要获取消息里的第一个Embed,建议先判断embeds数组是否为空,避免出现数组越界错误:

const reportMessage = await interaction.channel.messages.fetch({
    limit: 1,
    cache: false,
});

const targetMessage = reportMessage.first();
if (targetMessage?.embeds.length > 0) {
    const firstEmbed = targetMessage.embeds[0];
    console.log(firstEmbed);
} else {
    console.log("目标消息中没有包含Embed");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:42:06