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

discord.js v13开发serverinfo命令报EMBED_FIELD_VALUE错误求助

问题原因

RangeError [EMBED_FIELD_VALUE] 是discord.js v13的类型校验报错,规则是MessageEmbed的字段值必须是非空字符串,你的代码存在多处API调用、类型、拼写错误,导致传入字段值不符合要求。

具体错误点
  • addField()的第二个参数直接传入字符串数组:v13不再自动将数组按换行拼接为字符串,需手动调用.join('\n')转换
  • 频道缓存属性拼写错误:正确属性为guild.channels.cache,原代码漏写channels的复数s
  • 频道类型枚举值错误:v13中文本频道type为GUILD_TEXT、语音频道type为GUILD_VOICE,原代码用的v12旧枚举值无法匹配
  • 语音频道数量统计漏写.size:直接将filter返回的Collection对象拼入字符串,会输出无效的[object Collection]
  • 表情统计逻辑错误:动画表情判断条件应为e.animated === true,原代码两处都写了!e.animated,导致动画表情统计值和普通表情重复
  • 助力人数属性拼写错误:正确属性为guild.premiumSubscriptionCount,原代码拼写错误导致取值为undefined
  • guild.region属性在v13中已废弃,需替换为guild.preferredLocale(服务器首选语言区域)
  • guild.owner直接传入会输出对象类型,需取用户tag/ID等字符串值,且存在缓存为空的可能
  • 发送embed的格式错误:v13要求embed放入embeds数组传递,原代码直接传embed字段不符合API要求
修正后可运行代码
const { Client, MessageEmbed, Message } = require('discord.js');
const moment = require('moment');

module.exports = {
  name: "serverinfo",
  description: "Get server information",
  /**
  *
  * @param {Client} client 
  * @param {Message} message
  * @param {String[]} args
  */
  run: async (client, message, args) => {
    const guild = message.guild;
    // 拉取服务器所有者信息,避免缓存不存在报错
    const owner = await guild.fetchOwner();
    const embed = new MessageEmbed()
      .setTitle(guild.name)
      .setThumbnail(guild.iconURL({ dynamic: true, size: 4096 }))
      .setColor("RANDOM")
      .addField(`General Info`, [
        `ID: ${guild.id}`,
        `Name: ${guild.name}`,
        `Owner: ${owner.user.tag} (${owner.id})`,
      ].join('\n'))
      .addField("Counts", [
        `Roles: ${guild.roles.cache.size}`,
        `Channels: ${guild.channels.cache.size} total (Text: ${guild.channels.cache.filter(ch => ch.type === "GUILD_TEXT").size}, Voice: ${guild.channels.cache.filter(ch => ch.type === "GUILD_VOICE").size})`,
        `Emojis: ${guild.emojis.cache.size} (Regular: ${guild.emojis.cache.filter(e => !e.animated).size}, Animated: ${guild.emojis.cache.filter(e => e.animated).size})`,
      ].join('\n'))
      .addField("Additional Information", [
        `Created At: ${moment(guild.createdTimestamp).format('LT')} ${moment(guild.createdTimestamp).format('LL')} (${moment(guild.createdTimestamp).fromNow()})`,
        `Preferred Locale: ${guild.preferredLocale}`,
        `Boost Tier: ${guild.premiumTier ? `Tier ${guild.premiumTier}` : "None"}`,
        `Boost Count: ${guild.premiumSubscriptionCount || 0}`,
      ].join('\n'));

    message.channel.send({ embeds: [embed] });
  },
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:18:27