Discord.js v14自动补全异常:选选项填充文本而非ID
Discord.js 自动补全选中后填充值不符合预期问题
我在实现Discord.js斜杠命令的自动补全功能时遇到以下问题:
原代码中,自动补全响应的name和value均设置为ID,功能运行正常:
const choices = [ { id: "5Ut5pguaQnF@DbNF4*nzZX^Rxt4qDYpu^iWZ!CT@g^p7", text: "nice name (5Ut5pguaQnF@DbNF4*nzZX^Rxt4qDYpu^iWZ!CT@g^p7)" }, { id: "urQ!M*cUvudvmXvJjq6M%fjaZi%Pj5wKdAjzeP*m33q", text: "diff name (urQ!M*cUvudvmXvJjq6M%fjaZi%Pj5wKdAjzeP*m33q)" }]; const filtered = choices.filter(choice => choice.text.toLowerCase().includes(focusedValue.toLowerCase())); await interaction.respond( filtered.map(choice => ({ name: choice.id, value: choice.id })) );
为了让自动补全显示友好名称而非纯ID,我修改了interaction.respond的参数:
filtered.map(choice => ({ name: choice.text, value: choice.id }))
修改后,自动补全界面正常显示友好名称,但选中选项后,斜杠命令中填充的是友好名称而非ID,导致后续功能无法正常工作。
效果对比
- 选中前:

- 选中后:

我的预期是选中后命令中填充对应的ID,但实际填充了友好名称。
补充斜杠命令构建代码
new SlashCommandBuilder() .setName('monitor_node') .setDescription('Register a new validator node to monitor') .addStringOption(option => option.setName('id') .setDescription('The Node ID to monitor') .setRequired(true) .setMaxLength(44) .setMinLength(44) .setAutocomplete(true)) .addStringOption(option => option.setName('name') .setDescription('A friendly name for the node')),
内容的提问来源于stack exchange,提问作者datu-puti
相关产品推荐
相关产品推荐

