Discord.js V13报错:addAttachmentOption不是函数问题求助
解决Discord.js V13中
addAttachmentOption is not a function错误 错误原因
你使用的@discordjs/builders版本不支持addAttachmentOption方法——这个快捷方法是在@discordjs/builders的后续版本中才新增的,而Discord.js V13配套的早期builders版本并没有提供该API,因此调用时会抛出类型错误。
修复方案
方案1:使用通用addOption方法(适配V13)
改用addOption并手动指定选项类型为附件类型,这是V13版本中添加附件选项的标准写法:
const { SlashCommandBuilder, AttachmentType } = require('@discordjs/builders'); const { REST } = require('@discordjs/rest'); const { Routes } = require('discord-api-types/v9'); const data = new SlashCommandBuilder() .setName('test') .setDescription('test') .addOption(option => option.setName('img') .setDescription('the image') .setType(AttachmentType) // 可选:如果需要将该选项设为必填,取消下面注释 // .setRequired(true) ); const rest = new REST({ version: '9' }).setToken("你的Bot令牌"); // 注意:body需要传入命令的JSON数组,需调用toJSON()转换 rest.put(Routes.applicationGuildCommands("你的应用ID", "服务器ID"), { body: [data.toJSON()] }) .then(() => console.log('Successfully registered application commands.')) .catch(console.error);
方案2:升级@discordjs/builders版本
如果希望继续使用addAttachmentOption,可以升级@discordjs/builders到支持该方法的版本(需确保与Discord.js V13兼容),执行以下命令:
npm install @discordjs/builders@^0.13.0
升级后即可保留你原来的addAttachmentOption写法,但仍需注意将body改为[data.toJSON()],否则命令注册可能失败。
额外注意事项
- 替换代码中的
"你的Bot令牌"、"你的应用ID"、"服务器ID"为实际值; - 调用
rest.put时,body必须是命令对象的JSON数组,直接传入data会导致Discord API解析失败。
内容的提问来源于stack exchange,提问作者Bruh Gpt
相关产品推荐
相关产品推荐

