створення музичного бота в Discord

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

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

Детальніше:
додавання музичного бота на сервер у Discord
відтворення музики через бота в Discord

Крок 1: Створення нового додатка

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

Перейти на офіційний сайт Discord Developer Portal

  1. Скористайтеся посиланням вище, щоб відкрити головну сторінку порталу для розробників, увійдіть в особистий обліковий запис Discord і натисніть на &171;New Application&187; для створення нового додатка.
  2. Переход к регистрации нового приложения для создания музыкального бота в Discord
  3. Введіть його ім'я, враховуючи унікальність, оскільки якщо вже існує багато ботів з такою ж назвою, створити його не вийде &8212; з'явиться повідомлення про потребу перейменування.
  4. Ввод названия при регистрации нового приложения для создания музыкального бота в Discord
  5. Після завершення відкрийте меню на сайті та виберіть категорію &171;Bot&187; .
  6. Переход к подключению компонентов нового приложения для создания музыкального бота в Discord
  7. Навпроти рядка &171;Build-A-Bot&187; клікніть на &171;Add Bot&187; .
  8. Кнопка подключения компонентов нового приложения для создания музыкального бота в Discord
  9. Підтвердьте додавання бота для вибраної програми.
  10. Подтверждение подключения компонентов к новому приложению для создания музыкального бота в Discord
  11. Через вже знайоме меню перейдіть в &171;OAuth2&187; .
  12. Переход на страницу настройки приложение для создания музыкального бота в Discord
  13. Цей розділ відповідає за загальні параметри бота та його авторизацію. У блоці &171;Scopes&187; відзначте маркером пункт &171;bot&187; .
  14. Выбор типа работы приложения для создания музыкального бота в Discord
  15. У списку дозволів обов'язково активуйте приєднання до голосових каналів і можливість говорити, оскільки це потрібно для подальшої трансляції музики.
  16. Поиск разрешений голосовых каналов при настройке приложения для создания музыкального бота в Discord
  17. Бот повинен вміти читати та надсилати повідомлення, тому не забудьте ввімкнути ці параметри в розділі з дозволами текстових чатів. Звичайно, можна надати всі дозволи відразу, але такий підхід неправильний, особливо в тих випадках, коли ви робите бота для масового користувача.
  18. Поиск разрешений текстовых каналов при настройке приложения для создания музыкального бота в Discord
  19. Як тільки налаштування дозволів буде завершено, скопіюйте посилання для першої авторизації бота на сервері, тому що інакше додати його поки не вийде.
  20. Копирование ссылки авторизации инструмента для создания музыкального бота в Discord
  21. Перейдіть за цим посиланням і виберіть тестовий сервер, де хочете здійснювати перевірку бота.
  22. Первая авторизация после перехода по ссылке для создания музыкального бота в Discord
  23. Підтвердіть капчу і дочекайтеся появи інформації про успішну авторизацію.
  24. Успешная авторизация после перехода по ссылке для создания музыкального бота в Discord

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

Крок 2: підготовчі дії

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

  1. Створіть папку з назвою бота. Ви можете вибрати будь-яке місце, але найкраще для цього підійде домашня папка користувача.
  2. Добавление пользовательской папки для создания музыкального бота в Discord
  3. У ній створіть два файли: &171;config.json&187; і &171;index.js&187; . У першому запишемо загальну конфігурацію бота &8212; його префікс і унікальний токен, а в другому &8212; весь програмний код з командами і загальними завданнями даного інструменту.
  4. Добавление файлов в пользовательскую папку для создания музыкального бота в Discord
  5. Для роботи бота знадобиться Node.js. Цей інструмент призначений для запуску скриптів на локальному комп'ютері. Перейдіть за посиланням нижче та завантажте його інсталятор для Windows.

    Завантажити Node.js з офіційного веб-сайту

  6. Скачивание компонента для создания музыкального бота в Discord
  7. Чекайте завершення скачування виконуваного файлу, запустіть його і пройдіть просту процедуру установки, слідуючи відобразилися на екрані інструкцій.
  8. Запуск и установка компонента для создания музыкального бота в Discord
  9. Після цього відкрийте &171;командний рядок&187; зручним для Вас чином, наприклад, ввівши cmd в утиліті & 171; виконати & 187; (вона запускається комбінацією клавіш Win + R ).
  10. Запуск Командной строки для создания музыкального бота в Discord
  11. Встановіть модуль для роботи з API Discord, який називається &171;discord.js&187; . Для цього у вікні консолі введіть npm install discord.js ffmpeg-binaries opusscript ytdl-core --save і натисніть Enter &8212; так ви відразу додасте і всі необхідні залежності.
  12. Команда установки дополнительных модулей для создания музыкального бота в Discord
  13. Дочекайтеся появи повідомлень на екрані про успішну установку, не закриваючи поточне вікно консолі. Якщо з'являться помилки, вивчіть їх код і скористайтеся пошукачем, щоб відшукати робоче рішення на форумах або офіційному сайті.
  14. Процесс установки дополнительных модулей для создания музыкального бота в Discord

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

Крок 3: редагування файлу конфігурації бота

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

Детальніше: вибір середовища розробки для програмування

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

  1. Запустіть файл config.js через текстовий редактор або середовище розробки, вставте туди представлений далі код.

    {
    "prefix": "!",
    "token": "your-toke"
    }

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

    Змініть префікс у подвійних лапках на необхідний або залиште знак оклику. Приклад команди з використанням цього знака виглядає так: !play .

  2. Перейдіть на сторінку свого бота на порталі розробки, знайдіть там унікальний маркер і скопіюйте його.
  3. Копирование уникального токена для создания музыкального бота в Discord
  4. Вставте замість напису your-toke , не видаляючи подвійні лапки.
  5. Замена уникального токена в конфигурационном файле для создания музыкального бота в Discord
  6. Збережіть зміни та закрийте даний файл. ДО РЕЧІ, виконати те ж саме дію можна і через стандартний &171; Блокнот&187; .
  7. Использование текстового редактора при редактировании конфигурационного файла для создания музыкального бота в Discord

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

Крок 4: пробний запуск бота

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

  1. Через середовище розробки або вибраний текстовий редактор відкрийте згаданий файл для редагування.
  2. Открытие файла ввода кода для создания музыкального бота в Discord
  3. Вставте туди блок коду, що відповідає за установку залежностей і вказує на використовувані модулі:

    Const Discord = require('discord.js');
    const {
    prefix,
    token,
    } = require('./config.json');
    const ytdl = require('ytdl-core');

  4. Код объявления зависимостей для создания музыкального бота в Discord
  5. За допомогою зазначеного раніше токена створіть клієнта і логін, що здійснюється шляхом введення всього двох простих рядків:

    Const client = new Discord.Client();
    client.login(token);

  6. Добавление клиента и токена для создания музыкального бота в Discord
  7. Залишається тільки вказати останні базові рядки для прослуховування бота.

    Client.once('ready', () => {
    console.log('Ready!');
    });
    client.once('reconnecting', () => {
    console.log('Reconnecting!');
    });
    client.once('disconnect', () => {
    console.log('Disconnect!');
    });

  8. Команды при подключении в коде для создания музыкального бота в Discord
  9. Розгорніть меню &171;File&187; і збережіть внесені зміни.
  10. Сохранение изменений после редактирования кода для создания музыкального бота в Discord
  11. Знову запустіть консоль зручним способом.
  12. Запуск командной строки для включения бота для создания музыкального бота в Discord
  13. Введіть команду node index.js для запуску сценарію бота.
  14. Команда включения бота для создания музыкального бота в Discord
  15. Якщо його файли розташовані не в домашній директорії користувача, після node доведеться вказати повний нехай до них.
  16. Ввод другой команды включения бота для создания музыкального бота в Discord
  17. Про успішний запуск бота свідчить з'явилася напис & 171; Готово!&187; .
  18. Результат успешного запуска для создания музыкального бота в Discord
  19. Усуньте розбіжності і вбийте, що бот перейшов до стат &171;Онлайн&187; .
  20. Проверка бота в режиме онлайн для создания музыкального бота в Discord

Крок 5: Написання основного коду музичного бота

Залишився найскладніший процес &8212; написання основного коду для музичного бота. Є перелік завдань, який він повинен виконувати: читання повідомлень і обробка команд, визначення назви пісні або її адреси, підключення до голосового каналу і відтворення. Дозволи на це у бота є все, тому йому потрібно лише вказати на дії за допомогою функцій на JavaScript, що виконується в тому ж файлі &171;index.js&187; .

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

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

Client.on ('повідомлення', асинхронне Повідомлення = & gt; {
}

Вона складається всього з двох рядків, але дозволить боту прийняти користувальницький запит і коректно обробити. Можна сказати, що це одна з найважливіших команд для ботів будь-яких типів. Обов'язково додайте ігнорування повідомлень від інших ботів, ввівши

If (повідомлення.автор.бот) повертає;

Це дозволяє уникнути конфліктів при одночасному використанні декількох ботів на сервері. Далі знадобиться перевірити префікс, щоб бот прийняв команду або повернув її.

If (!message.content.StartsWith (префікс)) повертає;

Перевірка запускаються команд здійснюється за допомогою простих операторів якщо , то констракція в нашому випадку є результатом:

Const serverQueue = черга. отримати(message.guild.id );
if (message.content.StartsWith(`${prefix}play`)) {
виконати(повідомлення, серверна черга);
повернувши;
} else if (message.content.StartsWith (`${префікс}пропустити')) {
пропустити (повідомлення, черга сервера);
повернувши;
} else if (message.content.StartsWith (`${префікс}stop')) {
зупинка (повідомлення, серверна черга);
повернення;
} ще {
message.channel.send("ви продовжуєте користуватися Послугами Компанії!")
}

Зверніть увагу на те, що функція надіслати(") відправляє користувачеві повідомлення, якщо раптом він вводить неробочу команду. Це повідомлення ви можете редагувати, змінюючи напис в лапках.

Тепер бот навчився приймати команди, але поки не може взаємодіяти з ними, оскільки дії не вказані. В першу додамо команду Грай , яка відповідає за відтворення. Для неї необхідний масив, що має наступний вигляд:

Постійна черга = нова карта ();

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

Виконання асинхронної функції (повідомлення, serverQueue) {
const args = message.content.split(' ');
const voiceChannel = повідомлення.учасник.голосовий канал;
if (!voiceChannel) повертає повідомлення.channel.send(' що слухати музику, вам потрібно бути в голосовому каналі!');
постійні дозволи = voiceChannel.permissionsFor (повідомлення.клієнт.користувач);
if (!permissions.has ('підключатися')||!permissions.has ('говорити')) {
відповідь повідомлення.channel.send ("мені потрібні зміни, що б підключитися і говорити на вашому каналі!");
}
}

Наступна дія &8212; підключення бібліотеки з початку року , попрошу бота будетсчитивать назву пісні за посиланням з YouTube, щоб потім відтворити її на сервері. Для неї знадобиться вставити всього невеликий шматочок коду.

Const songInfo = очікування ytdl.getInfo (аргументи[1]);
постійна пісня = {
назва: songInfo.title,
url: songInfo.video_url,
};

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

If (!serverQueue) {

}більше {
Черга на сервер.пісня.поштовх(пісня);
console.log(serverQueue.пісня);
відповідь повідомлення.канал.надсилання ('${пісня.назва} Додано в чергу!`);
}

Далі йде трохи складна для початківців програмістів схема контракту, яка додає пісню в масив і робить те ж саме при кожному введенні !грати , перевіряючи чергу та вибираючи правильну дію. Зверніть увагу на представлені коментарі, які і дозволяють розібратися з усіма тонкощами.

/ / створення контракту для черги
const queueContruct = {
Текстовий канал: повідомлення.канал,
Голосовий канал: голосовий канал,
підключення: нульове,
пісня: [],
гучність: 5,
відтворення: true,
};
// Встановлення черги за допомогою нашого контракту
черга. встановити(message.guild.id , побудова черги);
// Вставляємо композицію в наш масив пісень
queueContruct.songs.push (пісня);

Спробуй {
// Тут ми намагаємось приєднатися до голосового чату та зберегти з'єднання в об'єкті
var connection = очікування голосового каналу.join();
queueconstruct.connection = підключення;
// Виклик функції відтворення для запуску пісні
відтворення (message.guild, queueContruct.songs[0]);
} зловити (помилка) {
// Вихід повідомлення про помилку, якщо бот не може приєднатися до голосового чату
console.log (помилка);
черга. видалити(message.guild.id );
відповідь повідомлення.канал.надсилання (помилка);
}

З чергою все зрозуміло, але поки ще пісні не відтворюються, оскільки відсутнє призначення для функції Грай . Для цього в код необхідно додати структуру

Функціональна гра(Гільдія, пісня) {
const serverQueue = черга. отримати(guild.id );
якщо (!пісня) {
serverQueue.voiceChannel.leave();
черга. видалити(guild.id );
повернувши;
}
}

Програвання ж починається за допомогою функції потік відтворення () і зазначеної посилання на трек.

Const dispatcher = serverQueue.підключення.Потік відтворення (ytdl (song.url))
.on ('кінець', () = & gt; {
console.log ('Музика Закінчилася!');
// Видаляє готову пісню з черги
Черга на сервер.пісня.shift();
// Знову викликає функцію відтворення з наступною піснею
грати (Гільдія, серверна черга.пісні[0]);
})
.on ('помилка', error = & gt; {
console.error (Помилка);
});
dispatcher.setVolumeLogarithmic (серверна черга.обсяг / 5);

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

Пропуск функції (повідомлення, черга сервера) {
if (!message.member.voiceChannel) повертає повідомлення.channel.send(' ви продовжуєте бути в голосовому каналі, що б відключити музику!');
if (!serverQueue) повертає message.channel.send ('немає відповіді, кого я можу попросити!');
serverQueue.connection.dispatcher.end();
}

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

Зупинка функції (повідомлення, черга сервера) {
if (!message.member.voiceChannel) повертає повідомлення.channel.send('
Ви повинні бути в голосовому каналі, щоб зупинити музику!');
Черга на сервер.пісня = [];
serverQueue.connection.dispatcher.end();
}

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

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

Const Discord = потрібно('discord.js ');
const {
префікс,
токен,
} = вимагатися('./config.json');
const ytdl = require('ytdl-core');
постійний клієнт = новий дискорд.Клієнт();
постійна черга = нова карта ();
клієнт.once ('готово', () = & gt; {
console.log ('Готово!');
});
клієнт.once ('повторне підключення', () = & gt; {
console.log ('повторне підключення!');
});
клієнт.once ('вимкнути', () = & gt; {
console.log ('відключитися!');
});
client.on ('повідомлення', асинхронне Повідомлення = & gt; {
if (message.author.Bot) повертає;
if (!message.content.StartsWith (префікс)) повертає;
const serverQueue = черга. отримати(message.guild.id );
if (message.content.StartsWith(`${prefix}play`)) {
виконати(повідомлення, серверна черга);
повернувши;
} else if (message.content.StartsWith (`${префікс}пропустити')) {
пропустити (повідомлення, черга сервера);
повернувши;
} else if (message.content.StartsWith (`${префікс}stop')) {
зупинка (повідомлення, серверна черга);
повернувши;
} ще {
message.channel.send ("вам потрібно ввести дійсну команду!")
}
});
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(`${song.title} 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

У цій статті ми не торкнулися вивантаження бота на хостинг, поширення його серед інших користувачів, створення аватарки і використання відкритих майданчиків, звідки його і можна авторизувати. Все це & 8212; окремі процеси, якими варто займатися тільки в тому випадку, коли ви відточили свій навик створення ботів і готові поширювати проекти в мережі.

більше статей на цю тему: