How to Create a Music Bot Using Discord.js
Gabriel Tanner
The discord API provides you with an easy tool to create and use your own bots and tools.
Today we are going to take a look at how we can create a basic music bot and add it to our server. The bot will be able to play, skip, and stop the music and will also support queuing functionality.
Prerequisites
Before we get started creating the bot make sure that you have installed all the needed tools.
After the installation, we can continue by setting up our discord bot.
Setting up a discord bot
First, we need to create a new application on the discord development portal.
We can do so by visiting the portal and clicking on new application.
After that, we need to give our application a name and click the create button.

After that, we need to select the bot tab and click on add bot.

Now our bot is created and we can continue with inviting it to our server.
Adding the bot to your server
After creating our bot we can invite it using the OAuth2 URL Generator.
For that, we need to navigate to the OAuth2 page and select bot in the scope tap.

After that, we need to select the needed permissions to play music and read messages.

Then we can copy our generated URL and paste it into our browser.

After pasting it, we add it to our server by selecting the server and clicking the authorize button.

Creating our project
Now we can start creating our project using our terminal.
First, we create a directory and move into it. We can do so by using these two commands.
mkdir musicbot && cd musicbot
After that, we can create our project modules using the npm init command. After entering the command you will be asked some questions just answer them and continue.
Then we just need to create the two files we will work in.
touch index.js && touch config.json
Now we just need to open our project in our text editor. I personally use VS Code and can open it with the following command.
code .
Discord js basics
Now we just need to install some dependencies before we can get started.
npm install discord.js ffmpeg fluent-ffmpeg @discordjs/opus ytdl-core --save
After the installation finished we can continue with writing our config.json file. Here we save the token of our bot and the prefix he should listen for.
To get your token you need to visit the discord developer portal again and copy it from the bot section.
That are the only things we need to do in our config.json file. So let’s start writing our javascript code.
First, we need to import all our dependencies.
const Discord = require('discord.js'); const < prefix, token, >= require('./config.json'); const ytdl = require('ytdl-core');
After that, we can create our client and login using our token.
const client = new Discord.Client(); client.login(token);
Now let’s add some basic listeners that console.log when they get executed.
client.once('ready', () => < console.log('Ready!'); >); client.once('reconnecting', () => < console.log('Reconnecting!'); >); client.once('disconnect', () => < console.log('Disconnect!'); >);
After that, we can start our bot using the node command and he should be online on discord and print “Ready!” in the console.
node index.js
Reading messages
Now that our bot is on our server and able to go online, we can start reading chat messages and responding to them.
To read messages we only need to write one simple function.
client.on('message', async message =>
Here we create a listener for the message event and get the message and save it into a message object if it is triggered.
Now we need to check if the message is from our own bot and ignore it if it is.
if (message.author.bot) return;
In this line, we check if the author of the message is our bot and return if it is.
After that, we check if the message starts with the prefix we defined earlier and return if it doesn’t.
if (!message.content.startsWith(prefix)) return;
After that, we can check which command we need to execute. We can do so using some simple if statements.
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
In this code block, we check which command to execute and call the command. If the input command isn’t valid we write an error message into the chat using the send() function.
Now that we know which command we need to execute we can start implementing these commands.
Adding songs
Let’s start by adding the play command. For that, we need a song and a guild (A guild represent an isolated collection of users and channels and is often referred to as a server). We also need the ytdl library we installed earlier.
First, we need to create a map with the name of the queue where we save all the songs we type in the chat.
const queue = new Map();
After that, we create an async function called execute and check if the user is in a voice chat and if the bot has the right permission. If not we write an error message and return.
async function execute(message, serverQueue) < const args = message.content.split(" "); const voiceChannel = message.member.voice.channel; 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!" ); >>
Now we can continue with getting the song info and saving it into a song object. For that, we use our ytdl library which gets the song information from the youtube link.
const songInfo = await ytdl.getInfo(args[1]); const song = < title: songInfo.title, url: songInfo.video_url, >;
This will get the information of the song using the ytdl library we installed earlier. Then we save the information we need into a song object.
After saving the song info we just need to create a contract we can add to our queue. To do so we first need to check if our serverQueue is already defined which means that music is already playing. If so we just need to add the song to our existing serverQueue and send a success message. If not we need to create it and try to join the voice channel and start playing music.
if (!serverQueue) < >else < serverQueue.songs.push(song); console.log(serverQueue.songs); return message.channel.send(`$has been added to the queue!`); >
Here we check if the serverQueue is empty and add the song to it if it’s not. Now we just need to create our contract if the serverQueue is 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); >
In this code block, we create a contract and add our song to the songs array. After that, we try to join the voice chat of the user and call our play() function we will implement after that.
Playing songs
Now that we can add our songs to our queue and create a contract if there isn’t one yet we can start implementing our play functionality.
First, we will create a function called play which takes two parameters (the guild and the song we want to play) and checks if the song is empty. If so we will just leave the voice channel and delete the queue.
function play(guild, song) < const serverQueue = queue.get(guild.id); if (!song) < serverQueue.voiceChannel.leave(); queue.delete(guild.id); return; >>
After that, we will start playing our song using the play() function of the connection and passing the URL of our song.
const dispatcher = serverQueue.connection .play(ytdl(song.url)) .on("finish", () => < serverQueue.songs.shift(); play(guild, serverQueue.songs[0]); >) .on("error", error => console.error(error)); dispatcher.setVolumeLogarithmic(serverQueue.volume / 5); serverQueue.textChannel.send(`Start playing: **$**`);
Here we create a stream and pass it the URL of our song. We also add two listeners that handle the end and error event.
Note: This is a recursive function which means that it calls itself over and over again. We use recursion so it plays the next song when the song is finished.
Now we are ready to play a song by just typing !play URL in the chat.
Skipping songs
Now we can start implementing the skipping functionality. For that, we just need to end the dispatcher we created in our play() function so it starts the next song.
function skip(message, serverQueue)
Here we check if the user that typed the command is in a voice channel and if there is a song to skip.
Stoping songs
The stop() function is almost the same as the skip() except that we clear the songs array which will make our bot delete the queue and leave the voice chat.
function stop(message, serverQueue)
Complete source code for the index.js:
Here you can get the complete source code for our music bot:
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.voice.channel; 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); return message.channel.send(`$has been added to the queue!`); > > function skip(message, serverQueue) < if (!message.member.voice.channel) 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.voice.channel) 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 .play(ytdl(song.url)) .on("finish", () => < serverQueue.songs.shift(); play(guild, serverQueue.songs[0]); >) .on("error", error => console.error(error)); dispatcher.setVolumeLogarithmic(serverQueue.volume / 5); serverQueue.textChannel.send(`Start playing: **$**`); > client.login(token);
Conclusion
You made it all the way until the end! Hope that this article helped you understand the Discord API and how you can use it to create a simple bot. If you want to see an example of a more advanced discord bot you can visit my Github repository.
If you have found this useful, please consider recommending and sharing it with other fellow developers.
If you have any questions or feedback, let me know in the comments down below.
Создание музыкального бота с помощью 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 и создании с его помощью простого бота.
Музыкальный бот Дискорд: как добавить и настроить

Музыкальный бот удобный инструмент для воспроизведения аудио для всех пользователей находящихся на канале. Зачатую управление осуществляется с помощью различных команд, которые необходимо написать в чат. Файлы не нужно скачивать и добавлять самостоятельно, так как большинство ботов используют умеют находить песни самостоятельно. Показателем хорошего бота является отсутствие лагов при воспроизведении, поэтому мы протестировали самые популярные варианты, после чего можем порекомендовать лучшее из них к использованию.
Может быть полезно: Ники для Дискорда
Содержание
Бот Maki Music
Ссылка: maki.gg
Помимо простого воспроизведения музыки, он умеет еще кучу сторонних вещей, но сейчас не об этом. При использовании проблем с лагами не возникало, а звук был качественный и чистый.
Как только вы авторизовали бота, напишите в чат /connect и он зайдет на канал.

Для запуска музыки используйте команду /play, после чего выберете query и введите название песни. Старайтесь писать плавильно, так как бот может вас не понять.

Команды:
- /connect — подключает бот к голосовому каналу;
- /play — воспроизведение или постановка песни в очередь;
- /queue — отображает очередь песен;
- /playing — показывает какая песня играет в данный момент;
- /pause — ставит песню на паузу;
- /resume — запускает песню с момента остановки;
- /skip — пропускает текущую композицию;
- /rewind 10 — перемотка текущей композиции на заданное количество секунд;
- /forward 10 — перемотка текущей композиции вперед на заданную величину;
- /volume 20 — громкость;
- /shuffle — перемётывает песни в очереди;
- /stop — очистит очередь и отключится;
- /repeat — зациклит текущую очередь.
FlaviBot
Ссылка: flavibot.xyz

Для запуска музыки с помощью FlaviBot используйте команду /play, после чего укажите название песни и исполнителя.

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

Для получения информации о всех доступных командах, пропишите /help
Как добавить музыкального бота в Дискорд

Используя одну из предоставленных нами ссылок, для удобной активации музыкального бота на ваш канал, лучше использовать Web-версию Discord. Авторизоваться проще простого, используйте одноименное мобильное приложение которое может отсканировать QR-код.

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

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

В момент добавления вы должны находится в голосовом канале.

Если все пошло как надо, бот присоединиться к вам.

Запускаем музыку с помощью команд и наслаждаемся!

Вадим Белинский
Главный редактор сайта
Киберспорт не оставил шансов юриспруденции и финансам в выборе основного занятия. Знаю про CS:GO практически все и немного больше. За десятилетний опыт игры, данная киберспортивная дисциплина открылась по новому, о чем вы узнаете в моих статьях.
- → Ники для Дискорда
- Как часто выпадают вещи в Раст ←
Телеграмм Трейдеров скинов CS:GO


- 1. Vitality
- 2. ENCE
- 3. G2
- 4. Heroic
- 5. MOUZ +6
- 6. Natus Vinsere +1
- 7. FaZe Clan -1
- 8. Astralis -3
- 9. Monte +4
- 10. Cloud9 -2
Весь рейтинг команд
Почта для связи
gocsgo.net@gmail.com
Jockie Music
1 in 4 Discord Bot

Remember the times when you had to add all those music bots for your bulky server each with their own prefixes and commands?

Those days are now over!
With Jockie Music you can have up to 4 dedicated music bots acting as one, meaning, whenever one of the bots is in use the next one in line will join!

