Язык программирования дискорд бота
Как создать Discord бота с помощью Python
Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.
Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.
Мы будем использовать целый ряд инструментов, в том числе Discord API, библиотеки Python, и платформы облачных вычислений под названием Repl.it.
Как создать учетную запись Discord Bot
Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.
Вот шаг к созданию учетной записи Discord Bot.
1. Убедитесь, что вы вошли на сайт Discord.
3. Щелкните кнопку «Новое приложение».
4. Дайте приложению имя и нажмите «Создать».
5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить действие, нажав «Yes, do it!»
Оставьте настройки по умолчанию для Public Bot и Require OAuth2 Code Grant.
Ваш бот создан. Следующим шагом будет копирование токена.
Этот токен является паролем вашего бота, поэтому не сообщайте его никому. Это может позволить кому-то войти в ваш бот и делать разные плохие вещи.
Вы можете регенерировать токен, если он случайно станет доступен.
Как пригласить вашего бота присоединиться к серверу
Теперь вам нужно подключить своего пользователя-бота к серверу. Для этого вы должны создать для него URL-адрес приглашения.
Перейдите на вкладку «OAuth2». Затем выберите «бот» в разделе «scopes».
Теперь выберите нужные разрешения для бота. Наш бот будет в основном использовать текстовые сообщения, поэтому нам не нужно много разрешений. Вам может потребоваться больше, в зависимости от того, что вы хотите, чтобы ваш бот делал. Будьте осторожны с разрешением «Администратор».
После выбора соответствующих разрешений нажмите кнопку «Copy» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.
Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».
Чтобы добавить бота, вашей учетной записи необходимы разрешения «Управление сервером».
Теперь, когда вы создали пользователя-бота, мы начнем писать код Python для бота.
Как написать код для базового бота Discord с помощью библиотеки discord.py
Как создать реплику и установить disocrd.py
Создайте новый Repl и выберите «Python» в качестве языка.
Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:
Если вы используете Windows, вы должны вместо этого использовать следующую строку:
Как настроить события Discord для вашего бота
Сделаем бота, который отвечает на конкретное сообщение. Этот простой код бота вместе с объяснением кода взят из документации discord.py. Позже мы добавим в бота дополнительные функции.
Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.
Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:
Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.
У нас есть код для бота, поэтому теперь нам просто нужно его запустить.
Как запустить бота
Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.
Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:
Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».
Как улучшить бота
Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».
Этот бот будет отвечать сообщением ‘Hello!’ всякий раз, когда кто-то отправляет сообщение, содержащее грустное или удручающее слово.
Любой желающий сможет добавить ободряющие сообщения для использования бота, а отправленные пользователем сообщения будут храниться в базе данных Repl.it.
Бот также вернет случайную вдохновляющую цитату из API, когда кто-то наберет в чате сообщение «$inspire».
Мы начнем с добавления функции «$inspire».
Как добавить в бота вдохновляющие цитаты
Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote() и обновить код нашего бота, чтобы вызвать функцию.
Вот обновленный код. После кода я объясню новые части.
Функция get_quote() очень проста. Во-первых, она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.
Затем внутри функции мы используем json.loads() для преобразования ответа API в JSON. Методом проб и ошибок я понял, как перевести цитату из JSON в нужный строковый формат. Цитата возвращается из функции в виде строки.
Последняя часть кода обновляется ближе к концу. Ранее он искал сообщение, которое начиналось с «$hello». Теперь он ищет «$inspire». Вместо того, чтобы возвращать «Hello!», Он получает цитату quote = get_quote() и возвращает цитату.
На этом этапе вы можете запустить свой код и попробовать его.
Как добавить в бота обнадеживающие сообщения
Теперь мы реализуем функцию, при которой бот отвечает обнадеживающими сообщениями, когда пользователь отправляет сообщение с грустным словом.
Как добавить грустные слова в бота
Для начала нам нужно создать список Python, содержащий грустные слова, на которые будет отвечать бот.
Добавьте следующую строку после создания переменной client :
Не стесняйтесь добавлять в список больше слов.
Как добавить в бота обнадеживающие сообщения
Теперь мы добавим список ободряющих сообщений, которыми бот ответит.
Добавьте следующий список после созданного вами списка sad_words :
Как и раньше, не стесняйтесь добавлять в список другие фразы по вашему выбору. Сейчас я использую всего три элемента, потому что позже мы добавим возможность пользователям добавлять больше ободряющих фраз для использования ботом.
Как отвечать на сообщения
Вот обновленный код:
Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота.
Как сделать бота в Discord
Пользователи часто спрашивают, как создать бота в Дискорде и тем самым получить программу с необходимыми функциями. Сразу отметим, что достижение такой цели — непростая задача, а реализовать ее можно несколькими способами, к примеру, на основе discord.js, на Python или с помощью программы Discord Bot Maker.
Как создать Дискорд-бота на основе discord.js
На практике API Discord представляет собой удобный инструмент, позволяющий создать, а впоследствии использовать бота. С его помощью легко разработать помощника для решения разных задач, а далее задать необходимый набор команд. Для примера рассмотрим общий алгоритм создания бота для музыки. При правильном подходе он сможет проигрывать, пропускать и останавливать музыкальные файлы. Кроме того, в его функции будет входить поддержка очереди на проигрывание мелодии.
Выполните следующие шаги:
Этих действий достаточно, чтобы создать бота Дискорд, после чего нужно его добавить на сервер с помощью OAuth2 URL-генератора. Сделайте следующие шаги:
На следующем этапе нужно создать проект с применением терминала. Для этого создайте директорию и перейдите ее с помощью следующих команд — mkdir musicbot && cd musicbot. Далее сделайте следующее:
Теперь нужно создать код 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 с названием очереди, где будут храниться песни.
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);
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.
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(`$
> else if (message.content.startsWith(`$
message.channel.send(‘You need to enter a valid command!’)
async function execute(message, serverQueue) <
Создание простого Discord бота с помощью библиотеки discord.py
Асинхронная библиотека discord.py содержит все что нужно для бота, с помощью нее даже можно работать с голосовыми каналами сервера. В этой статье я расскажу как создать простенького бота для вашего discord сервера.
Получение токена и Client ID для вашего бота
Для получения токена и ID бота небходимо создать свое приложение и в разделе General Information скопировать Client ID.
А в разделе настроек создать бота и скопировать его токен. Задача не сложная, думаю все с этим справятся.
Собственно пишем бота
Устанавливаем discord.py с помощью pip:
После успешной установки создаем файл bot.py, где будем писать бота.
Импортируем все необходимое:
Создаем переменную с вашим токеном, про который я писал выше:
Для начала сделаем простенькую команду, аргумент которой бот будет просто пересылать:
И в конце запускаем бота с вашим токеном:
В итоге должно получится вот такое:
Теперь необходимо добавить бота на сервер. Сделать это можно с помощью ссылки:
Число необходимых прав можно получить в разделе настроек бота.
Теперь можно запускать бота:
После нескольких секунд, можно заметить его в сети:
И наконец-то попробовать отправить команду:
Заключение
Вот так можно легко запустить у себя на сервере бота. Как можно заметить библиотека делает практически все за тебя и остается только добавлять свой функционал с использованием python. В следующий раз я покажу как следить за событиями, подключатся к голосовым каналам (избегая проблем с linux и Windows), использовать роли и права участников и другое.
Надеюсь, статья была Вам полезна, удачи!
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Читают сейчас
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
Похожие публикации
Погода-бот: DialogFlow + OpenWeather + Python
Аналитика для Telegram-ботов, написанных на Python
Экспорт Google Forms + загрузка Google Script через REST API (Python)
Вакансии
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Минуточку внимания
Комментарии 9
“В следующий раз я покажу как следить за событиями, подключатся к голосовым каналам (избегая проблем с linux и Windows), использовать роли и права участников и другое.”
Честно, статья ни о чем, коих уже в интернетах много, нужно было либо сразу выпускать стэк статей, либо расширить эту раз в 5.
Такие примитивные скрипты есть в начале README.md и в примерах каждой библиотеки для Discord, мы умеем их читать, для этого не нужна статья. Надо было писать не про запуск, а сразу про подводные камни и сложные моменты. А ещё лучше поделиться своим элегантным решением какой-нибудь типовой задачи — например, трансляция интернет-радио в голосовой канал, какое-то интересное использование вебхуков или ранговая система для сервера с генерацией красивой карточки участника с помощью ImageMagick. Это было бы интересно и полезно. Пару строк кода для создания бота можно было бы пояснить по ходу, читающие это должны быть знакомы с синтаксисом Python и всё поймут.
Буду ждать следующих статей. Спасибо.
Поймите правильно, но таких статей есть, наверное, десятки. Было бы лучше подробное описание, почему так-то и так-то, как оно работает изнутри и вообще зачем это и это.
Создание бота Дискорд на основе discord.js
Предыстория
Я заинтересовался созданием бота для Discord, но всё что я нашёл, было пару видео на YouTube, да и то там просто писали код, без всяких пояснений. Поэтому я хочу начать серию статей по созданию ботов на основе discord.js.
Получение токена бота
Для начала нам нужно зайти на страницу создание приложений и нажать New Application.
После чего, нам предложат назвать наше приложение. Вводим желаемое название и нажимаем Create. Мы попадаем на страницу настройки приложения, где мы можем поменять название, аватар, описание и тд. Но нам это пока не нужно, переходим во вкладку Bot. И создаём бота.
Осталось только скопировать токен.
Подготовка среды разработки
Для начала нужно установить Node.js и Visual Studio Code (VS code), в последнем собственно и будет происходить процесс создания бота. Запускаем VS code. Открываем папку, в которой будет хранится наш бот. Нажимаем Вид->Терминал, после этого в нижней части приложения должен появится терминал.
Написания «тела» бота
Для начало нужно создать описание бота.
После ввода команды, она будет спрашивать вас данные о боте (можно оставить по умолчанию, просто нажав Enter). В конце она спросит правильно ли всё указано и выведет полученные ответы.
После ввода каждой команды, требуется немного подождать.
Примечание! После ввода команд, могут появится предупреждения, не бойтесь, ничего страшного.
Если вы всё сделали правильно, то в папке бота должно быть следующее.
Далее создаём файл botconfig.json, здесь мы будем хранить основные параметры бота.
Теперь создаём файл index.js, в него копируем следующий код.
И мы на финишной прямой! Пишем в терминале команду для запуска бота.
Примечание! Если вы поменяли название исходного файла, вам нужно указать его.
После чего остаётся добавить бота на сервер по полученной ссылке.
Вот и всё, наш бот готов!
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Читают сейчас
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
Похожие публикации
Легкий сокращатель ссылок на JavaScript, Cloudflare Workers и c Telegram Bot’ом
Создание Discord-бота, используя библиотеку discord.js | Часть №1
Клиент Discord модифицировали для кражи аккаунтов
Вакансии
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Минуточку внимания
Комментарии 12
Если автор сам попробует выполнить свою инструкцию пошагово, то узнает, что первые 2 команды упадут с ошибками.
Там не ошибки, а предупреждения(WARN), и это нормально. К сожалению их нельзя исправить с «моей» стороны.
Спасибо за комментарий, указал это в статье.
Да, уходят предупреждения о No repository field., но там так же есть другие предупреждения.
С npm 5.x (не помню точно какой версии) больше не нужно указывать ключ -S — оно само сохраняет. Для записи в devDependencies ключ -D по-прежнему нужен.
Туториал хороший, но таких же реально десятки в сети на разных языках. Была бы это серия статей, где от просто «Привет, username!» до работы с шардированием, базами данных и создание экономики в боте. Хотя, это спокойно делается за пару часиком работы, но с нуля новичку будет трудно. А целая серия статей гораздо лучше, ведь все в одном стиле, одной теме и вообще один бот.
— А если по теме, я всегда использую такой парсер команд:
Работает безотказно и быстро, да, и выглядит элегантно. Лучшего решения, я не могу представить.
Следующая статья уже в процессе и готова +- на 30%, я использую немного другой способ в собственном боте, но конкретно в данном примере, я решил показать самый простой из возможных вариантов.