Фрилансеры предложат решение вашей задачи уже через несколько минут!
Публикация заказа не займет много времени.
Антон П.
22 года, Россия
4 года в сервисе
Был онлайн 4 месяца назад

Разрабатываю под интеграцию со своим сайтом собственного Discord бота. 
Стояла задача настроить функции для проигрывания аудиодорожек видео и прямых трансляций с Youtube в голосовой чат на сервере.
За основу взял бота по ссылке: https://github.com/bdistin/OhGodMusicBot/blob/master/server.js
Финальный (мой) код: https://gist.github.com/idaspin/bf452ee8d3ec1c50256d6dae3a5c516b
Проблема: я не могу разобраться почему даёт сбои диспатчер? Как он, аудио поток и голосовой канал вообще работают? На протяжении долгово времени пока я пытался наладить работу, появлялись друг за другом разные проблемы: и диспатчер отказывал работать, и ytdl отказывал проигрывать аудио...
Основные задачи (порядок работы бота):
1. При запуске Бота, получаем список url со стримами на Youtube (Каналы Радио). Этот список формируется в radio_channels с ключами 'tags' - ключи по которым можно найти тот или иной стрим, и 'url' - с ссылкой на youtube трансляцию.  Это уже реализовано.
2. После получения Каналов, Бот подключается к голосовому каналу "Радио 24/7" (451433414516801557).
3. Команда "Добавить" записывает в очередь трек. Если очередь пуста и радио не играет, воспроизводится только что добавленный трек.
4. По завершению одного трека Бот автоматически запускает воспроизведение следующего по очереди. Если же она пуста, Бот не отключается от голосового канала, но остается в ожидании добавления нового видео в очередь.
5. Раз в 60 минут производится проверка на наличие человек в голосовом канале. Если таковых нет, воспроизведение радио приостанавливается. Текущий трек прерывается, а оставшаяся очередь сохраняется до повторного "запуска" радио или перезапуска Бота. Сам таймер, который с переодичностью в час срабатывает, также реализован.
6. Команда "Радио Канал <Ключ канала>" добавляет в очередь URL из первого элемента массива из переменной radio_channels и сразу запускает его проигрывание.