Как сделать bot для Discord на Python, правила написания и установки помощника
Discord с каждым днем становится все более востребованным среди киберспортсменов, любителей компьютерных развлечений и тех, кто привык общаться в сети в тематических чатах. Вместе с повышающимся спросом меняется и функционал мессенджера – появились и подписки на Nitro, и функция бустинга серверов. Сейчас же спрос растет на разработку bot (ботов) для Discord на Python. Как все работает, какие команды писать и чем полезен бот – инструкции ниже!
СОДЕРЖАНИЕ СТАТЬИ:
Создание бота и получение токена
Начинается разработка нового бота для мессенджера с подготовки необходимых инструментов, разрешений и правил:
- Авторизация. На официальном сайте Discord предстоит или зарегистрироваться, или авторизоваться, заполнив ряд текстовых полей.
- Интеграция. Далее – переход на страницу с тематическим контентом для мессенджера и выбор пункта «New Application» в правом верхнем углу.
- Выбор. Следующие шаги связаны непосредственно с наименованием бота (предстоит выбрать название), активацией (пункт «Bot» в меню слева) и выбором настроек (желательно ничего не менять, в особенности поля, связанные с «Public bot» и «Require OAuth2 Code Grant»).
- Токен. После базовой подготовки и до загрузки дополнительных модулей («Module») и API необходимо лишь скопировать «Токен» («Token»), который появится в разделе «Build-A-Bot» после всех действий, описанных выше. Если с копированием (или переносом комбинации) возникнут проблемы, то проще воспользоваться кнопкой «Regenerate» и обновить «Токен».
Приглашение бота на свой сервер
Если с перечисленными выше действиями не возникло проблем, то дальше и вовсе достаточно повторить лишь пять несложных действий.
- Сначала предстоит подготовить URL-ссылку приглашения на вкладке «OAuth2», выбираемую в левой части интерфейса, а после – уже справа – установить галочку напротив пункта «Bot».
- Далее необходимо проставить галочки для Дискорда с разрешениями. Разрабатываемый на Питоне бот понадобится для рассылки сообщений, а потому выделить предстоит все, что связано с «Text Permissions», а еще – «View Channels».
- Если галочки проставлены, то сверху осталось нажать на «Copy» и скопировать ссылку.
- Далее URL-адрес достаточно вставить в адресную строку браузера и нажать на «Enter».
- После перехода появится предложение выбрать сервер, куда интегрировать бота, и кнопка «Авторизовать».
Как написать код для базового бота Discord с помощью библиотеки Discord.py
Разрабатывается бот на основе библиотеки для Python – Discord.ру, упрощающей многие действия и разрешающей загружать специальные модули и шаблоны, а не писать весь код вручную.
Создание реплик
Применять язык программирования Python проще в специальных редакторах кода (Sublime Text, Atom, Visual Code), но при разработке бота легче ориентироваться на специальный сервис Repl.it – специальную IDE, куда уже интегрирована необходимая библиотека discord.py. Достаточно нажать на «Start Coding», а после – ввести комбинацию «import discord» в верхней части main.py. Дальнейшие действия не понадобится – Repl.it без лишних вопросов справится с разверткой необходимой информации и подготовит почву для дальнейшего кода.
Вдохновляющие цитаты
Перед тем, как создать список вдохновляющих цитат, предстоит интегрировать новый модуль Python и ввести «get_quote ()», необходимый для использования запросов из URL-адреса API и возвращения найденных в списке сообщений. Дополнительно понадобится модуль «requests» и еще одна команда – «json.loads()».
Текущий промежуточный код выглядит следующим образом:
Грустные слова
Перед тем, как настраивать реакции бота на «печальные» сообщения, необходимо подготовить простейшую связку-список, которая станет триггером для бота и приведет к выводу дальнейших обнадеживающих сообщений. Добавлять грустные слова предстоит после переменной client:
- sad_words = [«depressed», «unhappy», «miserable»].
- Кроме латиницы поддерживается и кириллица: те же [«sad», «depressed»] мгновенно меняются на [«грустно», «депрессивно»].
Обнадеживающие сообщения
После генерации списка необходимы обнадеживающие «ответы». А именно за списком sad_words предстоит добавить конструкцию следующего типа:
Как и в случае с «грустным» списком, допустима кириллица и привычные выражения, вроде «Взбодрись!». Главное – соблюдать синтаксис – использовать скобки, кавычки.
Настройка событий
Discord основан на событиях, реализованных в мессенджере разными способами, но простейший пример – сообщение. Когда пользователи оставляют в чате хотя бы букву или смайлик, появляется возможность «отреагировать» на произошедшее событие. Почему бы не подготовить бота, способного ответить на появляющееся сообщение?
Весь код, частично позаимствованный из официальной документации discord.py, выглядит так:
Подробности к коду следующие:
- Фразу os.getenv('TOKEN') необходимо заменить «Токеном», выданным в браузере (подробности – выше).
- Client необходим для связи с Discord. А @client.event() регистрирует происходящие события.
- Строки «import discord» и «import os» импортируют ряд библиотек, необходимых для работы.
- Когда боту приходит сообщение, вызывается событие «on_message()»;
- Затем происходит проверка содержимого с помощью «message.content». Если там содержится «$hello», то бот автоматически ответит «Hello!».
Запуск бота
Активируется bot для Discord в Repl.it с помощью соответствующей кнопки в интерфейсе онлайн-среды. А вот в редакторах кода предстоит написать «py3 main.py» или «python3 main.py». Если действия проделаны корректно, то добавленное в чат с ботом сообщение «$hello» приведет к появлению фразы «Hello!».
Как улучшить бота
Сделать bot для Дискорда – половина дела. Важно не останавливаться на достигнутом и осваивать новые инструменты и шаблоны. Например, не помешает интегрировать в бота механизм «реагирования» на печальные или даже безнадежные сообщения, пересылаемые пользователями. Вариантов реализовать идею несколько.
Во-первых, не помешает функция «$inspire», способная выводить заготовленную цитату (в том числе и вдохновляющую) из заранее организованного списка после добавления пользователями соответствующей команды.
Как отвечать на сообщения
Последний шаг – вынужденное обновление бота и добавление связки из списков с командами, и новой функции. Весь алгоритм действий выглядит следующим образом:
- Импорт модуля random и добавление строки «import random» в верхнюю часть кода;
- После необходимо обновить функцию «on_message()» для проверки сообщений, содержащих слова из заранее подготовленного списка «sad_words».
Добавлять новые команды и пользоваться на Python легче, чем кажется. Достаточно попрактиковаться и творчески подойти к процессу, а заодно – чаще заглядывать в документацию, где полно советов для новичков и тех, кто еще обучается искусству подготовки кода.
Зачем писать токен и использовать OS, если можно в JSON файл все поместить и подключить к главному коду. Так-же не понятно зачем использовать event если есть @bot.command :/