Бот удаляет все песни из очереди вместо 1, когда песня останавливается

#javascript #node.js #discord #discord.js #bots

Вопрос:

Я пытаюсь создать очередь и заставить своего бота воспроизводить ее до тех пор, пока у бота не останется песен в очереди, но он не удалит 1 песню из очереди (песня, которая была воспроизведена) — очередь полностью очищается! Код:

 player.on(AudioPlayerStatus.Idle, () =gt; {  queue.splice(0, 1);  if(!queue[0]) return;  resource = createAudioResource(join('./music/', `${queue[0].toLowerCase()}.mp3`));  player.play(resource);  });  

Я попробовал регистрировать каждый шаг консоли (кроме if(!queue[0]) return ) и получил это:

 song1,song2,song3 song2,song3 song2,song3 song2,song3 song3 song3 song3 lt;emptygt;  

Что я делаю не так?

Обновление 1: Он удаляет все песни одну за другой, начинает воспроизводить последнюю песню, которую я добавил, и сразу после этого — удаляет последнюю песню из массива

Комментарии:

1. За исключением того факта, что использование Array.shift оптимизирует ваш код, я не вижу ошибок в коде. Но могут быть ошибки при воспроизведении ресурса. Вы можете добавить следующие строки, чтобы отслеживать и регистрировать ошибки при загрузке и оплате ресурса player.on('error', error =gt; { console.error('Error:', error.message, 'with track', error.resource.metadata.title); });

2. @Reflective да, queue.shift() совсем не помогает, и я не получаю ошибок

3. Я знаю, что это не поможет, это просто лучший подход, так как вы переместили значение в переменную. Просто лучше потренируйся. Не очень понятно, как вовремя возникает проблема. Если вы снимете видео или опубликуете временную диаграмму с момента выполнения, может стать более ясно, в чем может быть проблема.