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

Discord.js创建Embed函数报错求助:ValidationError类型错误

问题解决与方案

错误原因

Discord.js v14+ 的 EmbedBuilder.setAuthor() 方法要求传入对象参数,而非直接传入字符串。你当前传入的 username.username 是字符串类型(如报错中的'Moon Wolf'),不符合方法的参数规范,因此触发了ValidationError。

修正后的函数实现

完全可以通过封装函数来生成Embed,无需在每个代码块中重复编写。以下是修正后的通用函数示例:

const { EmbedBuilder } = require('discord.js');

// 通用Embed生成函数
function generateEmbed(color, user, message, userAvatarURL) {
    const embed = new EmbedBuilder()
        .setColor(`#${color}`)
        // 传入包含name和可选iconURL的对象给setAuthor
        .setAuthor({ 
            name: user.username,
            iconURL: userAvatarURL // 用用户头像作为作者图标
        })
        .setThumbnail(userAvatarURL)
        .setDescription(message);
    
    return embed;
}

// 使用示例(假设message是Discord的Message对象)
const myEmbed = generateEmbed('FFFFFF', message.author, '这里是Embed的描述内容', message.author.displayAvatarURL());
// 发送生成好的Embed
message.channel.send({ embeds: [myEmbed] });

关键说明

  • setAuthor() 的参数必须是对象,支持的属性包括:
    • name:作者名称(必填)
    • iconURL:作者头像链接(可选)
    • url:点击作者名称跳转的外部链接(可选)
  • 封装函数后,每次需要生成Embed时,只需传入对应参数即可,大幅提升代码复用性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:16:22