如何使用 discord.js 调用 SubCommand 的选项? (v13)

Posted

技术标签:

【中文标题】如何使用 discord.js 调用 SubCommand 的选项? (v13)【英文标题】:How can I call the options of a SubCommand using discord.js? (v13) 【发布时间】:2021-11-09 23:34:25 【问题描述】:

我最近一直在使用 discord.js 的最新版本、v13 和斜杠命令来开发 Discord 机器人。在阅读了 GitHub 上的文档后,我能够在我的机器人中使用一个子命令:

但是,当尝试从参数中获取选项数组时,我不知道在获取 SubCommand 后如何获取参数。令我失望的是,我发现的唯一函数是 .getSubcommand(), which returns a string oddly enough. 我希望它会返回对象,以便我可以从中获取选项数组。

如何获取子命令中的选项对象?这甚至存在吗?如何使用返回的字符串?

谢谢!

【问题讨论】:

【参考方案1】:

SubCommands 仅受斜杠命令本身的约束,您可以访问其中提供的选项的参数,如下所示:

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

    if (interaction.commandName === 'settings') 
        if (interaction.options.getSubcommand() === 'moderation_logs') 
            const user = interaction.options.getChannel('logging_channel');
        
    
);

将它们视为带有args 的普通消息命令,但更好,因为所有args 都对应于提供的选项,即使它们是不同的子命令,因为它们属于相同的交互(斜杠命令)。 斜线命令很棒 ?!

【讨论】:

以上是关于如何使用 discord.js 调用 SubCommand 的选项? (v13)的主要内容,如果未能解决你的问题,请参考以下文章

启动服务器时如何在 discord.js 中调用 client.on(..) 函数

Discord.js,API 调用失败

Express RESTful API 中的 Discord.js

Discord.js - 尝试等待异步进程并允许递归调用包装器

discord.js 如何在不提及已记录用户的情况下记录用户名以供将来使用?

Discord.js 'presenceUpdate' 没有被调用