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

Discord.js v14报错:期望对象却收到字符串的问题求助

Discord.js v14 服务器信息命令报错「Expected the value to be an object, but received string instead」修复方案

问题根源

  1. 错误修改Guild实例内置属性:直接给interaction.guild.owner赋值会破坏Discord.js内部对象结构,且后续拼接字符串的方式不符合addFields的参数要求。
  2. addFields调用格式错误:Discord.js v14中,EmbedBuilder.addFields()要求传入包含name和value的对象数组,而非直接传入拼接好的字符串,这是导致类型不匹配报错的核心原因。

修复代码

run: async (client, interaction, args) => {
    let msg = await interaction.reply(`Checking..`);
    let boosts = interaction.guild.premiumSubscriptionCount;
    const ar = "<a:yes:962966293764505620>";
    // 用独立变量存储所有者信息,不修改Guild内置属性
    const owner = await interaction.guild.fetchOwner().then(m => m.user).catch(() => "Unknown Owner");
    
    var boostlevel = "0";
    if (boosts >= 14) boostlevel = "3 / ∞";
    else if (boosts >= 7) boostlevel = "2";
    else if (boosts >= 2) boostlevel = "1";

    let maxbitrate = 96000;
    if (boosts >= 14) maxbitrate = 384000;
    else if (boosts >= 7) maxbitrate = 256000;
    else if (boosts >= 2) maxbitrate = 128000;

    const emb = new EmbedBuilder()
        .setColor("Aqua")
        .setTitle(`Server info of ${interaction.guild.name}`)
        .setImage(interaction.guild.bannerURL({ size: 4096 }))
        // 按要求传入字段对象数组,每个字段包含name和value
        .addFields(
            { name: `${ar} Server Owner`, value: owner === "Unknown Owner" ? owner : `<@${owner.id}>` },
            { name: `${ar} Boost Level`, value: boostlevel },
            { name: `${ar} Max Bitrate`, value: `${maxbitrate}bps` }
        )
        .setThumbnail(client.user.displayAvatarURL({ dynamic: true }))
        .setFooter({
            text: `Command Requested by: ${interaction.user.tag}`,
            iconURL: interaction.user.displayAvatarURL(),
        });

    setTimeout(() => {
        msg.edit({ content: ` `, embeds: [emb] });
    }, 500);
},
};

关键修改说明

  • 移除interaction.guild.owner的赋值操作,改用owner变量存储获取到的用户对象或错误提示
  • 调整boostlevel和maxbitrate的判断逻辑为else if,避免重复覆盖值
  • addFields传入多个字段对象,每个对象明确包含name(字段标题)和value(字段内容)
  • 处理fetchOwner失败的情况,返回友好提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:35:02