Как сделать бота музыки в дискорде
Перейти к содержимому

Как сделать бота музыки в дискорде

  • автор:

Как в Discord создать бота для проигрывания музыки

Discord позволяет приглашать на сервера дополнительных автоматизированных помощников. Это различные боты, которые отвечают за определенные направления деятельности. Вы можете найти на специализированный ресурсах готовые решения, и пригласить их к себе на канал. Но есть и другой вариант, позволяющий использовать ресурс мессенджера в полной мере. Расскажем, как сделать бота в Дискорде Онлайн для музыки, который сможет проигрывать, пропускать и останавливать музыку, и будет поддерживать иные функции.

как сделать (создать) бота в дискорде для музык

Как сделать бота в Discord для музыки, и с чего начать

Первое, что вам потребуется – это создание нового приложения. Каждый новый бот обязательно регистрируется на официальном ресурсе разработчиков мессенджера. Благодаря этому вы получите доступ ко всем настройкам при его создании и наделении его правами. Первые шаги будут следующими:

  1. Перейти на официальный сайт по ссылке https://discord.com/developer/application, и авторизуйтесь.
  2. Нажмите на кнопку «New Application» для создания нового приложения.
  3. Придумайте имя вашему приложению (боту). Придется подобрать такое, чтобы оно оказалось уникальным.
  4. В правом верхнем углу нажмите на горизонтальные полоски для вызова меню, и нажмите пункт «Bot».
  5. Нажмите на кнопку «Add Bot», и подтвердите действия кнопкой в окошке справа.
  6. Из меню справа перейдите в пункт с названием «OAuth2».
  7. Выберите блок «Scopes», поставьте маркер рядом с «bot».
  8. В блоке «Voice Permission» проставьте маркеры на всех пунктах, чтобы присоединить будущего музыкального бота к голосовым каналам.
  9. В блоке «Text Permission». Также выставьте разрешения метками напротив нужных пунктов.
  10. Для первой авторизации бота на сервере скопируйте ссылку, которую вы увидите на экране, и перейдите по ней через новую вкладку браузера.
  11. Выберите тестовый сервер, где будете проверять своего бота.
  12. Пройдите капчу, чтобы успешно авторизоваться.

как создать бота в дискорде для музык

Вы создали приложение будущего бота, который имеет уникальный токен. При этом ваш музыкальный помощник уже на сервере, но пока пребывает в оффлайн режиме.

Обратите внимание! Созданный бот сначала неактивен и не наделен правами, однако он уже загружен на сервер и имеет уникальный токен.

как сделать бота в дискорде для музык

Зачем при создании музыкального бота нужен токен

Следующие действия связаны с созданием каталогов и файлов, установки инструментов и зависимостей для них. Если выполнять действия поочередно, то многие из вас справятся с этой задачей. Порядок действий следующий:

  1. На ПК создайте папку с именем бота.
  2. Создайте в ней 2 файла: «config.json», в нем запишите общую конфигурацию (префикс и токен), и «index.js», в ней прописывается весь программный код, и команды с задачами инструмента.
  3. Чтобы робот мог работать потребуется инструмент «Node.js», он применяется для запуска скриптов на локальных ПК.
  4. Установите модуль для работы с API Discord.

как сделать (создать) бота в discord для музык

После выполнения всех действий в вашей папке робота должны появиться новые файлы, которые связаны с компонентами Node.js и добавленным модулем. Выполните перезагрузку ПК, и переходите далее. Теперь вам снова потребуется токен для редактирования файла конфигурации. Для этого выполните следующее:

  1. Запустите файл скрипта js.
  2. Перейдите на вкладку страницы разработчика, где находится ваш бот, и скопируйте уникальный токен.
  3. Вместо надписи, которую вы видите в строке конфигуратора, вставьте его, сохранив имеющиеся кавычки.
  4. Сохраните изменения, и закройте файл.

Исходные коды для работы вы сможете отыскать на GitHub, и скопировать их на свой ПК, Принцип по регистрации и запуску будет единым, так что просто редактируйте имеющийся код, и переходите к тестированию музыкального бота.

Частые вопросы:

  • Как добавить музыкального бота на сервер Дискорд Онлайн
  • Как сделать бота, выдающего роли в Discord
  • Как в Discord включить трансляцию музыки из ВКонтакте
  • Как сделать трансляцию музыки в Discord

Создание музыкального бота в Discord

В этой статье речь пойдет о ручном создании бота для воспроизведения музыки в Discord. Вы можете как просто скопировать весь представленный код, так и редактировать его под себя, если владеете навыками JavaScript. Созданный нами бот был проверен, но на некоторых этапах пользователь все же может столкнуться с разными проблемами, поэтому советуем внимательно читать не только нашу инструкцию, но и появляющиеся на экране коды ошибок, если такие будут.

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

Шаг 1: Создание нового приложения

Каждый бот для Дискорда должен быть зарегистрирован на официальном портале для разработчиков. Так вы получаете доступ ко всем необходимым настройкам, связанным с разрешениями и общим поведением бота, сможете скопировать ссылку на его авторизацию в личном сервере и использовать уникальный токен, который нужен для дальнейшей разработки команд.

    Воспользуйтесь ссылкой выше, чтобы открыть главную страницу портала для разработчиков, выполните вход в личный аккаунт Discord и нажмите на «New Application» для создания нового приложения.

Переход к регистрации нового приложения для создания музыкального бота в Discord

Ввод названия при регистрации нового приложения для создания музыкального бота в Discord

Переход к подключению компонентов нового приложения для создания музыкального бота в Discord

Кнопка подключения компонентов нового приложения для создания музыкального бота в Discord

Подтверждение подключения компонентов к новому приложению для создания музыкального бота в Discord

Переход на страницу настройки приложение для создания музыкального бота в Discord

Выбор типа работы приложения для создания музыкального бота в Discord

Поиск разрешений голосовых каналов при настройке приложения для создания музыкального бота в Discord

Поиск разрешений текстовых каналов при настройке приложения для создания музыкального бота в Discord

Копирование ссылки авторизации инструмента для создания музыкального бота в Discord

Первая авторизация после перехода по ссылке для создания музыкального бота в Discord

Успешная авторизация после перехода по ссылке для создания музыкального бота в Discord

Теперь у вас есть приложение бота с уникальным токеном, а бот уже добавлен на сервер, но пока находится в офлайн-режиме. Для начала его работы придется выполнить еще несколько действий уже на локальном компьютере, поскольку пока мы не выгружаем бота на хостинг для автономного функционирования.

Шаг 2: Подготовительные действия

К подготовительным действиям относится создание требуемых каталогов и файлов, установка инструментов и зависимостей для них. В этом нет ничего сложного, нужно лишь по очереди произвести каждое действие, внимательно следя за тем, чтобы ни на одном этапе не появились ошибки.

    Создайте папку с названием бота. Вы можете выбрать любое место, но лучше всего для этого подойдет домашняя папка пользователя.

Добавление пользовательской папки для создания музыкального бота в Discord

Добавление файлов в пользовательскую папку для создания музыкального бота в Discord

Скачивание компонента для создания музыкального бота в Discord

Запуск и установка компонента для создания музыкального бота в Discord

Запуск Командной строки для создания музыкального бота в Discord

Команда установки дополнительных модулей для создания музыкального бота в Discord

Процесс установки дополнительных модулей для создания музыкального бота в Discord

В итоге в домашней папке пользователя должны появиться файлы, связанные с компонентом Node.js и добавленным после модулем. Перезагрузите компьютер, чтобы при дальнейшем запуске бота не возникло трудностей, затем переходите к следующему шагу.

Шаг 3: Редактирование файла конфигурации бота

Вы уже знаете, что в созданном файле конфигурации бота будет всего пара строк кода, отвечающих за используемый префикс (символ перед вводом команды на сервере) и уникальный токен, определяющий приложение в API. Для выполнения всех дальнейших действий рекомендуем скачать программу с поддержкой синтаксиса JS или любой продвинутый текстовый редактор, если этого не было сделано ранее. В статье по ссылке ниже вы сможете ознакомиться с доступными подходящими решениями.

Как только ПО установлено на компьютер и готово к работе, можно смело приступать к редактированию конфигурационного файла, вводя туда пользовательские данные.

Изменение префикса при редактировании конфигурационного файла для создания музыкального бота в Discord

  1. Запустите файл config.js через текстовый редактор или среду разработки, вставьте туда представленный далее код. «prefix»: «!»,
    «token»: «your-toke»
    >Измените префикс в двойных кавычках на необходимый или оставьте восклицательный знак. Пример команды с использованием этого знака выглядит так: !play .
  2. Перейдите на страницу своего бота на портале разработки, найдите там уникальный токен и скопируйте его.

Копирование уникального токена для создания музыкального бота в Discord

Замена уникального токена в конфигурационном файле для создания музыкального бота в Discord

Использование текстового редактора при редактировании конфигурационного файла для создания музыкального бота в Discord

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

Шаг 4: Пробный запуск бота

Сначала нам нужно убедиться в том, что бот вообще запускается на сервере и переходит в онлайн-режим, для этого понадобится записать его основную часть кода в index.js , а затем уже использовать Node.js для запуска.

    Через среду разработки или выбранный текстовый редактор откройте упомянутый файл для редактирования.

Открытие файла ввода кода для создания музыкального бота в Discord

Код объявления зависимостей для создания музыкального бота в Discord

Добавление клиента и токена для создания музыкального бота в Discord

Команды при подключении в коде для создания музыкального бота в Discord

Сохранение изменений после редактирования кода для создания музыкального бота в Discord

Запуск командной строки для включения бота для создания музыкального бота в Discord

Команда включения бота для создания музыкального бота в Discord

Ввод другой команды включения бота для создания музыкального бота в Discord

Результат успешного запуска для создания музыкального бота в Discord

Проверка бота в режиме онлайн для создания музыкального бота в Discord

Шаг 5: Написание основного кода музыкального бота

Остался самый сложный процесс — написание основного кода для музыкального бота. Есть перечень задач, который он должен выполнять: чтение сообщений и обработка команд, определение названия песни или ее адреса, подключение к голосовому каналу и воспроизведение. Разрешения на все это у бота есть, поэтому нужно лишь указать ему на действия при помощи функций JavaScript, что выполняется в том же файле «index.js».

Редактирование кода для обеспечения нормальной работы музыкального бота в Discord

Добавьте простую функцию для чтения сообщений:

client.on(‘message’, async message => >

Она состоит всего из двух строк, но позволит боту принять пользовательский запрос и корректно обработать. Можно сказать, что это одна из важнейших команд для ботов любых типов. Обязательно добавьте игнорирование сообщений от других ботов, введя

if (message.author.bot) return;

Это позволяет избежать конфликтов при одновременном использовании нескольких ботов на сервере. Далее понадобится проверить префикс, чтобы бот принял команду или вернул ее.

if (!message.content.startsWith(prefix)) return;

Проверка запускаемых команд осуществляется при помощи простых операторов if, а конструкция в нашем случае выглядит следующим образом:

const serverQueue = queue.get(message.guild.id);
if (message.content.startsWith(`$play`)) execute(message, serverQueue);
return;
> else if (message.content.startsWith(`$skip`)) skip(message, serverQueue);
return;
> else if (message.content.startsWith(`$stop`)) stop(message, serverQueue);
return;
> else message.channel.send(‘Вы должны использовать существующую команду!’)
>

Обратите внимание на то, что функция send(») отправляет пользователю сообщение, если вдруг он вводит нерабочую команду. Это сообщение вы можете редактировать, изменяя надпись в кавычках.

Теперь бот научился принимать команды, но пока не может взаимодействовать с ними, поскольку действия не указаны. В первую добавим команду play , которая отвечает за воспроизведение. Для нее необходим массив, имеющий следующий вид:

const queue = new Map();

Он отправляет все команды в очередь и заставляет песни играть только тогда, когда предыдущая заканчивается. Далее понадобится создать функцию, которая будет проверять, подключился ли пользователь к голосовому каналу и есть ли у бота соответствующие разрешения.

async function execute(message, serverQueue) const args = message.content.split(‘ ‘);
const voiceChannel = message.member.voiceChannel;
if (!voiceChannel) return message.channel.send(‘Чтобы слушать музыку, вам нужно быть в голосовом канале!’);
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’)) return message.channel.send(‘Мне нужны разрешения, чтобы присоединиться и говорить на вашем голосовом канале!’);
>
>

Следующее действие — подключение библиотеки ytdl, поскольку этот бот будет считывать название песни по ссылке с YouTube, после чего воспроизводить ее на сервере. Для нее понадобится вставить всего небольшой кусочек кода.

const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;

Следующий блок кода позволит понять, есть ли песни в очереди или можно сразу же подключиться к голосовому каналу и начать воспроизведение.

>else serverQueue.songs.push(song);
console.log(serverQueue.songs);
return message.channel.send(`$ has been added to the queue!`);
>

Далее идет немного сложная для начинающих программистов схема контракта, которая добавляет песню в массив и делает то же самое при каждом вводе !play, проверяя очередь и выбирая правильное действие. Обратите внимание на представленные комментарии, которые и позволяют разобраться со всеми тонкостями.

// Создание контракта для очереди
const queueContruct = textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
>;
// Установка очереди с помощью нашего контракта
queue.set(message.guild.id, queueContruct);
// Вставляем композицию в наш массив песен
queueContruct.songs.push(song);

try // Здесь мы пытаемся присоединиться к голосовому чату и сохранить соединение в объекте
var connection = await voiceChannel.join();
queueContruct.connection = connection;
// Вызов функции воспроизведения для запуска песни
play(message.guild, queueContruct.songs[0]);
> catch (err) // Вывод сообщения об ошибке, если бот не может присоединиться к голосовому чату
console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
>

С очередью все понятно, но пока еще песни не воспроизводятся, поскольку отсутствует назначение для функции 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);

Если вы хотите добавить функцию пропуска песен, например, когда решили проиграть плейлист, сначала позаботьтесь о соответствующей команде, а затем добавьте такой фрагмент:

function skip(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send(‘Вы должны быть в голосовом канале, чтобы остановить музыку!’);
if (!serverQueue) return message.channel.send(‘Нет песни, которую я мог бы пропустить!’);
serverQueue.connection.dispatcher.end();
>

Примерно по той же схеме работает и функция остановки, но блок с кодом обретает немного другой вид:

function stop(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send(‘
Вы должны быть в голосовом канале, чтобы остановить музыку!’);
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
>

Учитывайте, что представленная выше информация подходит исключительно для тех пользователей, кто уже знаком с языком JavaScript или только занимается его изучением и решил создать музыкального бота. Если вы не владеете навыками вообще и указанные блоки с кодом вам вообще ни о чем не говорят, просто вставьте весь исходный код в файл, замените сообщения от бота на русские (они находятся в кавычках) и сохраните изменения. Весь исходный код имеет такой вид:

Внешний вид полного исходного кода для создания музыкального бота в Discord

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.once(‘ready’, () => console.log(‘Ready!’);
>);
client.once(‘reconnecting’, () => console.log(‘Reconnecting!’);
>);
client.once(‘disconnect’, () => console.log(‘Disconnect!’);
>);
client.on(‘message’, async message => if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
const serverQueue = queue.get(message.guild.id);
if (message.content.startsWith(`$play`)) execute(message, serverQueue);
return;
> else if (message.content.startsWith(`$skip`)) skip(message, serverQueue);
return;
> else if (message.content.startsWith(`$stop`)) stop(message, serverQueue);
return;
> else message.channel.send(‘You need to enter a valid command!’)
>
>);
async function execute(message, serverQueue) const args = message.content.split(‘ ‘);
const voiceChannel = message.member.voiceChannel;
if (!voiceChannel) return message.channel.send(‘You need to be in a voice channel to play music!’);
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has(‘CONNECT’) || !permissions.has(‘SPEAK’)) return message.channel.send(‘I need the permissions to join and speak in your voice channel!’);
>
const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;
if (!serverQueue) const queueContruct = textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
>;
queue.set(message.guild.id, queueContruct);
queueContruct.songs.push(song);
try var connection = await voiceChannel.join();
queueContruct.connection = connection;
play(message.guild, queueContruct.songs[0]);
> catch (err) console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
>
> else serverQueue.songs.push(song);
console.log(serverQueue.songs);
return message.channel.send(`$ has been added to the queue!`);
>
>
function skip(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);
if (!serverQueue) return message.channel.send(‘There is no song that I could skip!’);
serverQueue.connection.dispatcher.end();
>
function stop(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
>
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);
>
client.login(token);

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

Команда проверки исходного кода для создания музыкального бота в Discord

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

Поиск готовых решений для создания музыкального бота в Discord

В этой статье мы не затронули выгрузку бота на хостинг, распространение его среди других пользователей, создание аватарки и использование открытых площадок, откуда его и можно авторизовать. Все это — отдельные процессы, которыми стоит заниматься только в том случае, когда вы отточили свой навык создания ботов и готовы распространять проекты в сети.

Виктор Бухтеев Вам помогли мои советы?

Tempo Bot для Discord: установка и использование на сервере

Tempo Bot для Discord: установка и использование на сервере

Tempo Bot – один из самых популярных музыкальных ботов для сервера в Discord. Удобен в использовании, обладает основными функциями управления треками и целыми плейлистами, а также имеет интересные премиум-опции, недоступные в других похожих ботах. В рамках этого материала я покажу, как осуществляется добавление данного бота на сервер, его активация и применение команд для воспроизведения и управления треками.

Возможности Tempo Bot

Сначала несколько слов о том, что вообще может Tempo Bot. По умолчанию это стандартный музыкальный бот на сервер, который может воспроизводить треки по запросу пользователя в голосовом канале. Поддерживаются инструменты для создания полноценных плейлистов с последовательным проигрыванием, а также есть кнопки для управления треками, чтобы их можно было пропустить или даже перейти к просмотру текста песни.

На этом бесплатные возможности Tempo Bot заканчиваются. Что касается премиум-версии, которая покупается через официальный сайт, то она открывает дополнительные команды для добавления эффектов к трекам. Вы вводите одну или несколько таких команд, чтобы ускорить трек, наложить на него любой эффект или даже включить режим караоке, если текст будет доступен. Все это делает Tempo Bot самым функциональным ботом для музыки в Discord из всех существующих на текущий момент.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

Установка Tempo Bot на сервер

Если ранее вы уже сталкивались с установкой ботов или понимаете, как осуществляется данный процесс, можете выполнить добавление Tempo Bot самостоятельно и не следовать инструкции из этого раздела статьи. Однако некоторым пользователям она будет полезной, особенно тем, кто только что создал сервер и еще не до конца разобрался в управлении им.

  1. В первую очередь перейдите на официальный сайт Tempo Bot, где нажмите кнопку «‎Add to Discord». Переход к установке Tempo Bot для Discord через официальный сайт
  2. ‎Произойдет переход на страницу авторизации бота для сервера в Discord. Соответственно, для этого в браузере у вас должен быть выполнен вход со своего аккаунта, где вы являетесь администратором или создателем сервера. Выберите этот сервер из списка и переходите к следующему шагу. Выбор сервера для установки Tempo Bot для Discord
  3. Ознакомьтесь с тем, какие права вы предоставляете боту при добавлении его на сервер. Если вас все устраивает, щелкните по «‎Авторизовать». Проверка ролей для Tempo Bot перед его установкой на сервер
  4. Вы будете уведомлены о том, что бот теперь добавлен на ваш сервер. Можете закрыть данное окно и перейти непосредственно к программе Дискорд на вашем компьютере. Уведомление об успешной установке Tempo Bot для Discord
  5. Войдите на сервер, куда был добавлен Tempo Bot, и убедитесь в том, что он отображается в списке участников справа. Теперь он может откликаться на ваши команды и воспроизводить музыку. Проверка отображения Tempo Bot для Discord в списке участников сервера

Доступные команды для бота

Tempo Bot поддерживает больше двух десятков самых разных команд управления плейлистами, добавления эффектов и настроек поведения самого бота. Для знакомства с ними можете использовать страницу помощи на официальном сайте или просто в любом текстовом или голосовом канале объявить начало записи команды через / и ознакомиться со всем списком.

Перечень всех команд Tempo Bot для Discord

Далее я выделю несколько основных команд работы с Tempo Bot, которые точно пригодятся для воспроизведения музыки, настройки плейлиста и добавления новых треков.

  • /play – воспроизведение трека по его названию или через прямую ссылку;
  • /pause – остановка воспроизведения;
  • /clear – удаление треков из плейлиста с сохранением воспроизведения текущего;
  • /seek – перемотка текущего трека;
  • /playlist add – добавление трека в плейлист;
  • /effects – открывает перечень доступных эффектов (поддерживается только в премиум-версии бота).

В принципе, все команды для Tempo Bot довольно простые и понятные, поэтому разобраться с ними и запомнить нужные можно довольно быстро. Далее давайте поговорим о том, как использовать данного бота на своем сервере в Discord.

Воспроизведение музыки через Tempo Bot

Поскольку воспроизведение музыки – основная функция Tempo Bot, то и начать стоит с этого. Есть несколько обязательных пошаговых действий, которые нужно выполнить, чтобы начать проигрывание. Перед началом разбора инструкции отмечу, что с недавнего времени бот не поддерживает YouTube, поэтому для вставки прямых ссылок используйте Deezer, Apple Music, Spotify или SoundCloud.

  1. Воспроизводить композиции, что логично, музыкальные боты могут только в голосовых каналах сервера, поэтому подключитесь к одному из таких, затем откройте чат данного канала для управления Tempo Bot. Переход на голосовой сервер для настройки воспроизведения музыки через Tempo Bot в Discord
  2. Для поиска трека по его названию введите команду /play, подтвердите добавление аргумента query и введите название песни. Дождитесь отображения результатов в списке сверху и выберите один из подходящих. Ввод команды воспроизведения музыки через Tempo Bot в Discord
  3. Активируйте команду и дождитесь начала воспроизведения, что должно произойти практически мгновенно. В своем сообщении бот предложит переключать треки между плейлистами, перематывать их, включать повтор или переходить к просмотру текста. Все это осуществляется путем нажатия по одной из реакций. Успешное воспроизведение музыки через Tempo Bot в Discord
  4. Точно так же вы можете воспроизвести трек по его полной ссылке на один из поддерживаемых сайтов. Точно так же понадобится ввести /play с аргументом query и уже вставить свою ссылку. Добавление трека по его прямой ссылке в Tempo Bot в Discord
  5. Если во время добавления композиции уже воспроизводится другая, вы будете уведомлены о том, что трек добавлен в очередь. Можете удалить его оттуда, дождаться проигрывания или нажать по «Play Now»‎ для запуска с пропуском текущей песни. Уведомление о добавлении трека в очередь в Tempo Bot в Discord

Применение других команд в Tempo Bot

Рекомендую ознакомиться и с другими командами, которые могут пригодиться во время воспроизведения музыки и управления плейлистами. Если вы введете сначала просто /play, то в списке команд отобразится весь перечень подходящих вариантов работы с плейлистами и добавлением треков в очередь. Можно воспроизвести музыку из файла, создать новый плейлист, удалить существующий и вывести полный список созданных плейлистов. Кстати, потратив немного времени на формирование нескольких плейлистов с треками, вы можете обеспечить воспроизведение музыки на своем сервере практически 24/7 и только иногда заходить проверять работу бота на специально выделенном для него канале.

Команды управления воспроизведением и плейлистами для Tempo Bot в Discord

При наборе /effects появляется список всех доступных эффектов. Можно добавить дисторшн, увеличить бас, ускорить воспроизведение, поднять тон и нормализовать громкость. Есть и команда для удаления всех наложенных эффектов, которая выглядит как /effects clear. Еще раз упомяну, что работа со всеми этими командами доступна только в том случае, если вы приобрели Tempo Bot Premium.

Команды добавления эффектов в Tempo Bot в Discord

Обязательно обратите внимание на доступные настройки через /settings. С их помощью можно управлять громкостью, указывать максимальное количество песен, которые может поставить один пользователь, выбрать сообщения об анонсах следующих композиций из очереди и управлять ролями, которым будет доступна работа с ботом. Текущие настройки выводятся через команду /setting view, чтобы вы могли быстро оценить поведение Tempo Bot на текущий момент.

Команды настроек Tempo Bot в Discord

Подводя итоги, отмечу, что Tempo Bot показался мне довольно удобным и продвинутым ботом для музыки. Только с ним не возникло никаких проблем с настройками, их даже не пришлось менять, чтобы сразу воспроизвести треки. Минусами же этого бота можно считать наличие некоторых платных функций и отсутствие поддержки YouTube.

Читайте также в Комьюнити:

  • Что делать, если Discord глючит во время игры
  • В Discord добавлен чат-бот на базе OpenAI. Включение и примеры использования
  • Как посмотреть упоминания в Discord

Создание музыкального бота с помощью Discord.js

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 и открываю его с помощью следующей команды:

code.

Основы Discord js

Прежде чем начать, нужно установить несколько зависимостей.

npm install discord.js ffmpeg-binaries opusscript ytdl-core --save

После завершения установки продолжаем написание файла config.json. Сохраните для бота токен и префикс, который он должен слушать.

"prefix": "!",
"token": "your-toke"
>

Для получения токена снова зайдите на портал разработки discord и скопируйте его из раздела bot.

Это все, что нужно выполнить в файле config.json. Приступим к написанию кода javascript.

Сначала импортируем все зависимости.

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!”

node index.js

Чтение сообщений

Бот находится на сервере и может выходить online. Теперь можно начать читать сообщения в чате и отвечать на них.

Для чтения сообщений нужно написать лишь одну простую функцию.

client.on('message', async message => 
>

Создаем listener для события message, получаем сообщение и сохраняем его в объект message.

Проверяем: если сообщение пришло от бота, то игнорируем его.

if (message.author.bot) return;

В этой строке проверяется, является ли автором сообщения бот. Сообщение возвращается, если это так.

Затем проверяем, начинается ли сообщение с ранее определенного префикса. Сообщение возвращается, если нет.

if (!message.content.startsWith(prefix)) return;

После этого проверяем, какую команду нужно запустить. Это можно выполнить с помощью простых операторов if.

const serverQueue = queue.get(message.guild.id);

if (message.content.startsWith(`$play`)) execute(message, serverQueue);
return;
> else if (message.content.startsWith(`$skip`)) skip(message, serverQueue);
return;
> else if (message.content.startsWith(`$stop`)) stop(message, serverQueue);
return;
> else message.channel.send('You need to enter a valid command!')
>

В этом блоке кода проверяется, какую команду нужно запустить, а также осуществляется вызов команды. Если полученная команда недопустима, то вводим сообщение об ошибке в чат с использованием функции send().

Узнав, какие команды нужно запустить, можно перейти к их реализации.

Добавление песен

Начнем с добавления команды play. Для этого понадобится песня и гильдия (гильдия представляет собой изолированную коллекцию пользователей и каналов и часто упоминается в качестве сервера). Также понадобится ранее установленная библиотека ytdl.

Для начала создаем map с названием очереди, в котором будут сохранены все песни, введенные в чат.

const queue = new Map();

Затем создаем функцию async под названием execute и проверяем, находится ли пользователь в голосовом чате, и есть ли у бота соответствующее разрешение. Если нет, то пишем сообщение об ошибке и возвращаем.

async function execute(message, serverQueue) const args = message.content.split(' '); 
const voiceChannel = message.member.voiceChannel;
if (!voiceChannel) return message.channel.send('You need to be in a voice channel to play music!');
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) return message.channel.send('I need the permissions to join and speak in your voice channel!');
>
>

Переходим к получению информации о песне и сохранении ее в объект song. Для этого используем библиотеку ytdl, которая получает информацию о песне по ссылке на youtube.

const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;

Необходимая информация сохраняется в объект song.

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

if (!serverQueue) 
>else serverQueue.songs.push(song);
console.log(serverQueue.songs);
return message.channel.send(`$ has been added to the queue!`);
>

В этом фрагменте мы проверяем, является ли serverQueue пустым. Если нет добавляем туда песню.

Если serverQueue имеет значение null, создаем контракт.

// Creating the contract for our queue
const queueContruct = textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
>;
// Setting the queue using our contract
queue.set(message.guild.id, queueContruct);
// Pushing the song to our songs array
queueContruct.songs.push(song);

try // Here we try to join the voicechat and save our connection into our object.
var connection = await voiceChannel.join();
queueContruct.connection = connection;
// Calling the play function to start a song
play(message.guild, queueContruct.songs[0]);
> catch (err) // Printing the error message if the bot fails to join the voicechat
console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
>

В этом блоке кода создается контракт, а песня добавляется в массив songs.

Затем присоединяемся к голосовому чату пользователя и вызываем функцию play(), которую затем реализуем.

Проигрывание песен

Поскольку теперь можно добавлять песни в очередь и создавать контракт при его отсутствии, можно приступить к реализации функцию проигрывания.

Сначала создаем функцию play, которая обладает двумя параметрами (гильдия и песня, которую нужно проиграть) и проверяет, является ли объект 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-адресу песни. Также добавляем два listeners, которые обрабатывают события end и error.

Примечание: это рекурсивная функция, которая повторяет вызов самой себя. Рекурсия используется для проигрывания следующей песни, когда другая заканчивается.

Теперь можно проиграть песню, введя !play URL в чат.

Пропуск песен

Переходим к реализации функции пропуска. Для этого нужно выполнить завершения диспетчера, созданного в функции play() для начала проигрывания следующей песни.

function skip(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send('You have to be in a voice channel to stop the music!'); 
if (!serverQueue) return message.channel.send('There is no song that I could skip!');
serverQueue.connection.dispatcher.end();
>

В этом фрагменте мы проверяем, находится ли пользователь, который ввел команду, в голосовом канале, а также есть ли песни для пропуска.

Остановка песен

Функция stop() похожа на skip(), за исключением того, что массив songs очищается, из-за чего бот удаляет очередь и покидает голосовой чат.

function stop(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send('You have to be in a voice channel to stop the music!'); 
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
>

Исходный код для index.js:

Полный исходный код для музыкального бота:

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.once('ready', () => console.log('Ready!');
>);

client.once('reconnecting', () => console.log('Reconnecting!');
>);

client.once('disconnect', () => console.log('Disconnect!');
>);

client.on('message', async message => if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;

const serverQueue = queue.get(message.guild.id);

if (message.content.startsWith(`$play`)) execute(message, serverQueue);
return;
> else if (message.content.startsWith(`$skip`)) skip(message, serverQueue);
return;
> else if (message.content.startsWith(`$stop`)) stop(message, serverQueue);
return;
> else message.channel.send('You need to enter a valid command!')
>
>);

async function execute(message, serverQueue) const args = message.content.split(' ');

const voiceChannel = message.member.voiceChannel;
if (!voiceChannel) return message.channel.send('You need to be in a voice channel to play music!');
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) return message.channel.send('I need the permissions to join and speak in your voice channel!');
>

const songInfo = await ytdl.getInfo(args[1]);
const song = title: songInfo.title,
url: songInfo.video_url,
>;

if (!serverQueue) const queueContruct = textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true,
>;

queue.set(message.guild.id, queueContruct);

queueContruct.songs.push(song);

try var connection = await voiceChannel.join();
queueContruct.connection = connection;
play(message.guild, queueContruct.songs[0]);
> catch (err) console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
>
> else serverQueue.songs.push(song);
console.log(serverQueue.songs);
return message.channel.send(`$ has been added to the queue!`);
>

>

function skip(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send('You have to be in a voice channel to stop the music!');
if (!serverQueue) return message.channel.send('There is no song that I could skip!');
serverQueue.connection.dispatcher.end();
>

function stop(message, serverQueue) if (!message.member.voiceChannel) return message.channel.send('You have to be in a voice channel to stop the music!');
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
>

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);
>

client.login(token);

Заключение

У вас все получилось! Надеюсь, эта статья помогла вам разобраться в API Discord и создании с его помощью простого бота.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *