Как сделать бота в Discord
Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.
Как создать Дискорд-бота на основе discord.js
На практике API Discord представляет собой удобный инструмент, позволяющий создать, а впоследствии использовать бота. С его помощью легко разработать помощника для решения разных задач, а далее задать необходимый набор команд. Для примера рассмотрим общий алгоритм создания бота для музыки. При правильном подходе он сможет проигрывать, пропускать и останавливать музыкальные файлы. Кроме того, в его функции будет входить поддержка очереди на проигрывание мелодии.
- Войдите на сайт discord.com/developers/applications/.
- Жмите на кнопку New Application.
- Введите название будущего бота Дискорд, к примеру, Music Bot.
- Перейдите на вкладку Bot, а после жмите на кнопку Add Bot.
Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:
- Переместитесь в раздел OAuth2 и выберите Bot в панели Scopes.
- Укажите необходимые разрешения для проигрывания музыки и чтения.
- Копируйте созданный URL и вставьте его в веб-проводник.
- Выберите сервер, куда нужно добавить URL.
- Жмите на кнопку авторизации (Authorize).
На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:
- Создайте модули проекта с применением nmp init.
- Ответьте на несколько вопросов, которые необходимы, чтобы создать бота в Дискорд.
- Сделайте два файла, где будет вестись работа — touch index.js && touch config.json.
- Откройте проект в редакторе, к примеру, с помощью VS Code с применением приказа code.
- Установите группу зависимостей, необходимых для дальнейшей работы — npm install discord.js ffmpeg-binaries opusscript ytdl-core –save.
- Продолжите создание файла на config.json. На этом этапе сохраните префикс и токен для бота.
- Войдите на портал создания Дискорд и копируйте токен из раздела 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(`$
> else if (message.content.startsWith(`$
message.channel.send(‘You need to enter a valid command!’)
После получения списка команд, которые можно запустить, переходите к их созданию.
Добавление песен
Здесь нужна гильдия, песня и библиотека ytdl (должна быть установлена заранее). Сделайте 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(`$
В раздел 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.
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();
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(`$
> else if (message.content.startsWith(`$
message.channel.send(‘You need to enter a valid command!’)
async function execute(message, serverQueue) <
Источник статьи: http://discordgid.ru/kak-sozdat-bota/
Как создать нового бота в Дискорде
Так как сделать бота в Дискорде без знания языков программирования практически невозможно, то единственный способ, который поможет осуществить задуманное — редактирование уже существующего проекта. Но даже для этого необходимо понимать основные принципы.
Создание бота
Далее мы подробно рассмотрим, как сделать бота в Discord не имея глубоких знаний в программировании. Для этого мы будем использовать JavaScript. Дополнительные материалы для работы загрузите по ссылке.
Этап 1: Подготовка
- Загрузите node.js на ПК через официальный сайт.
- Заранее создайте новую папку, где и будут храниться данные проекта.
- Установите модуль Дискорда в только что созданную директорию (у нас это bot). Запустите командную строку и введите «cd Desktop/bot» (актуально, если вы создали папку с названием bot на рабочем столе) и нажмите «Enter». После этого введите «npm install discord.js —save».
- Перейдите на официальный сайт Discord и найдите вкладку для разработчиков. Здесь выберите «My Apps» и нажмите «New App».
- Укажите название, описание, выберите картинку и подтвердите действия с помощью кнопки «Создать».
- Перейдите в настройки и отметьте параметр «Общественный бот».
- Нажмите на кнопку «Создать бота». Если появится ошибка, то попробуйте написать имя латинскими буквами.
- Авторизуйте бота на сервере по ссылке. Для этого замените в адресной строке браузера «Client ID» на значение из параметров приложения.
- Выдайте все необходимые разрешение и подтвердите действия.
Если вы все сделали правильно, то bot появится на сервере. Его можно будет найти в списке участников.
Этап 2: Добавление команд
После подготовительного этапа и создания «оболочки» необходимо прописать команды для бота. Для примера мы добавим самую простую — ответ на запрос. Для этого понадобится простой текстовый редактор (например, блокнот), но лучше использовать специальную программу notepad++ (доступна бесплатно). Выполните следующие действия:
- В первой строке введите «const Discord = require(‘discord.js’);».
- Во второй — «const client = new Discord.Client();».
- В третьей — «var prefix = ‘++’». Вместо «++» можете указать любой другой префикс. Именно с него будут начинаться все команды.
Внимание! Везде нужно вводить текст из кавычек, но самих кавычек («») быть не должно. Все остальные символы обязательны.
Теперь будем создавать команду для ответа на сообщение (здесь же, следующей строчкой). Выглядеть она будет следующим образом:
- on(‘message’, message =><
- if(message.author === client.user) return;
- if(message.content.startsWith(prefix + ‘start’)) <
- message.channel.sendMessage(‘Welcome to server);
- >
- >);
- В данном примере, сообщение «Welcome to server» будет появляться в ответ на нашу ++start. По желанию вы можете заменить текст на любой другой, но вводите его латиницей.
- В последней строке добавьте «client.login(‘токен’);», где вместо слова токен укажите его значение. Узнать его можно в параметрах.
На этом этап программирования можно считать оконченным.
Этап 3: Тестирование
Теперь необходимо сделать так, чтобы бот появился в списке онлайн участников. Для этого вновь открываем командную строку и вводим «cd Desktop/bot» (для перехода в созданную папку) и «node bot.js». Если вы все сделали правильно, то он появится онлайн.
Введите «++start» в текстовом канале Дискорда. В ответ bot должен отправить сообщение «Welcome to server». Если этого не происходит, а в процессе вы меняли префикс и другие значения, то попробуйте перепроверить код. Особое внимание уделите наличию пробелов и скобок.
Как видите, сделать бота для Дискорд сервера не так уж и сложно. Если у вас есть знания в области программирования, то аналогичным образом вы можете добавить другие дополнительные команды.
Источник статьи: http://discord-bot.ru/kak-sozdat-novogo-bota-v-diskorde
Создание простого Discord бота с помощью библиотеки discord.py
Асинхронная библиотека discord.py содержит все что нужно для бота, с помощью нее даже можно работать с голосовыми каналами сервера. В этой статье я расскажу как создать простенького бота для вашего discord сервера.
Получение токена и Client ID для вашего бота
Для получения токена и ID бота небходимо создать свое приложение и в разделе General Information скопировать Client ID.
А в разделе настроек создать бота и скопировать его токен. Задача не сложная, думаю все с этим справятся.
Собственно пишем бота
Устанавливаем discord.py с помощью pip:
После успешной установки создаем файл bot.py, где будем писать бота.
Импортируем все необходимое:
Создаем переменную с вашим токеном, про который я писал выше:
Для начала сделаем простенькую команду, аргумент которой бот будет просто пересылать:
И в конце запускаем бота с вашим токеном:
В итоге должно получится вот такое:
Теперь необходимо добавить бота на сервер. Сделать это можно с помощью ссылки:
Число необходимых прав можно получить в разделе настроек бота.
Теперь можно запускать бота:
После нескольких секунд, можно заметить его в сети:
И наконец-то попробовать отправить команду:
Заключение
Вот так можно легко запустить у себя на сервере бота. Как можно заметить библиотека делает практически все за тебя и остается только добавлять свой функционал с использованием python. В следующий раз я покажу как следить за событиями, подключатся к голосовым каналам (избегая проблем с linux и Windows), использовать роли и права участников и другое.
Надеюсь, статья была Вам полезна, удачи!
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
Похожие публикации
Как развлечь себя с помощью vk api
Пишем бота-кликера на Python для Lineage 2
Создаем Telegram бота на API.AI
Заказы
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Комментарии 9
“В следующий раз я покажу как следить за событиями, подключатся к голосовым каналам (избегая проблем с linux и Windows), использовать роли и права участников и другое.”
- Когда следующий раз?
- А то это все просто, но часто на этом все и заканчивается, хотелось бы как раз почитать не про «простого» бота.
Спасибо.
Честно, статья ни о чем, коих уже в интернетах много, нужно было либо сразу выпускать стэк статей, либо расширить эту раз в 5.
Такие примитивные скрипты есть в начале README.md и в примерах каждой библиотеки для Discord, мы умеем их читать, для этого не нужна статья. Надо было писать не про запуск, а сразу про подводные камни и сложные моменты. А ещё лучше поделиться своим элегантным решением какой-нибудь типовой задачи — например, трансляция интернет-радио в голосовой канал, какое-то интересное использование вебхуков или ранговая система для сервера с генерацией красивой карточки участника с помощью ImageMagick. Это было бы интересно и полезно. Пару строк кода для создания бота можно было бы пояснить по ходу, читающие это должны быть знакомы с синтаксисом Python и всё поймут.
Буду ждать следующих статей. Спасибо.
Поймите правильно, но таких статей есть, наверное, десятки. Было бы лучше подробное описание, почему так-то и так-то, как оно работает изнутри и вообще зачем это и это.
Источник статьи: http://habr.com/ru/post/494600/