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

求助:SlashCommandBuilder的NumberOption无法访问数组元素

Discord机器人错误修复:无法读取属性问题

你的代码里有几个关键错误导致报错,修复方案如下:

错误点与修正:

  1. 属性名拼写错误:

    • interaction.option → 应为interaction.options(Discord.js中获取命令选项的属性是复数options)
    • setnumber('numero') → 应为getNumber('numero')(你需要获取用户输入的选项值,而非设置,且方法名是驼峰命名的getNumber)
  2. 数组索引不匹配:
    JavaScript数组索引从0开始,但用户输入的是1-based的天数(比如输入1对应第一天),所以需要将获取到的数值减1,才能正确对应数组元素。

  3. 字符串冗余字符:
    数组第三个元素里多了一个),可以顺手清理掉。

修正后的完整代码:

const { SlashCommandBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('dia')
        .setDescription('Te doy una entrada del diario')
        .addNumberOption(option =>
            option.setName('numero')
            .setDescription('El numero de dia que quieres')),

        
    async execute(interaction) {
        const dias = [
            "aqui va lo del dia 1", 
            "aqui va lo del dia 2", 
            "aqui va lo del dia 3", 
            "aqui va lo del dia 4!!!"
        ];
        // 获取用户输入的天数,减1转换为数组索引
        const diaIndex = interaction.options.getNumber('numero') - 1;
        // 处理用户输入超出数组范围的情况,避免返回undefined
        let diaelegido = dias[diaIndex] || "Lo siento, ese día no existe en el diario!";
        await interaction.reply(diaelegido);
    },
};

额外优化:

加了一个判断,如果用户输入的天数超出数组长度(比如输入5),会返回提示信息,避免回复undefined给用户,提升体验。

内容的提问来源于stack exchange,提问作者Camilo Tobon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:45:39