Как создать нового бота в Дискорде

22.12.2020 в 21:12

Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.

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

Мы будем использовать целый ряд инструментов, в том числе Discord API, библиотеки Python, и платформы облачных вычислений под названием Repl.it.

Как создать учетную запись Discord Bot

Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.

Вот шаг к созданию учетной записи Discord Bot.

1. Убедитесь, что вы вошли на сайт Discord.

2. Перейдите на страницу приложения.

3. Щелкните кнопку «Новое приложение».

198476535451642758761446974300222952430.png

4. Дайте приложению имя и нажмите «Создать».

131407014344974615788117523197606821050.png

5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить действие, нажав «Yes, do it!»

Оставьте настройки по умолчанию для Public Bot и Require OAuth2 Code Grant.

Ваш бот создан. Следующим шагом будет копирование токена.

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

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

Как пригласить вашего бота присоединиться к серверу

Теперь вам нужно подключить своего пользователя-бота к серверу. Для этого вы должны создать для него URL-адрес приглашения.

Перейдите на вкладку «OAuth2». Затем выберите «бот» в разделе «scopes».

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

После выбора соответствующих разрешений нажмите кнопку «Copy» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.

Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».

Чтобы добавить бота, вашей учетной записи необходимы разрешения «Управление сервером».

Теперь, когда вы создали пользователя-бота, мы начнем писать код Python для бота.

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

Мы будем использовать библиотеку Python discord.py, чтобы написать код для бота. discord.py – это оболочка API для Discord, которая упрощает создание бота Discord на Python.

Как создать реплику и установить disocrd.py

Вы можете разработать бота на своем локальном компьютере с помощью любого редактора кода. Однако в этом уроке мы будем использовать Repl.it, потому что это упростит всем пользователям следовать его указаниям. Repl.it – ​​это онлайн-среда IDE, которую вы можете использовать в своем веб-браузере.

Создайте новый Repl и выберите «Python» в качестве языка.

Чтобы использовать библиотеку discord.py, просто напишите import discord  вверху main.py. Repl.it автоматически установит эту зависимость, когда вы нажмете кнопку «Run».

Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:

python3 -m pip install -U discord.py

Возможно, вам придется использовать pip3 вместо pip.

Если вы используете Windows, вы должны вместо этого использовать следующую строку:

py -3 -m pip install -U discord.py

Как настроить события Discord для вашего бота

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

Сделаем бота, который отвечает на конкретное сообщение. Этот простой код бота вместе с объяснением кода взят из документации discord.py. Позже мы добавим в бота дополнительные функции.

Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.

import discord import os  client = discord.Client()  @client.event async def on_ready():     print('We have logged in as {0.user}'.format(client))  @client.event async def on_message(message):     if message.author == client.user:         return      if message.content.startswith('$hello'):         await message.channel.send('Hello!')  client.run(os.getenv('TOKEN')) 

Когда вы создали своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env. Просто замените os.getenv('TOKEN') токеном.

.env файлы используются для объявления переменных среды. На Repl.it большинство создаваемых вами файлов видны всем, но .env файлы видны только вам. Другие люди, просматривающие публичный ответ, не смогут увидеть содержимое файла .env.

Поэтому, если вы разрабатываете на Repl.it, включайте в файл .env только личную информацию, такую ​​как токены или ключи.

Нажмите кнопку «Добавить файл» и создайте файл с именем .env.

Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:

TOKEN=[paste token here] 

Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.

  1. Первая строка импортирует библиотеку discord.py.
  2. Вторая строка импортирует библиотеку os, но она используется только для получения переменной TOKEN из файла .env. Если вы не используете .env файл, эта строка вам не нужна.
  3. Затем мы создаем экземпляр Client. Это связь с Discord.
  4. Декоратор @client.event() используется для регистрации события. Это асинхронная библиотека, поэтому все делается с помощью обратных вызовов. Обратный вызов – это функция, которая вызывается, когда происходит что-то еще. В этом коде событие on_ready() вызывается, когда бот готов к использованию. Затем, когда бот получает сообщение, вызывается событие on_message().
  5. Триггер событий каждый раз вызывает on_message(), когда принимается сообщение, но мы не хотим, что-то делать, если сообщение от самих себя. Поэтому, если Message.author это то же самое, что и Client.user, просто делаем return.
  6. Затем мы проверяем Message.content, начинается ли с '$hello'. Если да, то бот отвечает 'Hello!' в канал, в котором он использовался.
  7. Теперь, когда бот настроен, последняя строка запускает бот с токеном входа. Он получает токен из файла .env.

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

Как запустить бота

Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.

Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:

В Windows:

py -3 main.py

В других системах:

python3 main.py

Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».

Как улучшить бота

Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».

Этот бот будет отвечать сообщением ‘Hello!’ всякий раз, когда кто-то отправляет сообщение, содержащее грустное или удручающее слово.

Любой желающий сможет добавить ободряющие сообщения для использования бота, а отправленные пользователем сообщения будут храниться в базе данных Repl.it.

Бот также вернет случайную вдохновляющую цитату из API, когда кто-то наберет в чате сообщение «$inspire».

Мы начнем с добавления функции «$inspire».

Как добавить в бота вдохновляющие цитаты

Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote() и обновить код нашего бота, чтобы вызвать функцию.

Вот обновленный код. После кода я объясню новые части.

import discord import os import requests import json  client = discord.Client()  def get_quote():   response = requests.get("https://zenquotes.io/api/random")   json_data = json.loads(response.text)   quote = json_data[0]['q'] + " -" + json_data[0]['a']   return(quote)  @client.event async def on_ready():   print('We have logged in as {0.user}'.format(client))  @client.event async def on_message(message):   if message.author == client.user:     return    if message.content.startswith('$inspire'):     quote = get_quote()     await message.channel.send(quote)  client.run(os.getenv('TOKEN'))

Теперь нам нужно импортировать модуль requests. Этот модуль позволяет нашему коду делать HTTP-запрос для получения данных из API. API возвращает JSON, и модуль json упрощает работу с возвращенными данными.

Функция get_quote() очень проста. Во-первых, она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.

Затем внутри функции мы используем json.loads() для преобразования ответа API в JSON. Методом проб и ошибок я понял, как перевести цитату из JSON в нужный строковый формат. Цитата возвращается из функции в виде строки.

Последняя часть кода обновляется ближе к концу. Ранее он искал сообщение, которое начиналось с «$hello». Теперь он ищет “$inspire”. Вместо того, чтобы возвращать «Hello!», Он получает цитату quote = get_quote() и возвращает цитату.

На этом этапе вы можете запустить свой код и попробовать его.

Как добавить в бота обнадеживающие сообщения

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

Как добавить грустные слова в бота

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

Добавьте следующую строку после создания переменной client:

sad_words = ["sad", "depressed", "unhappy", "angry", "miserable"]

Не стесняйтесь добавлять в список больше слов.

Как добавить в бота обнадеживающие сообщения

Теперь мы добавим список ободряющих сообщений, которыми бот ответит.

Добавьте следующий список после созданного вами списка sad_words:

starter_encouragements = [   "Cheer up!",   "Hang in there.",   "You are a great person / bot!" ] 

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

Как отвечать на сообщения

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

import random

Теперь мы обновим функцию on_message(), чтобы проверять все сообщения, чтобы увидеть, содержат ли они слово из списка sad_words. Если будет найдено грустное слово, бот отправит случайное сообщение из списка.

Вот обновленный код:

async def on_message(message):   if message.author == client.user:     return    msg = message.content    if msg.startswith('$inspire'):     quote = get_quote()     await message.channel.send(quote)        if any(word in msg for word in sad_words):     await message.channel.send(random.choice(starter_encouragements)) 

Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота. 

Источник:

#Python 21 мая в 2020 20K

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

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

  • Ubuntu 18.04
  • Docker 19.03.6
  • npm 6.14.5 

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

Первые шаги

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

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

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

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

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

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

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

  sudo apt update  sudo apt install docker npm

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

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

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

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

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

  mkdir /home/my-discord-bot  cd /home/my-discord-bot  touch package.json

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

  {  "name": "my-discord-bot",   "version": "1.0.0",   "description": "My discord bot",   "author": "Me ",   "main": "app.js",   "keywords": [   "nodejs"    ],   "dependencies": {   "discord.js": "^12.1.1",   "dotenv": "^8.2.0"    }  }

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

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

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

  // Загрузка библиотек и конфигурационного файла  require('dotenv').config();    const Discord = require('discord.js');  const bot = new Discord.Client();  const token = process.env.token;  const prefix = process.env.prefix;    bot.login(token);    // Запуск бота  bot.on('ready', () => {   console.info(`Logged in as ${bot.user.tag}!`);   console.info(`Current prefix: ${prefix}`);  });    // Команда для приветственного сообщения  bot.on('message', message => {   if (message.content === `${prefix}hello`) {   console.log(message.content, message.author);   message.channel.send('hello!');    }  });    // Команда для вывода количества участников сервера  bot.on('message', message => {   if (message.content === `${prefix}server`) {   console.log(message.content, message.author);   message.channel.send(`Сообщество: ${message.guild.name}nУчастников: ${message.guild.memberCount}`);    }  });

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

  token=tokenbot  prefix="!"

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

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

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

  FROM node:14    WORKDIR /home/my-discord-bot  COPY package*.json ./    RUN npm install    COPY . .    EXPOSE 8080    CMD ["node", "app.js"]

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

  node_modules  npm-debug.log

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

  docker build -t authorname/my-discrod-bot  docker run -p 42150:8080 -d authorname/my-discrod-bot

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

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

  docker ps     9fbaf1176c7a        authorname/my-discrod-bot   "docker-entrypoint.s…"   6 seconds ago       Up 4 seconds        0.0.0.0:42150->8080/tcp   pensive_carson

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

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

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

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

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

Заключение

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

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

  • документация библиотеки discordjs;
  • справочная информация по JavaScript;
  • ознакомительный курс по Docker.

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

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

NoName +4

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

Создание бота

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

Этап 1: Подготовка

  1. Загрузите node.js на ПК через официальный сайт.
  2. Заранее создайте новую папку, где и будут храниться данные проекта.
  3. Установите модуль Дискорда в только что созданную директорию (у нас это bot). Запустите командную строку и введите «cd Desktop/bot» (актуально, если вы создали папку с названием bot на рабочем столе) и нажмите «Enter». После этого введите «npm install discord.js —save».
  4. Перейдите на официальный сайт Discord и найдите вкладку для разработчиков. Здесь выберите «My Apps» и нажмите «New App». 
  5. Укажите название, описание, выберите картинку и подтвердите действия с помощью кнопки «Создать».
  6. Перейдите в настройки и отметьте параметр «Общественный бот».
  7. Нажмите на кнопку «Создать бота». Если появится ошибка, то попробуйте написать имя латинскими буквами.
  8. Авторизуйте бота на сервере по ссылке. Для этого замените в адресной строке браузера «Client ID» на значение из параметров приложения.
  9. Выдайте все необходимые разрешение и подтвердите действия.

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

Этап 2: Добавление команд

После подготовительного этапа и создания «оболочки» необходимо прописать команды для бота. Для примера мы добавим самую простую — ответ на запрос. Для этого понадобится простой текстовый редактор (например, блокнот), но лучше использовать специальную программу notepad++ (доступна бесплатно). Выполните следующие действия:

  1. В первой строке введите «const Discord = require(‘discord.js’);».
  2. Во второй — «const client = new Discord.Client();».
  3. В третьей — «var prefix = ‘++’». Вместо «++» можете указать любой другой префикс. Именно с него будут начинаться все команды.

Внимание! Везде нужно вводить текст из кавычек, но самих кавычек («») быть не должно. Все остальные символы обязательны.

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

  1. on(‘message’, message => {
    1. if(message.author === client.user) return;
    2. if(message.content.startsWith(prefix + ‘start’)) {
      1. message.channel.sendMessage(‘Welcome to server);
    3. }
  2. });
  3. В данном примере, сообщение «Welcome to server» будет появляться в ответ на нашу ++start. По желанию вы можете заменить текст на любой другой, но вводите его латиницей.
  4. В последней строке добавьте «client.login(‘токен’);», где вместо слова токен укажите его значение. Узнать его можно в параметрах.

На этом этап программирования можно считать оконченным.

Этап 3: Тестирование

Теперь необходимо сделать так, чтобы бот появился в списке онлайн участников. Для этого вновь открываем командную строку и вводим «cd Desktop/bot» (для перехода в созданную папку) и «node bot.js». Если вы все сделали правильно, то он появится онлайн.

Введите «++start» в текстовом канале Дискорда. В ответ bot должен отправить сообщение «Welcome to server». Если этого не происходит, а в процессе вы меняли префикс и другие значения, то попробуйте перепроверить код. Особое внимание уделите наличию пробелов и скобок.

Заключение

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

Используемые источники:

  • https://dev-gang.ru/article/kak-sozdat-discord-bota-s-pomosczu-python-uhacexvap5/
  • https://timeweb.com/ru/community/articles/sozdaem-bota-dlya-discord-nodejs-docker
  • https://discord-bot.ru/kak-sozdat-novogo-bota-v-diskorde

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий