我将尽我所能解释这一点,然而,这有点令人困惑.这是我执行斜杠命令的代码.

client.on('interactionCreate', async interaction => {
    if (!interaction.isCommand()) return;

    const command = client.commands.get(interaction.commandName);

    if (!command) return;

    try {
        await command.execute(interaction, Servers, Tickets, client);
    } catch (error) {
        console.error(error);
        await interaction.reply({ embeds: [errorEmbed], ephemeral: true });
    }
});

如果我把client放在Servers之前,它允许我在其他命令中使用它,然而,如果我把它放在Tickets之后,它就不起作用了.当我将TicketsServers移到最后时,也会发生这种情况,因为我无法再使用命令中的那些命令.你知道为什么会这样吗?

推荐答案

如果运行command.execute(interaction, Servers, Tickets, client),则每个命令文件中的参数顺序必须相同.即使不需要变量ServersTickets,如果要使用client,这也是第四个参数.

最好传递单个对象:

command.execute({ client, interaction, Servers, Tickets })

在命令文件中,分解对象以 Select 所需对象:

async execute({ client, interaction }) {
  // ...
async execute({ Servers }) {
  // ...

这样,顺序就不再重要了,但您仍然需要用这些花括号更新每个命令文件.

Javascript相关问答推荐

获取表格的左滚动位置

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

zoom svg以适应圆

调用removeEvents不起作用

在我的html表单中的用户输入没有被传送到我的google表单中

CheckBox作为Vue3中的一个组件

如何在 cypress 中使用静态嵌套循环

Javascript json定制

为什么客户端没有收到来自服务器的响应消息?

AJAX POST在控制器中返回空(ASP.NET MVC)

如何在Java脚本中对列表中的特定元素进行排序?

使用父标签中的Find函数查找元素

背景动画让网站摇摇欲坠

AG-GRIDreact 显示布尔值而不是复选框

将Singleton实例设置为未定义后的Angular 变量引用持久性行为

按特定顺序将4个数组组合在一起,按ID分组

重新渲染过多(&Q).REACT限制渲染次数以防止无限循环.使用REACT下拉菜单时

在此div中添加一个类,并在一段时间后在Java脚本中将其删除

MAT-TREE更多文本边框对齐问题

如何动态呈现适合未知屏幕大小的最大数量的表行?苗条的