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

Discord.js中EmbedBuilder报Missing Property 'name'错误求助

解决Discord.js EmbedBuilder setAuthor缺少'name'属性的错误

问题场景

我尝试创建一个展示消息内容、作者及评分的Embed,但运行时抛出缺少'name'属性的错误。相关代码如下:

const suggestionEmbed = new EmbedBuilder()
  .setTitle('Suggestion')
  .setDescription(`A suggestion from ${message.author}`)
  .setAuthor(message.author)
  .setThumbnail(suggestionSender.displayAvatarURL())
  .addFields(
    { name: 'Suggestion', value: `${message.content}` },
    { name: 'Score', value: `${score}` },
  )
  .setColor(0xffcc00);

报错信息

errors: [
    [
      'name',
      MissingPropertyError: A required property is missing
          at ObjectValidator.handleIgnoreStrategy (/home/container/node_modules/@sapphire/shapeshift/dist/index.js:1243:27)
          at ObjectValidator.handleStrategy (/home/container/node_modules/@sapphire/shapeshift/dist/index.js:1121:47)
          at ObjectValidator.handle (/home/container/node_modules/@sapphire/shapeshift/dist/index.js:1221:17)
          at ObjectValidator.parse (/home/container/node_modules/@sapphire/shapeshift/dist/index.js:212:88)
          at EmbedBuilder.setAuthor (/home/container/node_modules/@discordjs/builders/dist/index.js:291:26)
          at Client.<anonymous> (/home/container/functions.js:64:127)
          at Client.emit (node:events:513:28)
          at MessageCreateAction.handle (/home/container/node_modules/discord.js/src/client/actions/MessageCreate.js:28:14)
          at module.exports [as MESSAGE_CREATE] (/home/container/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
          at WebSocketManager.handlePacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketManager.js:354:31) {
        property: 'name'
      }
    ]
  ]

解决方案

问题出在setAuthor方法的参数上。Discord.js v14及以后版本中,setAuthor不再支持直接传入User/GuildMember对象,必须传入包含必填name属性的配置对象。

修改后的代码如下:

const suggestionEmbed = new EmbedBuilder()
  .setTitle('Suggestion')
  .setDescription(`A suggestion from ${message.author}`)
  // 替换原setAuthor为对象格式,指定name和头像链接
  .setAuthor({ 
    name: message.author.tag, 
    iconURL: message.author.displayAvatarURL() 
  })
  .setThumbnail(message.author.displayAvatarURL()) // 若suggestionSender就是message.author,直接替换避免变量混淆
  .addFields(
    { name: 'Suggestion', value: `${message.content}` },
    { name: 'Score', value: `${score}` },
  )
  .setColor(0xffcc00);

关键说明

  • setAuthor的配置对象中,name是必填项,需传入字符串(比如用户标签message.author.tag)
  • 如需显示作者头像,额外指定iconURL属性,值为头像URL(通过displayAvatarURL()获取)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:53:13