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

Discord机器人Whois命令报错DiscordAPIError: Invalid Form Body 求助

解决Discord机器人Whois命令的DiscordAPIError: Invalid Form Body错误

嘿,我帮你排查出这个错误的几个核心原因——都是因为你的MessageEmbed里有不符合Discord API规范的内容,下面是具体问题和修复方案:

1. 活动字段处理错误

你代码里的member.user.presence.activities是一个对象数组,直接塞到addField里会输出[object Object]这种无效内容,Discord API肯定不买账。而且用户可能根本没在玩任何东西,得做空值兜底。

2. 日期对象未格式化

member.user.createdAt是原生的Date对象,直接传给Embed字段的话,Discord API无法正确解析成可读格式,必须转成字符串。

3. Inline字段排版冲突

Discord的Embed要求同一行最多放3个带true(inline)参数的字段,你原来的代码里有些字段的inline设置可能导致排版超出限制,触发API校验失败。

4. 可选排查:缺失Presence权限

如果你的机器人没有GUILD_PRESENCES服务器权限,user.presence会返回空值,也可能间接引发错误,记得去服务器设置里给机器人开这个权限。


修复后的完整代码

if (command === 'whois') {
  let user = message.mentions.users.first() || message.author; // 简化变量赋值逻辑
  const member = message.guild.member(user);
  
  // 处理用户活动:提取活动名称,无活动则显示"None"
  const activities = member.presence?.activities || [];
  const activityDisplay = activities.length 
    ? activities.map(act => act.name).join(', ') 
    : 'None';

  // 格式化日期为本地可读字符串
  const joinedDiscord = user.createdAt.toLocaleString();
  const joinedServer = member.joinedAt?.toLocaleString() || 'Unknown';

  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 || 'None', true)
    .addField("Status:", user.presence?.status || 'Offline', true)
    .addField("Current Activity", activityDisplay)
    .addField("Joined Discord", joinedDiscord)
    .addField("Joined This Server", joinedServer)
    .addField("Roles", member.roles.cache.map(r => `\`${r.name}\``).join(' - '))
    .setFooter(client.user.username);

  message.channel.send(embed);
}

额外优化点说明

  • 用了可选链?.来处理可能的空值(比如用户隐身或机器人拿不到presence数据时),避免抛出Cannot read property的错误。
  • 简化了用户变量的赋值逻辑,不用写多余的if-else。
  • 新增了用户加入当前服务器的时间,让Whois信息更完整。
  • 调整了inline字段的数量,确保每行不超过3个,符合Discord的Embed规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:30:35