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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:30:50