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

Discord Bot报错DiscordAPIError[50035]:表单主体无效求助

解决Discord.js工单机器人的name[BASE_TYPE_REQUIRED]错误

错误原因

你遇到的DiscordAPIError[50035]: Invalid Form Body name[BASE_TYPE_REQUIRED]: This field is required错误,本质是频道类型参数格式不符合Discord API要求,导致API无法正确解析请求参数,进而误判为缺少name字段。

在Discord.js v14及以上版本中,创建频道时的type字段必须使用ChannelType枚举值,而不是字符串(比如"GUILD_TEXT")。你的代码中使用了字符串类型的频道标识,触发了API参数验证错误。

修复步骤

1. 导入ChannelType枚举

在ticket_system.js文件的顶部导入语句中,添加ChannelType:

const {
    Client,
    MessageEmbed,
    MessageActionRow,
    MessageButton,
    Modal,
    TextInputComponent,
    ChannelType // 新增此行
  } = require("discord.js");

2. 修改频道创建的type参数

找到创建工单频道的代码段,将type: "GUILD_TEXT"替换为type: ChannelType.GuildText:

await interaction.guild.channels
  .create(ticketname, {
    type: ChannelType.GuildText, // 替换原有的"GUILD_TEXT"
    topic: `ticket of ${interaction.user.tag}`,
    parent: settings.ticketCategory || interaction.channel.parentId,
    permissionOverwrites: [
      // ... 原有权限配置
    ],
  })

3. 额外检查(可选但建议)

  • 确认settings.js中的所有ID(频道ID、角色ID、服务器ID)都是有效且存在的,示例中的超长ID(如54654646472135798721)不符合Discord ID的长度规范,需要替换为你服务器的真实ID。
  • 确保你的Discord.js版本与教程一致,如果教程使用的是v13,而你安装了v14,也会出现参数不兼容问题(v13支持字符串类型的频道标识,但v14强制要求枚举)。

验证修复

修改完成后重启机器人,尝试创建工单,此时应该能正常生成频道,不会再触发name字段缺失的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:27:35