【问题标题】:Store SlashCommandBuilder options in another js file将 SlashCommandBuilder 选项存储在另一个 js 文件中
【发布时间】:2023-01-21 23:57:14
【问题描述】:

我在 SlashCommandBuilder 中有一个选项是这样的:

.addStringOption((option) => option
    .setName('city')
    .setDescription('In which city are you currently based from?')
    .addChoices(
        { 
           name: 'City 1', 
           value: 'City-1-Example' 
        }, 
        { 
           name: 'City 2', 
           value: 'City-2-Example' 
        }
    )
    .setRequired(true)
)

我正在考虑创建另一个单独的 .js 文件,假设 options.js 包含:

export const options = {
    city: [
        { 
           name: 'City 1', 
           value: 'City-1-Example' 
        }, 
        { 
           name: 'City 2', 
           value: 'City-2-Example' 
        }
    ],

    optionsForAnotherCommand: [
        ...
    ]
}

这样我就可以轻松地在一个文件中为所有 SlashCommandBuilder 选项编辑选项。使它井井有条,干净利落,我现在可以继续这样做了:

.addStringOption((option) => option
    .setName('city')
    .setDescription('In which city are you currently based from?')
    .addChoices(options.city)
    .setRequired(true)
)

但是,它返回给我一个错误:

errors: [[ 0, ValidationError: Expected the value to not be an array ...

该代码适用于第一个示例,但如果我想更改所有命令的选项,那将会很麻烦,因为我必须逐个文件地打开它们。想知道这是否可能,如果不是,是否有更有条理的方式将您的选项存储在 SlashCommandBuilder 中?

【问题讨论】:

  • 你可以看到第一个不是数组。你应该使用传播运算符:.addChoices(...options.city)

标签: javascript discord discord.js


【解决方案1】:

感谢@Zsolt Meszaros 的回答。

答案很简单,只要在前面加上...即可:

.addChoices(...options.city)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-30
    • 2018-12-21
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2016-02-10
    相关资源
    最近更新 更多