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

discord.js报错this.options.embeds?.map is not a function如何解决

错误原因
  • 核心错误来自this.options.embeds?.map is not a function:discord.js v13及以上版本要求发送embed时,embeds参数必须传入数组,你当前直接传入了单个MessageEmbed实例,discord.js内部调用embeds.map方法处理数据时,对象不存在map方法就抛出了该错误。
  • 后续的Unknown interaction报错是衍生问题:第一个错误导致代码执行中断,没有在discord要求的3秒交互有效期内返回响应,discord就标记该交互无效,抛出404错误。
  • 你的代码还存在两处隐性错误:
    1. interaction.options.getUser("target")返回的是全局User对象,不存在guildname、joinedAt服务器相关属性,需要调用interaction.options.getMember("target")获取服务器成员对象才能读取这两个属性。
    2. displayAvatarURL是方法,需要加括号调用displayAvatarURL(),否则传入的是函数本身,无法正确加载头像。
修复方案
  1. 将interaction.reply的embeds参数改为数组格式,把单个embed包裹在数组内
  2. 把getUser替换为getMember获取服务器成员对象
  3. 补全displayAvatarURL的调用括号

修正后的核心代码片段如下:

// 替换原有的getUser为getMember
const user = interaction.options.getMember("target");
if (user) {
    const file = new MessageAttachment("./src/images/Bobbys.png");
    const userEmbed = new MessageEmbed()
        .setTitle(`${user.user.username}`)
        .setDescription(`A member of the ${interaction.guild.name} server!`)
        .setAuthor("Bobby Bot", client.user.displayAvatarURL())
        .setThumbnail(client.user.displayAvatarURL())
        .addFields(
            { name: "Tag", value: `<@${user.id}>`, inline: true},
            { name: "\u200B", value: "\u200B", inline: true},
            { name: "Member Since", value: `${user.joinedAt}`, inline: true}
        )
        // 补全displayAvatarURL的调用括号
        .setImage(user.user.displayAvatarURL())
        .setTimestamp()
        .setFooter(client.user.tag, client.user.displayAvatarURL());
    // 把embeds的值改为数组,包裹userEmbed
    await interaction.reply({ embeds: [userEmbed], files: [file] });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:00:02