我正在制作一个播放音乐的Discord机器人,我已经让它工作了但它只能播放一首歌,当你将机器人链接到另一首歌而不是等待第一首歌结束时,它会取消第一首歌并直接进入第二首歌。我正在使用discord.js,我已将我的代码放入GitHub。这是我的代码:`
int[] numbers = new int[scan.nextInt()];
for( int i = 0; i < numbers.length; i++)
numbers[i] = scan.nextInt();
我还希望获得投票跳过功能的帮助,人们可以投票跳过正在播放的歌曲并转到下一首歌。
答案 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;机器人离开语音通道的部分