Javascript 如何在命令中写入子命令?

Javascript 如何在命令中写入子命令?,javascript,node.js,bots,discord.js,Javascript,Node.js,Bots,Discord.js,我想把我的“播放”、“停止”、“跳过”、“离开”命令放到一个名为“music commands.js”的文件中 所以我把我的“播放”代码放进去,就像这样: const Discord = require('discord.js'); const ytdl = require('ytdl-core'); const bot = new Discord.Client(); var servers = {}; module.exports = { name: 'play', desc

我想把我的“播放”、“停止”、“跳过”、“离开”命令放到一个名为“music commands.js”的文件中 所以我把我的“播放”代码放进去,就像这样:

const Discord = require('discord.js');
const ytdl = require('ytdl-core');
const bot = new Discord.Client();
var servers = {};

module.exports = {
    name: 'play',
    description: 'works',
    execute(msg, args) {
        function play(connection, msg) {

            var server = servers[msg.guild.id];

            server.dispatcher = connection.play(ytdl(server.queue[0], {
                filter: "audioonly"
            }));

            server.queue.shift();

            server.dispatcher.on("end", function () {
                if (server.queue[0]) {
                    play(connection, msg);
                } else {
                    connection.disconnect();
                }
            });
        }

        if (!args[1]) {
            msg.reply('please provide a link');
            return;
        }
        if (!msg.member.voice.channel) {
            msg.reply("Join a voice channel to play music!");
            return;
        }

        if (!servers[msg.guild.id]) servers[msg.guild.id] = {
            queue: []
        }

        var server = servers[msg.guild.id];

        server.queue.push(args[1]);

        const voiceChannel = msg.member.voice.channel;
        if (!voiceChannel) {
            return msg.reply('you are not in a voice channel.');
        } else {
            voiceChannel.join().then(function (connection) {
                play(connection, msg);
            }).catch(err => console.error(err));
        }
    }

}
(注意:如果您有改进的想法,请发布)

所以我想在里面添加skip、stop和leave命令,同时能够访问server.dispatcher之类的东西,因为将每个命令放在它自己的文件中会给我带来一些问题,比如连接没有定义,但它在play命令中被定义为函数中的参数,所以我使用它 但是把所有的东西都放在自己的文件里,这使得很多东西没有定义
因此,如果你能在任何方面提供帮助,请发表评论,谢谢

首先,您要检查
!args[1]
这似乎需要
!args[0]
因为所有数组都以
0
开头(只有在您不接受我下面的建议时才这样做)

我建议的一种方法是对
music
命令执行子命令,这样您就可以在一个文件中播放
music
music stop
music skip

您可以通过检查
args[0]
是否为
play
stop
skip
等来实现这一点

更清楚地说,这里有一个例子:

module.exports={
名称:“音乐”,
描述:'作品',
执行(消息,参数){
如果(参数[0]=“播放”){
//做点什么
}否则如果(参数[0]=“停止”){
//做点什么
}else if(参数[0]=“跳过”){
//做点什么
}否则{
message.reply(“使用正确的语法”)
}
}
}

首先,您要检查
!args[1]
这似乎需要
!args[0]
因为所有数组都以
0
开头(只有在您不接受我下面的建议时才这样做)

我建议的一种方法是对
music
命令执行子命令,这样您就可以在一个文件中播放
music
music stop
music skip

您可以通过检查
args[0]
是否为
play
stop
skip
等来实现这一点

更清楚地说,这里有一个例子:

module.exports={
名称:“音乐”,
描述:'作品',
执行(消息,参数){
如果(参数[0]=“播放”){
//做点什么
}否则如果(参数[0]=“停止”){
//做点什么
}else if(参数[0]=“跳过”){
//做点什么
}否则{
message.reply(“使用正确的语法”)
}
}
}