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

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

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

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

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

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

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

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

  5. Когда закончите, откройте меню сайта и выберите категорию «Боты».
  6. Создайте музыкального бота на Discord

  7. Перед строкой «Build-A-Bot» нажмите «Добавить бота».
  8. Создайте музыкального бота на Discord

  9. Подтвердите добавление бота для выбранного приложения.
  10. Создайте музыкального бота на Discord

  11. Зайдите в «OAuth2» через уже знакомое меню».
  12. Создайте музыкального бота на Discord

  13. Этот раздел отвечает за общие параметры бота и его авторизацию. В блоке «Область действия» отметьте элемент «бот» маркером».
  14. Создайте музыкального бота на Discord

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

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

  19. После установки разрешений скопируйте ссылку для первой авторизации бота на сервер, иначе вы еще не сможете ее добавить.
  20. Создайте музыкального бота на Discord

  21. Перейдите по этой ссылке и выберите тестовый сервер, на котором вы хотите проверить бота.
  22. Создайте музыкального бота на Discord

  23. Подтвердите капчу и дождитесь появления информации об авторизации.
  24. Создайте музыкального бота на Discord

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

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

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

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

  3. Создайте в нем два файла: «config.json» и «index.js». В первом запишем общую конфигурацию бота — его префикс и уникальный токен, а во втором — весь программный код с общими командами и действиями этого инструмента.
  4. Создайте музыкального бота на Discord

  5. Для работы бота требуется Node.js. Этот инструмент предназначен для запуска сценариев на локальном компьютере. Перейдите по ссылке ниже и загрузите его установщик для Windows.
  6. Дождитесь завершения загрузки исполняемого файла, запустите его и следуйте простой процедуре установки, следуя инструкциям на экране.
  7. Создайте музыкального бота на Discord

  8. Далее откройте «Командную строку» удобным для вас способом, например, введя cmd в утилите «Выполнить» (запускается комбинацией клавиш Win + R).
  9. Создайте музыкального бота на Discord

  10. Установите модуль для работы с Discord API под названием «discord.js». Для этого в открывшемся окне консоли введите npm install discord.js ffmpeg-binaries opusscript ytdl-core —save и нажмите Enter — это сразу добавит все необходимые зависимости.
  11. Создайте музыкального бота на Discord

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

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

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

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

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

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

    {
    «префикс»: «!»,
    «токен»: «твой токен»
    }

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

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

  2. Зайдите на страницу своего бота на портале разработки, найдите там уникальный токен и скопируйте его.
  3. Создайте музыкального бота на Discord

  4. Введите вместо, не удаляя двойные кавычки, your-toke.
  5. Создайте музыкального бота на Discord

  6. Сохраните изменения и закройте этот файл. Кстати, то же действие вы можете выполнить через стандартный «Блокнот».
  7. Создайте музыкального бота на Discord

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

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

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

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

  3. Введите туда блок кода, отвечающий за установку зависимостей, и укажите используемые модули:

    const Discord = require (‘discord.js’);
    стоимость {
    префикс,
    жетон
    } = требуется (‘./config.json’);
    const ytdl = require (‘ytdl-core’);

  4. Создайте музыкального бота на Discord

  5. Используя ранее указанный токен, создайте клиента и войдите в систему, для чего нужно ввести всего две простые строки:

    const client = новый Discord.Client();
    client.login (токен);

  6. Создайте музыкального бота на Discord

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

    client.once (‘готово’, () => {
    console.log («Готово!’);
    });
    client.once (‘reconnect’, () => {
    console.log («Переподключитесь!’);
    });
    client.once (‘отключиться’, () => {
    console.log («Выйти!’);
    });

  8. Создайте музыкального бота на Discord

  9. Разверните меню «Файл» и сохраните изменения.
  10. Создайте музыкального бота на Discord

  11. Перезагрузите консоль удобным способом.
  12. Создайте музыкального бота на Discord

  13. Введите командный узел index.js, чтобы запустить сценарий бота.
  14. Создайте музыкального бота на Discord

  15. Если его файлы не находятся в домашнем каталоге пользователя, после узла вам нужно будет указать им полный let.
  16. Создайте музыкального бота на Discord

  17. Об успешном запуске бота свидетельствует сообщение «Готово!» что появляется!».
  18. Создайте музыкального бота на Discord

  19. Откройте Discord и убедитесь, что бот онлайн».
  20. Создайте музыкального бота на Discord

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

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

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

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

client.on (‘сообщение’, асинхронное сообщение => {

}

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

если (message.author.bot) возвращается;

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

если (! message.content.startsWith (префикс)) return;

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

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

if (message.content.startsWith (`$ {prefix} play`)) {
выполнить (сообщение, serverQueue);
возвращение;
} else if (message.content.startsWith (`$ {prefix} skip`)) {
пропустить (сообщение, serverQueue);
возвращение;
} else if (message.content.startsWith (`$ {prefix} stop`)) {
стоп (сообщение, serverQueue);
возвращение;
} Другой {
message.channel.send («Вы должны использовать существующую команду!’)
}

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

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

const queue = новая карта();

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

выполнение асинхронной функции (сообщение, 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 (‘ПОДКЛЮЧИТЬ’) ||! permissions.has (‘РАЗГОВОР’)) {
return message.channel.send («Мне нужно разрешение, чтобы присоединиться и говорить на вашем голосовом канале!’);
}
}

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

const songInfo = ждать ytdl.getInfo (args [1]);
const song = {
название: songInfo.title,
url: songInfo.video_url,
};

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

if (! serverQueue) {

} Другой {
serverQueue.songs.push (песня);
console.log (serverQueue.songs);
return message.channel.send (`$ {song.title} добавлен в очередь!`);
}

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

// Создаем контракт для очереди
const queueContruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
соединение: ничего,
песни: ,
объем: 5,
играет: правда,
};
// Настраиваем очередь, используя наш контракт
queue.set (message.guild.id, queueContruct);
// Вставляем песню в нашу серию песен
queueContruct.songs.push (песня);

пытаться {
// Здесь мы пытаемся подключиться к голосовому чату и сохранить связь в теме
var connection = ждать voiceChannel.join();
queueContruct.connection = соединение;
// Вызов функции воспроизведения, чтобы начать песню
играть (message.guild, queueContruct.songs [0]);
} take (err) {
// Отображаем сообщение об ошибке, если бот не может участвовать в голосовом чате
console.log (ошибка);
coda.delete (message.guild.id);
вернуть message.channel.send (ошибка);
}

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

функция воспроизведения (гильдия, песня) {
const serverQueue = queue.get (guild.id);
if (! song) {
serverQueue.voiceChannel.leave();
coda.delete (guild.id);
возвращение;
}
}

Воспроизведение начинается с функции playStream () и указанной ссылки на дорожку.

const диспетчер = serverQueue.connection.playStream (ytdl (song.url))
.on (‘конец’, () => {
console.log («Музыка окончена!’);
// Удаляем готовую песню из очереди
serverQueue.songs.shift();
// Вызов функции воспроизведения со следующей дорожкой
играть (гильдия, serverQueue.songs [0]);
})
.on (‘ошибка’, error => {
console.error (ошибка);
});
dispatcher.setVolumeLogarithmic (serverQueue.volume / 5);

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

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

Функция остановки работает примерно так же, но блокировка с помощью кода выглядит несколько иначе:

остановка функции (сообщение, serverQueue) {
если (! message.member.voiceChannel) return message.channel.send(‘
Вы должны быть в голосовом канале, чтобы остановить музыку!’);
serverQueue.songs = ;
serverQueue.connection.dispatcher.end();
}

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

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

const Discord = require (‘discord.js’);
стоимость {
префикс,
жетон
} = требуется (‘./config.json’);
const ytdl = require (‘ytdl-core’);

const client = новый Discord.Client();

const queue = новая карта();

client.once (‘готово’, () => {
console.log («Готово!’);
});

client.once (‘reconnect’, () => {
console.log («Переподключитесь!’);
});

client.once (‘отключиться’, () => {
console.log («Выйти!’);
});

client.on (‘сообщение’, асинхронное сообщение => {
если (message.author.bot) возвращается;
если (! message.content.startsWith (префикс)) return;

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

if (message.content.startsWith (`$ {prefix} play`)) {
выполнить (сообщение, serverQueue);
возвращение;
} else if (message.content.startsWith (`$ {prefix} skip`)) {
пропустить (сообщение, serverQueue);
возвращение;
} else if (message.content.startsWith (`$ {prefix} stop`)) {
стоп (сообщение, serverQueue);
возвращение;
} Другой {
message.channel.send («Вы должны ввести правильную команду!’)
}
});

выполнение асинхронной функции (сообщение, 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 (‘ПОДКЛЮЧИТЬ’) ||! permissions.has (‘РАЗГОВОР’)) {
return message.channel.send («Мне нужно разрешение, чтобы войти в ваш голосовой канал и говорить по нему!’);
}

const songInfo = ждать ytdl.getInfo (args [1]);
const song = {
название: songInfo.title,
url: songInfo.video_url,
};

if (! serverQueue) {
const queueContruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
соединение: ничего,
песни: ,
объем: 5,
играет: правда,
};

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

queueContruct.songs.push (песня);

пытаться {
var connection = ждать voiceChannel.join();
queueContruct.connection = соединение;
играть (message.guild, queueContruct.songs [0]);
} take (err) {
console.log (ошибка);
coda.delete (message.guild.id);
вернуть message.channel.send (ошибка);
}
} Другой {
serverQueue.songs.push (песня);
console.log (serverQueue.songs);
return message.channel.send (`$ {song.title} добавлен в очередь!`);
}

}

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

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

функция воспроизведения (гильдия, песня) {
const serverQueue = queue.get (guild.id);

if (! song) {
serverQueue.voiceChannel.leave();
coda.delete (guild.id);
возвращение;
}

const диспетчер = serverQueue.connection.playStream (ytdl (song.url))
.on (‘конец’, () => {
console.log («Музыка окончена!’);
serverQueue.songs.shift();
играть (гильдия, serverQueue.songs [0]);
})
.on (‘ошибка’, error => {
console.error (ошибка);
});
dispatcher.setVolumeLogarithmic (serverQueue.volume / 5);
}

client.login (токен);

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

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

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

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

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

Рейтинг автора
Автор статьи
Андрей Коновалов
Привет, меня зовут Андрей Васильевич Коновалов. В 2006 году окончил Чувашский государственный университет им. Ульянова. По образованию инженер, 8 лет проработал на НПП Экра по специальности. Люблю компьютеры и все, что с ними связано. С 2018 года начал писать о решениях проблем, связанных с компьютерами и программами.
Написано статей
3742
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Проблемы и их решения по компьютерам, смартфонам
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: