Бот для дискорда своими руками

Как сделать бота в Discord

Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.

Как создать Дискорд-бота на основе discord.js

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

Выполните следующие шаги:

  1. Войдите на сайт discord.com/developers/applications/.

  1. Жмите на кнопку New Application.

  1. Введите название будущего бота Дискорд, к примеру, Music Bot.
  2. Перейдите на вкладку Bot, а после жмите на кнопку Add Bot.


Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:

  1. Переместитесь в раздел OAuth2 и выберите Bot в панели Scopes.

  1. Укажите необходимые разрешения для проигрывания музыки и чтения.
  2. Копируйте созданный URL и вставьте его в веб-проводник.
  3. Выберите сервер, куда нужно добавить URL.
  4. Жмите на кнопку авторизации (Authorize).


На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:

  1. Создайте модули проекта с применением nmp init.
  2. Ответьте на несколько вопросов, которые необходимы, чтобы создать бота в Дискорд.
  3. Сделайте два файла, где будет вестись работа — touch index.js && touch config.json.
  4. Откройте проект в редакторе, к примеру, с помощью VS Code с применением приказа code.
  5. Установите группу зависимостей, необходимых для дальнейшей работы — npm install discord.js ffmpeg-binaries opusscript ytdl-core –save.
  6. Продолжите создание файла на config.json. На этом этапе сохраните префикс и токен для бота.
  1. Войдите на портал создания Дискорд и копируйте токен из раздела Bot (жмите на кнопку Copy).

Теперь нужно создать код javascript. Для этого копируйте следующие зависимости:

const Discord = require(‘discord.js’);

const ytdl = require(‘ytdl-core’);

После этого нужно создать с применением токена клиент и логин.

const client = new Discord.Client();

Далее добавьте несколько listeners, которые выполняют console.log при пуске.

После этого начните работать с ботом Дискорд с применением node. Важно, чтобы вновь созданный Discord-бот был онлайн. В консоли появится Ready!. Команда — node index.js.

Задание команд для бота Дискорд

Теперь остается задать необходимые команды.

Для чтения сообщений

Чтобы Дискорд-бот мог читать, напишите функцию.

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

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

if (message.author.bot) return;

Если сообщение вернулось, значит, его смог создать бот. Теперь проверьте, с какого префикса оно начинается.

Читайте также:  Деревянная кровать своими руками для девочки

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

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

> else if (message.content.startsWith(`$skip`)) <

> else if (message.content.startsWith(`$stop`)) <

message.channel.send(‘You need to enter a valid command!’)

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

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

Здесь нужна гильдия, песня и библиотека ytdl (должна быть установлена заранее). Сделайте map с названием очереди, где будут храниться песни.

const queue = new Map();

Теперь создайте async0-функцию с названием 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-библиотека, получающая данные по ютуб-ссылке.

const songInfo = await ytdl.getInfo(args[1]);

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

return message.channel.send(`$ has been added to the queue!`);

В раздел serverQueue, если он пустой, добавьте трек. В случае, когда serverQueue имеет параметр null, сделайте контракт.

// Creating the contract for our queue

// Setting the queue using our contract

// Pushing the song to our songs array

// Here we try to join the voicechat and save our connection into our object.

var connection = await voiceChannel.join();

// Calling the play function to start a song

// Printing the error message if the bot fails to join the voicechat

Проигрывание трека

Теперь нужно создать опцию play для бота Дискорд с параметрами гильдия и песня, а также проверкой объекта song.

function play(guild, song) <

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

Если да, нужно уйти с голосового канала и удалить очередь.

Далее трек играет с применением URL и playStream.

const dispatcher = serverQueue.connection.playStream(ytdl(song.url))

// Deletes the finished song from the queue

// Calls the play function again with the next song

Здесь создается stream, а его URL передается адресу песни.

Пропуск трека

Здесь оформите завершение диспетчера, который был сделан в опции play. Такое действие необходимо, чтобы начал играть очередной трек.

function skip(message, serverQueue) <

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

Здесь проверяется, есть ли пользователь в голосовом канале, и имеется ли трек для пропуска.

Остановка

Опция stop подразумевает очистку массива song, удаления очереди и выхода из чата.

function stop(message, serverQueue) <

if (!message.member.voiceChannel) return message.channel.send(‘You have to be in a voice channel to stop the music!’);

Полный код бота для Дискорд

const Discord = require(‘discord.js’);

const ytdl = require(‘ytdl-core’);

const client = new Discord.Client();

const queue = new Map();

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

if (message.author.bot) return;

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

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

> else if (message.content.startsWith(`$skip`)) <

> else if (message.content.startsWith(`$stop`)) <

message.channel.send(‘You need to enter a valid command!’)

async function execute(message, serverQueue) <

Источник

Создание бота Дискорд на основе discord.js

Предыстория

Я заинтересовался созданием бота для Discord, но всё что я нашёл, было пару видео на YouTube, да и то там просто писали код, без всяких пояснений. Поэтому я хочу начать серию статей по созданию ботов на основе discord.js.

Читайте также:  Apecs доводчик дверной ремонт своими руками

Получение токена бота

Для начала нам нужно зайти на страницу создание приложений и нажать New Application.

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

Осталось только скопировать токен.

Подготовка среды разработки

Для начала нужно установить Node.js и Visual Studio Code (VS code), в последнем собственно и будет происходить процесс создания бота. Запускаем VS code. Открываем папку, в которой будет хранится наш бот. Нажимаем Вид->Терминал, после этого в нижней части приложения должен появится терминал.

Написания «тела» бота

Для начало нужно создать описание бота.

После ввода команды, она будет спрашивать вас данные о боте (можно оставить по умолчанию, просто нажав Enter). В конце она спросит правильно ли всё указано и выведет полученные ответы.

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

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

Если вы всё сделали правильно, то в папке бота должно быть следующее.

Далее создаём файл botconfig.json, здесь мы будем хранить основные параметры бота.

Теперь создаём файл index.js, в него копируем следующий код.

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

После чего остаётся добавить бота на сервер по полученной ссылке.

Источник

Создание простого Discord бота с помощью библиотеки discord.py

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

Получение токена и Client ID для вашего бота

Для получения токена и ID бота небходимо создать свое приложение и в разделе General Information скопировать Client ID.

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

Собственно пишем бота

Устанавливаем discord.py с помощью pip:

После успешной установки создаем файл bot.py, где будем писать бота.

Импортируем все необходимое:

Создаем переменную с вашим токеном, про который я писал выше:

Создаем тело бота:

Для начала сделаем простенькую команду, аргумент которой бот будет просто пересылать:

И в конце запускаем бота с вашим токеном:

В итоге должно получится вот такое:

Теперь необходимо добавить бота на сервер. Сделать это можно с помощью ссылки:

Число необходимых прав можно получить в разделе настроек бота.

Теперь можно запускать бота:

После нескольких секунд, можно заметить его в сети:

И наконец-то попробовать отправить команду:

Заключение

Вот так можно легко запустить у себя на сервере бота. Как можно заметить библиотека делает практически все за тебя и остается только добавлять свой функционал с использованием python. В следующий раз я покажу как следить за событиями, подключатся к голосовым каналам (избегая проблем с linux и Windows), использовать роли и права участников и другое.

Источник

Создаем бота для Discord (NodeJS + Docker)

В этом ознакомительном HOWTO я расскажу, как можно немного занять себя на время карантина и сделать бота для своего Discord-сервера. Мы развернем NodeJS в Docker под Ubuntu 18.04 и запустим в нем бота с парочкой простых команд. В конце я оставлю ссылки на полезные источники информации, чтобы вы могли дальше развивать бота, наделяя его полезными функциями.

Программное обеспечение сервера, используемое в этом уроке:

Читайте также:  Басейн для детей своими руками

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

Первые шаги

Первым шагом станет создание приложения на официальном сайте Discord (убедитесь, что вы зарегистрированы). Для этого потребуется пройти по ссылке и нажать на кнопку “New application”.

В появившемся окне нужно придумать имя своему приложению (будущему боту):

После указания имени и создания приложения мы можем перейти к созданию бота. Для этого в левом меню выберите пункт “Bot” и нажмите на кнопку “Add Bot”.

Последним шагом здесь будет копирование token по кнопке “Copy”. Держите в секрете ваш token и сохраните его куда-нибудь — он понадобится позже.

Подготовка сервера

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

Команды для установки в Ubuntu 18.04:

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

Читайте также

Создание основных файлов

Как я указал в начале статьи, мы будем использовать NodeJS для запуска бота. Дополнительно нам потребуются две библиотеки:

  • discord.js (основная библиотека для работы бота);
  • dotenv (будет использоваться для конфигурационного файла).

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

Примерный вид файла:

В нем мы указали имя будущего пакета (name), версию (version), описание (description), автора (author), основной файл (app.js) и список зависимостей (dependencies).

Запустим npm install и убедимся, что создался файл package-lock.json, который потом также будет скопирован в контейнер.

Теперь создадим файл самого бота app.js и запишем в него следующий код:

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

Вместо “tokenbot” подставляется token бота, который был сохранен в начале статьи, а в качестве prefix указывается символ, после которого будут вводиться команды. Я выбрал в качестве префикса “!”, но вы можете выбрать другой удобный символ, если только он не используется самим Discord, как например “@” или “/”.

Создание Docker-контейнера

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

Создадим файл .dockerignore и запишем туда несколько локальных файлов, которые будут игнорироваться:

Соберем образ и запустим на его основе контейнер:

Вместо “authorname” можно ввести имя пользователя, от которого создается бот, и через “/” указать имя бота.

Проверим, что контейнер запустился, специальной командой:

Добавление бота на сервер

Бот запущен и работает в контейнере. Осталось только пригласить его на сервер и проверить его работу.

Для приглашения необходимо:

  1. Вернуться обратно по ссылке.
  2. Выбрать созданное приложение.
  3. Перейти во вкладку “OAuth2”.
  4. В списке “Scopes” выбрать “bot”.
  5. Скопировать ссылку и перейти по ней в браузере.
  6. Выбрать сервер, на который будет добавлен бот.

Теперь мы можем проверить работу двух команд, созданных ранее:

Заключение

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

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

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

Вопросы и пожелания можно оставлять в комментариях. Спасибо за внимание!

Источник

Оцените статью