#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. Я знаю, что это не поможет, это просто лучший подход, так как вы переместили значение в переменную. Просто лучше потренируйся. Не очень понятно, как вовремя возникает проблема. Если вы снимете видео или опубликуете временную диаграмму с момента выполнения, может стать более ясно, в чем может быть проблема.