Discord.js v14使用子命令时addChoices不是函数的错误求助
问题原因
你错误地给addUserOption(用户选择选项)调用了addChoices方法,但Discord.js里用户类型的选项是用来让用户选择服务器成员的,不支持自定义选择项列表,所以会报错addChoices is not a function。你需要的是让用户选择预设的团队名称,应该用字符串类型的选项。
修正后的代码
module.exports = { data: new SlashCommandBuilder() .setName('raids') .setDescription('Teams for Raids') .addSubcommand(subcommand => subcommand .setName('incursion') .setDescription('Teams for Incursion Raids') .addStringOption(option => option.setName('incursion-team') .setDescription('Name of the team') .setRequired(true) .addChoices( {name: 'incursion mystic', value: 'incursion mystic'}, {name: 'incursion tech', value: 'incursion tech'}, {name: 'incursion mutant', value: 'incursion mutant'}, {name: 'incursion bio', value: 'incursion bio'}, {name: 'incursion skill', value: 'incursion skill'} ))), async execute(interaction) { // 获取子命令对应的选项值 const team = interaction.options.getString('incursion-team'); // 后续逻辑处理示例 await interaction.reply(`你选择了团队:${team}`); } };
补充说明
- 若确实需要让用户选择服务器成员,直接用
addUserOption即可,不能搭配addChoices; - 若要提供预设文本选项,使用
addStringOption+addChoices才是正确组合。
内容的提问来源于stack exchange,提问作者LosmiNCL
相关产品推荐
相关产品推荐

