使用Node.js中Discord.js机器人创建Webhook时遇DiscordAPIError[50035]错误
解决Discord.js v14创建Webhook时的Invalid Form Body错误
问题原因
Discord.js v14对createWebhook方法的参数做了变更,不再支持将name作为第一个独立参数传入,必须将所有配置项放在一个对象中。你当前的代码同时传了独立的name参数和配置对象,导致Discord API无法正确识别必填的name字段,触发BASE_TYPE_REQUIRED错误。
修复步骤
- 移除
createWebhook方法的第一个独立参数,将name完全移入配置对象中 - 确保目标频道是可创建Webhook的类型(如文本频道、新闻频道)
修正后的代码
let channelNumObj = client.channels.cache.get(channelNumVariable); const webhook = async () => { try { // 校验频道有效性与可创建Webhook的类型 if (channelNumObj && (channelNumObj.isTextBased() || channelNumObj.isNews())) { await channelNumObj.createWebhook({ name: "Snek", avatar: "http://i.imgur.com/mI8XcpG.jpg", reason: "Needed a cool new Webhook", }); console.log("completed"); } else { console.log("目标频道不存在或不支持创建Webhook"); } } catch (err) { console.log(`the error was ${err}`); } }; webhook();
额外说明
- Discord.js v14的
createWebhook方法签名为:createWebhook(options: WebhookCreateOptions, reason?: string),所有配置(包括name)都需放在options对象内 - 新增的频道类型校验可提前拦截无效操作,减少不必要的API请求错误
内容的提问来源于stack exchange,提问作者jason_proger
相关产品推荐
相关产品推荐

