【问题标题】:Embed error in serverinfo command Discord.js v13在 serverinfo 命令 Discord.js v13 中嵌入错误
【发布时间】:2023-03-12 23:37:01
【问题描述】:

我在嵌入时遇到错误,提示嵌入字段值不能是空字符串,但我不明白为什么它们是空的。请帮帮我。

我的代码:

const { MessageEmbed } = require('discord.js')

module.exports = {
    name: 'serverinfo',
    description: 'Returns information about the server.',
    async execute(interaction) {
        const guild = interaction.guild

    const owner = interaction.guild.fetchOwner()    
    let guildDescription = guild.description
    if (!guildDescription) {
      guildDescription = 'None'
    }

    const embed = new MessageEmbed()
    .setTitle('serverinfo')
    .setDescription('Returns information about the server.')
    .addFields({
                name: 'Name',
                value: guild.name,
                inline: true
              },
              {
                name: 'ID',
                value: guild.id,
                inline: true
              },
              {
                name: 'Description',
                value: guildDescription,
                inline: true
              },
              {
                name: 'Created at',
                value: guild.createdAt.toDateString(),
                inline: true
              },
              {
                name: 'Owner',
                value: owner.tag,
                inline: true
              },
              {
                name: 'Member Count',
                value: guild.memberCount.toString(),
                inline: true
              },
              {
                name: 'Member Cap',
                value: guild.maximumMembers.toString(),
                inline: true
              },
              {
                name: 'Boosts',
                value: guild.premiumSubscriptionCount.toString(),
                inline: true
              },
              {
                name: 'Boost Level',
                value: guild.premiumTier,
                inline: true
              })

    interaction.reply({ embeds: [embed] })
    },
};

我的错误:

RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.
    at Function.verifyString (/home/runner/MultiBot/node_modules/discord.js/src/util/Util.js:413:41)
    at Function.normalizeField (/home/runner/MultiBot/node_modules/discord.js/src/structures/MessageEmbed.js:443:19)
    at /home/runner/MultiBot/node_modules/discord.js/src/structures/MessageEmbed.js:464:14
    at Array.map (<anonymous>)
    at Function.normalizeFields (/home/runner/MultiBot/node_modules/discord.js/src/structures/MessageEmbed.js:463:8)
    at MessageEmbed.addFields (/home/runner/MultiBot/node_modules/discord.js/src/structures/MessageEmbed.js:286:42)
    at Object.execute (/home/runner/MultiBot/commands/serverinfo.js:19:6)
    at Object.execute (/home/runner/MultiBot/events/interactionCreate.js:11:66)
    at Client.<anonymous> (/home/runner/MultiBot/index.js:16:44)

【问题讨论】:

  • 发布垃圾内容以绕过质量过滤器不太可能为您赢得任何支持。

标签: javascript node.js discord.js


【解决方案1】:

首先,Guild.fetchOwner() 方法返回一个Promise。正如我从您的代码中看到的,execute() 函数已经是async。所以你可能会想要使用await

const owner = await interaction.guild.fetchOwner();

另外ownerGuildMember 的一个实例,它没有.tag 的属性。使用GuildMember.user 属性访问标签。

// ... Rest of the fiels ...
{
    name: 'Owner',
    value: owner.user.tag,
    inline: true
},
// ... Rest of the fiels ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2020-07-14
    • 2022-01-07
    • 1970-01-01
    • 2021-11-04
    • 2022-09-30
    • 2021-11-07
    相关资源
    最近更新 更多