Npm install discord js ffmpeg binaries opusscript ytdl core save ошибки
API discord предоставляет инструмент для создания и использования ботов. Рассмотрим пример создания базового музыкального бота и добавления его на сервер. Бот сможет проигрывать, пропускать и останавливать музыку, а также будет поддерживать функцию очереди воспроизведения.
Установка discord-бота
Создаем новое приложение на портале разработки discord.
Переходим на портал и нажимаем на “new application”.
Затем вводим название приложения и нажимаем на кнопку “create”.
Затем переходим на вкладку бот и нажимаем на “add bot”.
Бот создан! Теперь можно перейти к добавлению его на сервер.
Добавление бота на сервер
Добавляем созданный бот с помощью генератора OAuth2 URL.
Для этого переходим на страницу OAuth2 и выбираем бота в панели scope.
Теперь копируем сгенерированный URL и вставляем его в браузер.
Затем выбираем сервер, на который хотим добавить URL и нажимаем на кнопку “authorize”.
Создание проекта
Переходим к созданию проекта с использованием терминала.
Для начала создаем директорию и переходим в нее, используя две следующие команды:
mkdir musicbot && cd musicbot
Затем создаем модули проекта с помощью команды npm init. После введения команды будут заданы несколько вопросов. Ответьте на них и продолжайте.
Создаем два файла, в которых мы будем работать.
touch index.js && touch config.json
Теперь откройте проект в текстовом редакторе. Я использую VS Code и открываю его с помощью следующей команды:
Основы Discord js
Прежде чем начать, нужно установить несколько зависимостей.
npm install discord.js ffmpeg-binaries opusscript ytdl-core --save
После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.
Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.
Это все, что нужно выполнить в файле config.json. Приступим к написанию кода javascript.
Сначала импортируем все зависимости.
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
После этого проверяем, какую команду нужно запустить. Это можно выполнить с помощью простых операторов if.
Узнав, какие команды нужно запустить, можно перейти к их реализации.
Добавление песен
Начнем с добавления команды play. Для этого понадобится песня и гильдия (гильдия представляет собой изолированную коллекцию пользователей и каналов и часто упоминается в качестве сервера). Также понадобится ранее установленная библиотека ytdl.
Для начала создаем map с названием очереди, в котором будут сохранены все песни, введенные в чат.
const queue = new Map();
Переходим к получению информации о песне и сохранении ее в объект song. Для этого используем библиотеку ytdl, которая получает информацию о песне по ссылке на youtube.
const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;
Необходимая информация сохраняется в объект song.
В этом фрагменте мы проверяем, является ли serverQueue пустым. Если нет добавляем туда песню.
Если serverQueue имеет значение null, создаем контракт.
В этом блоке кода создается контракт, а песня добавляется в массив songs.
Затем присоединяемся к голосовому чату пользователя и вызываем функцию play() , которую затем реализуем.
Проигрывание песен
Поскольку теперь можно добавлять песни в очередь и создавать контракт при его отсутствии, можно приступить к реализации функцию проигрывания.
Сначала создаем функцию play, которая обладает двумя параметрами (гильдия и песня, которую нужно проиграть) и проверяет, является ли объект song пустым. Если да, то покидаем голосовой канал и удаляем очередь.
В этом фрагменте мы создаем stream и передаем его URL-адресу песни. Также добавляем два listeners, которые обрабатывают события end и error.
Примечание: это рекурсивная функция, которая повторяет вызов самой себя. Рекурсия используется для проигрывания следующей песни, когда другая заканчивается.
Теперь можно проиграть песню, введя !play URL в чат.
Пропуск песен
Переходим к реализации функции пропуска. Для этого нужно выполнить завершения диспетчера, созданного в функции play() для начала проигрывания следующей песни.
В этом фрагменте мы проверяем, находится ли пользователь, который ввел команду, в голосовом канале, а также есть ли песни для пропуска.
Остановка песен
Функция stop() похожа на skip() , за исключением того, что массив songs очищается, из-за чего бот удаляет очередь и покидает голосовой чат.
API discord предоставляет инструмент для создания и использования ботов. Рассмотрим пример создания базового музыкального бота и добавления его на сервер. Бот сможет проигрывать, пропускать и останавливать музыку, а также будет поддерживать функцию очереди воспроизведения.
Установка discord-бота
Создаем новое приложение на портале разработки discord.
Переходим на портал и нажимаем на “new application”.
Затем вводим название приложения и нажимаем на кнопку “create”.
Затем переходим на вкладку бот и нажимаем на “add bot”.
Бот создан! Теперь можно перейти к добавлению его на сервер.
Добавление бота на сервер
Добавляем созданный бот с помощью генератора OAuth2 URL.
Для этого переходим на страницу OAuth2 и выбираем бота в панели scope.
Теперь копируем сгенерированный URL и вставляем его в браузер.
Затем выбираем сервер, на который хотим добавить URL и нажимаем на кнопку “authorize”.
Создание проекта
Переходим к созданию проекта с использованием терминала.
Для начала создаем директорию и переходим в нее, используя две следующие команды:
Затем создаем модули проекта с помощью команды npm init. После введения команды будут заданы несколько вопросов. Ответьте на них и продолжайте.
Создаем два файла, в которых мы будем работать.
Теперь откройте проект в текстовом редакторе. Я использую VS Code и открываю его с помощью следующей команды:
Основы Discord js
Прежде чем начать, нужно установить несколько зависимостей.
После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.
Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.
Это все, что нужно выполнить в файле config.json. Приступим к написанию кода javascript.
Сначала импортируем все зависимости.
Затем с помощью токена создаем клиента и логин.
Добавляем несколько базовых listeners, выполняющих метод console.log при запуске.
Теперь можно начать работу с ботом с помощью команды node. Бот должен быть online в discord и в консоль выведется“Ready!”
После этого проверяем, какую команду нужно запустить. Это можно выполнить с помощью простых операторов if.
Узнав, какие команды нужно запустить, можно перейти к их реализации.
Добавление песен
Начнем с добавления команды play. Для этого понадобится песня и гильдия (гильдия представляет собой изолированную коллекцию пользователей и каналов и часто упоминается в качестве сервера). Также понадобится ранее установленная библиотека ytdl.
Для начала создаем map с названием очереди, в котором будут сохранены все песни, введенные в чат.
Переходим к получению информации о песне и сохранении ее в объект song. Для этого используем библиотеку ytdl, которая получает информацию о песне по ссылке на youtube.
Необходимая информация сохраняется в объект song.
В этом фрагменте мы проверяем, является ли serverQueue пустым. Если нет добавляем туда песню.
Если serverQueue имеет значение null, создаем контракт.
В этом блоке кода создается контракт, а песня добавляется в массив songs.
Затем присоединяемся к голосовому чату пользователя и вызываем функцию play(), которую затем реализуем.
Проигрывание песен
Поскольку теперь можно добавлять песни в очередь и создавать контракт при его отсутствии, можно приступить к реализации функцию проигрывания.
Сначала создаем функцию play, которая обладает двумя параметрами (гильдия и песня, которую нужно проиграть) и проверяет, является ли объект song пустым. Если да, то покидаем голосовой канал и удаляем очередь.
Затем начинаем проигрывать песню с помощью функции playStream() и URL-адреса песни.
В этом фрагменте мы создаем stream и передаем его URL-адресу песни. Также добавляем два listeners, которые обрабатывают события end и error.
Примечание: это рекурсивная функция, которая повторяет вызов самой себя. Рекурсия используется для проигрывания следующей песни, когда другая заканчивается.
Теперь можно проиграть песню, введя !play URL в чат.
Пропуск песен
Переходим к реализации функции пропуска. Для этого нужно выполнить завершения диспетчера, созданного в функции play() для начала проигрывания следующей песни.
В этом фрагменте мы проверяем, находится ли пользователь, который ввел команду, в голосовом канале, а также есть ли песни для пропуска.
Остановка песен
Функция stop() похожа на skip(), за исключением того, что массив songs очищается, из-за чего бот удаляет очередь и покидает голосовой чат.
Исходный код для index.js:
Полный исходный код для музыкального бота:
Заключение
У вас все получилось! Надеюсь, эта статья помогла вам разобраться в API Discord и создании с его помощью простого бота.
В этой статье речь пойдет о ручном создании бота для воспроизведения музыки в Discord. Вы можете как просто скопировать весь представленный код, так и редактировать его под себя, если владеете навыками JavaScript. Созданный нами бот был проверен, но на некоторых этапах пользователь все же может столкнуться с разными проблемами, поэтому советуем внимательно читать не только нашу инструкцию, но и появляющиеся на экране коды ошибок, если такие будут.
Если же окажется, что данный материал слишком сложный для вас или не подходит по другим причинам, используйте готовые бесплатные боты для воспроизведения музыки. В статье по ссылке ниже вы найдете детальную информацию об этом и сможете реализовать поставленную задачу.
Шаг 1: Создание нового приложения
Теперь у вас есть приложение бота с уникальным токеном, а бот уже добавлен на сервер, но пока находится в офлайн-режиме. Для начала его работы придется выполнить еще несколько действий уже на локальном компьютере, поскольку пока мы не выгружаем бота на хостинг для автономного функционирования.
Шаг 2: Подготовительные действия
К подготовительным действиям относится создание требуемых каталогов и файлов, установка инструментов и зависимостей для них. В этом нет ничего сложного, нужно лишь по очереди произвести каждое действие, внимательно следя за тем, чтобы ни на одном этапе не появились ошибки.
-
Создайте папку с названием бота. Вы можете выбрать любое место, но лучше всего для этого подойдет домашняя папка пользователя.
В итоге в домашней папке пользователя должны появиться файлы, связанные с компонентом Node.js и добавленным после модулем. Перезагрузите компьютер, чтобы при дальнейшем запуске бота не возникло трудностей, затем переходите к следующему шагу.
Шаг 3: Редактирование файла конфигурации бота
Вы уже знаете, что в созданном файле конфигурации бота будет всего пара строк кода, отвечающих за используемый префикс (символ перед вводом команды на сервере) и уникальный токен, определяющий приложение в API. Для выполнения всех дальнейших действий рекомендуем скачать программу с поддержкой синтаксиса JS или любой продвинутый текстовый редактор, если этого не было сделано ранее. В статье по ссылке ниже вы сможете ознакомиться с доступными подходящими решениями.
Как только ПО установлено на компьютер и готово к работе, можно смело приступать к редактированию конфигурационного файла, вводя туда пользовательские данные.
-
Запустите файл config.js через текстовый редактор или среду разработки, вставьте туда представленный далее код.
На этом действия с конфигурационным файлом завершены, больше там не нужно прописывать ни одной строчки кода. Закройте его, не забыв сохранить внесенные правки, и приступайте к дальнейшему написанию бота для воспроизведения музыки.
Шаг 4: Пробный запуск бота
Сначала нам нужно убедиться в том, что бот вообще запускается на сервере и переходит в онлайн-режим, для этого понадобится записать его основную часть кода в index.js , а затем уже использовать Node.js для запуска.
-
Через среду разработки или выбранный текстовый редактор откройте упомянутый файл для редактирования.
Шаг 5: Написание основного кода музыкального бота
client.on('message', async message =>
if (message.author.bot) return;
Это позволяет избежать конфликтов при одновременном использовании нескольких ботов на сервере. Далее понадобится проверить префикс, чтобы бот принял команду или вернул ее.
if (!message.content.startsWith(prefix)) return;
Проверка запускаемых команд осуществляется при помощи простых операторов if, а конструкция в нашем случае выглядит следующим образом:
const serverQueue = queue.get(message.guild.id);
Теперь бот научился принимать команды, но пока не может взаимодействовать с ними, поскольку действия не указаны. В первую добавим команду play , которая отвечает за воспроизведение. Для нее необходим массив, имеющий следующий вид:
const queue = new Map();
Он отправляет все команды в очередь и заставляет песни играть только тогда, когда предыдущая заканчивается. Далее понадобится создать функцию, которая будет проверять, подключился ли пользователь к голосовому каналу и есть ли у бота соответствующие разрешения.
const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;
Следующий блок кода позволит понять, есть ли песни в очереди или можно сразу же подключиться к голосовому каналу и начать воспроизведение.
Далее идет немного сложная для начинающих программистов схема контракта, которая добавляет песню в массив и делает то же самое при каждом вводе !play, проверяя очередь и выбирая правильное действие. Обратите внимание на представленные комментарии, которые и позволяют разобраться со всеми тонкостями.
С очередью все понятно, но пока еще песни не воспроизводятся, поскольку отсутствует назначение для функции play . Для этого в код необходимо добавить структуру
function play(guild, song) const serverQueue = queue.get(guild.id);
if (!song) serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
>
>
Проигрывание же начинается при помощи функции playStream() и указанной ссылки на трек.
const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
.on('end', () => console.log('Музыка кончилась!');
// Удаляет законченную песню из очереди
serverQueue.songs.shift();
// Снова вызывает функцию воспроизведения со следующей песней
play(guild, serverQueue.songs[0]);
>)
.on('error', error => console.error(error);
>);
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
Если вы хотите добавить функцию пропуска песен, например, когда решили проиграть плейлист, сначала позаботьтесь о соответствующей команде, а затем добавьте такой фрагмент:
Примерно по той же схеме работает и функция остановки, но блок с кодом обретает немного другой вид:
const Discord = require('discord.js');
const prefix,
token,
> = require('./config.json');
const ytdl = require('ytdl-core');
const client = new Discord.Client();
const queue = new Map();
client.on('message', async message => if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
const serverQueue = queue.get(message.guild.id);
async function execute(message, serverQueue) const args = message.content.split(' ');
const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;
function play(guild, song) const serverQueue = queue.get(guild.id);
if (!song) serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
>
const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
.on('end', () => console.log('Music ended!');
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
>)
.on('error', error => console.error(error);
>);
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
>
По завершении лучше перезапустить бота, после чего можно перейти к своему серверу, подключиться к голосовому каналу и ввести любую команду взаимодействия, проверив, как на это отреагирует бот.
Если приведенный выше вариант бота вам не подходит, можно найти исходные коды на том же GitHub и скопировать их на свой компьютер. Принцип регистрации и запуска остается тот же, поэтому по необходимости просто редактируйте готовый код, а затем приступайте к тестированию бота.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.
Как создать Дискорд-бота на основе discord.js
На практике API Discord представляет собой удобный инструмент, позволяющий создать, а впоследствии использовать бота. С его помощью легко разработать помощника для решения разных задач, а далее задать необходимый набор команд. Для примера рассмотрим общий алгоритм создания бота для музыки. При правильном подходе он сможет проигрывать, пропускать и останавливать музыкальные файлы. Кроме того, в его функции будет входить поддержка очереди на проигрывание мелодии.
Выполните следующие шаги:
- Введите название будущего бота Дискорд, к примеру, Music Bot.
- Перейдите на вкладку Bot, а после жмите на кнопку Add Bot.
Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:
- Переместитесь в раздел OAuth2 и выберите Bot в панели Scopes.
- Укажите необходимые разрешения для проигрывания музыки и чтения.
- Копируйте созданный URL и вставьте его в веб-проводник.
- Выберите сервер, куда нужно добавить URL.
- Жмите на кнопку авторизации (Authorize).
На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:
- Создайте модули проекта с применением nmp init.
- Ответьте на несколько вопросов, которые необходимы, чтобы создать бота в Дискорд.
- Сделайте два файла, где будет вестись работа — touch index.js && touch config.json.
- Откройте проект в редакторе, к примеру, с помощью VS Code с применением приказа code.
- Установите группу зависимостей, необходимых для дальнейшей работы — npm install discord.js ffmpeg-binaries opusscript ytdl-core –save.
- Продолжите создание файла на config.json. На этом этапе сохраните префикс и токен для бота.
- Войдите на портал создания Дискорд и копируйте токен из раздела Bot (жмите на кнопку Copy).
Теперь нужно создать код javascript. Для этого копируйте следующие зависимости:
const Discord = require(‘discord.js’);
const ytdl = require(‘ytdl-core’);
После этого нужно создать с применением токена клиент и логин.
const client = new Discord.Client();
Далее добавьте несколько listeners, которые выполняют console.log при пуске.
После этого начните работать с ботом Дискорд с применением node. Важно, чтобы вновь созданный Discord-бот был онлайн. В консоли появится Ready!. Команда — node index.js.
Задание команд для бота Дискорд
Теперь остается задать необходимые команды.
Чтобы Дискорд-бот мог читать, напишите функцию.
client.on(‘message’, async message =>
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
Далее проверьте команду, которую нужно активировать. Используйте следующие команды.
> else if (message.content.startsWith(`$skip`))
> else if (message.content.startsWith(`$stop`))
После получения списка команд, которые можно запустить, переходите к их созданию.
Добавление песен
Здесь нужна гильдия, песня и библиотека ytdl (должна быть установлена заранее). Сделайте map с названием очереди, где будут храниться песни.
const queue = new Map();
async function execute(message, serverQueue)
const args = message.content.split(‘ ‘);
const voiceChannel = message.member.voiceChannel;
if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’))
Перейдите к получению данных о песне и сохраните ее в song. Для этого потребуется ytdl-библиотека, получающая данные по ютуб-ссылке.
const songInfo = await ytdl.getInfo(args[1]);
В раздел serverQueue, если он пустой, добавьте трек. В случае, когда serverQueue имеет параметр null, сделайте контракт.
// Creating the contract for our queue
// Setting the queue using our contract
// Pushing the song to our songs array
// Here we try to join the voicechat and save our connection into our object.
var connection = await voiceChannel.join();
// Calling the play function to start a song
// Printing the error message if the bot fails to join the voicechat
Проигрывание трека
Теперь нужно создать опцию play для бота Дискорд с параметрами гильдия и песня, а также проверкой объекта song.
function play(guild, song)
const serverQueue = queue.get(guild.id);
Если да, нужно уйти с голосового канала и удалить очередь.
Далее трек играет с применением URL и playStream.
const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
// Deletes the finished song from the queue
// Calls the play function again with the next song
Здесь создается stream, а его URL передается адресу песни.
Пропуск трека
Здесь оформите завершение диспетчера, который был сделан в опции play. Такое действие необходимо, чтобы начал играть очередной трек.
function skip(message, serverQueue)
Здесь проверяется, есть ли пользователь в голосовом канале, и имеется ли трек для пропуска.
Остановка
Опция stop подразумевает очистку массива song, удаления очереди и выхода из чата.
Всем привет! Сегодня поговорим про cоздание музыкального бота с помощью Discord.js в популярной бесплатной программе общения Discord. Итак, поехали!
API discord предоставляет инструмент для создания и использования ботов. Рассмотрим пример создания базового музыкального бота и добавления его на сервер. Бот сможет проигрывать, пропускать и останавливать музыку, а также будет поддерживать функцию очереди воспроизведения.
Установка discord-бота
Создаем новое приложение на портале разработки discord.
Переходим на портал и нажимаем на “new application”.
Затем вводим название приложения и нажимаем на кнопку “create”.
Затем переходим на вкладку бот и нажимаем на “add bot”.
Бот создан! Теперь можно перейти к добавлению его на сервер.
Добавление бота на сервер
Добавляем созданный бот с помощью генератора OAuth2 URL.
Для этого переходим на страницу OAuth2 и выбираем бота в панели scope.
Теперь копируем сгенерированный URL и вставляем его в браузер.
Затем выбираем сервер, на который хотим добавить URL и нажимаем на кнопку “authorize”.
Создание проекта
Переходим к созданию проекта с использованием терминала.
Для начала создаем директорию и переходим в нее, используя две следующие команды:
mkdir musicbot && cd musicbot
Затем создаем модули проекта с помощью команды npm init. После введения команды будут заданы несколько вопросов. Ответьте на них и продолжайте.
Создаем два файла, в которых мы будем работать.
touch index.js && touch config.json
Теперь откройте проект в текстовом редакторе. Я использую VS Code и открываю его с помощью следующей команды:
Основы Discord js
Прежде чем начать, нужно установить несколько зависимостей.
npm install discord.js ffmpeg-binaries opusscript ytdl-core --save
После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.
"prefix": "!",
"token": "your-toke"
>
Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.
Сначала импортируем все зависимости.
const Discord = require('discord.js');
const prefix,
token,
> = require('./config.json');
const ytdl = require('ytdl-core');
Затем с помощью токена создаем клиента и логин.
const client = new Discord.Client();
client.login(token);
Добавляем несколько базовых listeners, выполняющих метод console.log при запуске.
client.once('ready', () => console.log('Ready!');
>);
client.once('reconnecting', () => console.log('Reconnecting!');
>);
client.once('disconnect', () => console.log('Disconnect!');
>);
Теперь можно начать работу с ботом с помощью команды node. Бот должен быть online в discord и в консоль выведется“Ready!”
Чтение извещений
Для чтения извещений надо составить только 1 несложную функцию.
client.on('message', async message =>
>
Делаем listener для действия message, получаем известие и предохраняем его в объект message.
Испытываем: в случае если известие пришло от бота, то игнорируем его.
Вслед за тем испытываем, наступает ли известие с раньше конкретного префикса. Известие воротится, в случае если нет.
if (!message.content.startsWith(prefix)) return;
Впоследствии сего испытываем, какую команду надо запустить. Это возможно исполнить с поддержкой несложных операторов if.
const serverQueue = queue.get(message.guild.id);
Спросив, какие команды надо запустить, возможно перебежать к их реализации.
Добавление песен
Начнем с прибавления команды play. Для сего потребуется песня и гильдия (гильдия дает собой отделенную коллекцию юзеров и каналов и нередко упоминается в качестве сервера). Еще потребуется раньше поставленная книгохранилище ytdl.
Для начала делаем map с заглавием очереди, в котором станут сохранены все песни, введенные в чат.
const queue = new Map();
Вслед за тем делаем функцию async под заглавием execute и испытываем, располагается ли юзер в голосовом чате, и есть ли у бота отвечающее позволение. В случае если нет, то пишем известие об ошибке и возвращаем.
const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;
Важная информация сберегается в объект song.
Впоследствии хранения инфы надо сделать договор для прибавления в очередь. Для сего испытываем, определен ли serverQueue, собственно что значит, собственно что музыка уже играет. В случае если да, то добавляем песню в имеющий место быть serverQueue и отправляем известие об успешном выполнении. В случае если нет, то делаем его, подключаемся к голосовому каналу и начинаем проигрывать музыку.
В случае если serverQueue содержит смысл null, делаем договор.
Вслед за тем присоединяемся к голосовому чату юзера и вызываем функцию play(), которую вслед за тем продадим.
Проигрывание песен
Потому что ныне возможно добавлять песни в очередь и делать договор при его недоступности, возможно приступить к реализации функцию проигрывания.
В начале делаем функцию play, которая владеет 2-мя параметрами (гильдия и песня, которую надо проиграть) и инспектирует, считается ли объект song пустующим. В случае если да, то оставляем голосовой канал и удаляем очередь.
function play(guild, song) const serverQueue = queue.get(guild.id);
if (!song) serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
>
>
Вслед за тем начинаем проигрывать песню с поддержкой функции playStream() и URL-адреса песни.
const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
.on('end', () => console.log('Music ended!');
// Deletes the finished song from the queue
serverQueue.songs.shift();
// Calls the play function again with the next song
play(guild, serverQueue.songs[0]);
>)
.on('error', error => console.error(error);
>);
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
В данном куске мы делаем stream и передаем его URL-адресу песни. Еще добавляем 2 listeners, которые обрабатывают действия end и error.
Ныне возможно проиграть песню, введя !play URL в чат.
Пропуск песен
Перебегаем к реализации функции пропуска. Для сего надо исполнить окончания диспетчера, сделанного в функции play() для начала проигрывания надлежащей песни.
Остановка песен
Функция stop() смахивает на skip(), за исключением такого, собственно что массив songs очищается, по причине чего бот удаляет очередь и оставляет голосовой чат.
Читайте также: