【问题标题】:Trouble with Whois CommandWhois 命令的问题
【发布时间】:2020-12-30 21:40:49
【问题描述】:
if (command === 'whois') {
    let user;
    if (message.mentions.users.first()) {
        user = message.mentions.users.first();
    } else {
        user = message.author;
    }
    const member = message.guild.member(user);
            
    const embed = new Discord.MessageEmbed()
        .setColor("RANDOM")
        .setThumbnail(`${member.user.displayAvatarURL({ dynamic: true })}`)
        .addField(`${user.tag}`, `${user}`, true)
        .addField("ID:", `${user.id}`, true)
        .addField("Nickname:", `${member.nickname !== null ? `${member.nickname}` : 'None'}`, true)
        .addField("Status:", user.presence.status, true)
        .addField("Playing", `${member.user.presence.activities}  `)
        .addField("Joined Discord At", member.user.createdAt)
        .addField("Roles", member.roles.cache.map(r => '`'+r.name+'`').join(' - '), true)
        .setFooter(`${client.user.username}`)

    message.channel.send(embed);
}

我不断收到错误 (node:19788) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body 我不知道该怎么办。

【问题讨论】:

  • 我从未使用过此 API,但经过一番调查后,我发现 message.channel.send(embed) 因抛出未捕获的错误而失败。这就是您看到错误“UnhandlerPromiseRejectionWarning”的原因。尝试与此示例类似地捕获错误:discord.js.org/#/docs/main/stable/class/…,并进一步调查。看起来问题特定于 Discord API 和/或库本身。在处理 Promise 时使用 catch 几乎总是一个好主意(如果使用异步语法,则使用 try/catch)。

标签: javascript discord discord.js


【解决方案1】:

你只需要改变这一行:

.addField("Playing", `${member.user.presence.activities}`)

进入

.addField("Playing", `${member.user.presence.activities[0]}`)

因为活动存储在数组中,但您只需要第一个值。如果用户什么都不做,那就是undefined。所以你可以这样做:


.addField("Playing", `${member.user.presence.activities[0] !== undefined ? member.user.presence.activities[0].name} : "Nothing."`)

P.S:如果您想查看活动,请发送console.log(member.user.presence.activities[0])。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2011-07-25
    相关资源
    最近更新 更多