Javascript 如何修复Discord.JS中的循环命令

Javascript 如何修复Discord.JS中的循环命令,javascript,discord.js,Javascript,Discord.js,我在我的Discord机器人上有一个循环命令,你可以在语音频道中重复歌曲。虽然当我运行该命令时,它会显示一条消息,表示它将循环当前歌曲: 但是,当歌曲结束时(它应该再次重复),机器人会断开与语音频道的连接。它使用YTDL内核。有没有办法解决这个问题? Repeat.JS let{RichEmbed}=require('discord.js')) const config=require(“../../config.json”) exports.run=async(客户端、消息、参数)=>{ c

我在我的Discord机器人上有一个循环命令,你可以在语音频道中重复歌曲。虽然当我运行该命令时,它会显示一条消息,表示它将循环当前歌曲:

但是,当歌曲结束时(它应该再次重复),机器人会断开与语音频道的连接。它使用YTDL内核。有没有办法解决这个问题? Repeat.JS

let{RichEmbed}=require('discord.js'))
const config=require(“../../config.json”)
exports.run=async(客户端、消息、参数)=>{
const serverQueue=client.queue.get(msg.guild.id);
如果(!msg.member.voiceChannel)返回msg.channel.send('您不在语音频道!');
如果(!serverQueue)返回msg.channel.send('现在不播放任何内容');
if(serverQueue.voiceChannel.id!==msg.member.voiceChannel.id)返回msg.channel.send(`您必须在**${serverQueue.voiceChannel.name}**中才能循环队列');
serverQueue.loop=!serverQueue.loop;
client.queue.set(msg.guild.id,serverQueue);

如果(serverQueue.loop)返回msg.channel.send('**),尽管您正在设置队列的循环选项,但我看不到您在其他任何地方使用它。使队列重复的一个简单解决方案是再次将结束的歌曲添加到队列的末尾。例如

if(serverQueue.loop==true)serverQueue.songs.push(serverQueue.songs.shift());
else serverQueue.songs.shift();
播放(帮会、服务器队列、歌曲[0]);

上面的代码从数组的开头删除元素,如果队列应该循环,则将其添加到结尾。这样,它将按顺序重复歌曲。如果队列不应该循环,则只删除第一首歌曲,就这样。

介意在实际播放队列的位置添加代码吗?当然,我会编辑上面的帖子让他们检查上面的代码谢谢。我已经用你的建议修复了我的Repeat命令!它应该如何工作