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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:10:31