如何使我的不和谐音乐机器人有一个音乐队列?

时间:2017-10-17 21:41:34

标签: javascript discord

我正在制作一个播放音乐的Discord机器人,我已经让它工作了但它只能播放一首歌,当你将机器人链接到另一首歌而不是等待第一首歌结束时,它会取消第一首歌并直接进入第二首歌。我正在使用discord.js,我已将我的代码放入GitHub。这是我的代码:`

int[] numbers = new int[scan.nextInt()];
for( int i = 0; i < numbers.length; i++)
   numbers[i] = scan.nextInt();

我还希望获得投票跳过功能的帮助,人们可以投票跳过正在播放的歌曲并转到下一首歌。

1 个答案:

答案 0 :(得分:1)

你需要排队歌曲。

我将向您展示这个机器人也可以在多个服务器上运行,而不会中断已经使用此功能的通道。

在这里,你告诉他,除其他事项外,还要排队下一首歌:

var servers = {};

function play(connection, message) {
    var server = servers[message.guild.id];

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

    server.dispatcher.setVolume(0.2);

    server.queue.shift();

    server.dispatcher.on("end", function () {

    if (server.queue[0]) play(connection, message);
    else connection.disconnect();

});

}

如果您想在同一时间在更多服务器上运行,则需要.server。

我也有开关:

switch (args[0]) {
 case "play":
        if (!args[1]) {
            message.reply("Please provide a link")
            return;
        }
        if (!message.member.voiceChannel) {
            message.channel.send("You must be in a voice channel!")
            return;
        }
        if (!servers[message.guild.id]) servers[message.guild.id] = {
            queue: []
        }
        var server = servers[message.guild.id];

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

        if (!message.guild.voiceConnection) message.member.voiceChannel.join().then(function (connection) {
                play(connection, message);
        });
        break;
 case "skip":
        var server = servers[message.guild.id];

        if (server.dispatcher) server.dispatcher.end();
        break;

 case "stop":
        var server = servers[message.guild.id];

        if (message.guild.voiceConnection) message.guild.voiceConnection.disconnect();
        break;
}

在那里,我问了消息的内容。

在&#34; play&#34;我还询问是否已经使用if args [1]

给出了链接

在&#34;跳过&#34;第一部分强制调度员结束歌曲并启动队列中的下一首歌。

在&#34;停止&#34;机器人离开语音通道的部分