Создание discord-ботов на Python
В этой статье мы создаем своего дискорд-бота на боксе с нуля.
Подготовка
Предварительные действия на боксе такие же, как и в нашей статье про Telegram:
- выбираем бокс
- создаем пользователя
- настраиваем окружение
Регистрация бота
Создание бота происходит в два этапа на сайте мессенджера. Сначала создаем приложение: «Разработчикам»(в футере) → «Applications», нажимаем кнопку «New Application» в правой верхней части страницы:
Выбираем имя приложения (выбирайте мудро, хоть его и можно изменить позже):

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

Теперь добавим к нему бота. В меню слева вкладка «Bot» → «Add Bot» → «Yes, do it!».
Токен бота можно получить по кнопке Copy:

Если вдруг токен попал не только в ваши руки, его всегда можно заменить кнопкой Regenerate.
Добавление бота на сервер
Переходим на вкладку «OAuth2» и создаем для него свой URL для приглашения:

Чуть ниже выбираем права для бота. Если это бот для администрирования сервера, то можно, конечно, выбрать «Administrator», но нужно быть осторожными с этим.
Выдаем права, действительно нужные боту для администрирования сервера:

Теперь бота можно добавить на сервер. Копируем ссылку и открываем её в браузере. В диалоговом окне выбираем сервер:

Проверяем его привилегии:

Всё, бот на сервере:

Код бота
Активируем виртуальное окружение и ставим нужную библиотеку:
bot@box-48639:~$ source python/bin/activate (python) bot@box-48639:~$ pip install discord
Добавляем директорию для бота, не выходя виртуального окружения:
(python) bot@box-48639:~$ mkdir discobot
Создаем конфиг бота:
(python) bot@box-48639:~$ vim discobot/config.py
Наполняем его содержимым
settings =
- token — токен бота
- bot — имя бота
- id — application ID: он находится под описанием приложения, в разделе «General Information»
- prefix — если сообщение на сервере начинается с этого символа, бот воспримет его как свою команду.
Дальше код бота. Создаем bot.py и сразу редактируем его vim’ом:
(python) bot@box-48639:~$ vim discobot/bot.py
Первыми строками активируем виртуальное окружение и импортируем нужные модули:
import os, sys activate_this = '/home/bot/python/bin/activate_this.py' with open(activate_this) as f: exec(f.read(), ) import discord from discord.ext import commands from config import settings
Обозначаем боту, с какого символа начинаются его команды:
bot = commands.Bot(command_prefix = settings['prefix'])
И создаем первую команду — бот будет отправлять реплай с текстом “I’M ALIVE!” на сообщение “!status”:
@bot.command() async def status(ctx): await ctx.reply('I\’M ALIVE!')
Добавляем в код функцию запуска:
bot.run(settings['token'])
Закрываем редактор и запускаем бота:
(python) bot@box-48639:~$ python discobot/bot.py
Отправим сообщение в Discord:

Код бота целиком:
import os, sys activate_this = '/home/bot/python/bin/activate_this.py' with open(activate_this) as f: exec(f.read(), ) import discord from discord.ext import commands from config import settings bot = commands.Bot(command_prefix = settings['prefix']) @bot.command() async def status(ctx): author = ctx.message.author await ctx.reply('I\'M ALIVE!') bot.run(settings['token'])
Запуск бота
Создаем Linux-демона — он будет следить, что бот работает. Открываем файл (mlg, если нужно, меняем на своё имя сервиса):
root@box-48639:~# vim /etc/systemd/system/mlg.service
Добавляем в него строки:
[Unit] Description=Noscope Bot After=syslog.target After=network.target [Service] Type=simple User=bot WorkingDirectory=/home/bot/discobot ExecStart=/usr/bin/python3 /home/bot/discobot/bot.py Restart=always [Install] WantedBy=multi-user.target
И запускаем демона:
root@box-48639:~# systemctl daemon-reload root@box-48639:~# systemctl enable mlg root@box-48639:~# systemctl start mlg
Проверить, что всё работает, можно так:
root@box-48639:~# systemctl status mlg
● mlg.service - Noscope Bot Loaded: loaded (/etc/systemd/system/mlg.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-05-05 16:34:46 MSK; 7s ago Main PID: 307021 (python3) Tasks: 3 (limit: 2344) Memory: 21.4M CGroup: /system.slice/mlg.service └─307021 /usr/bin/python3 /home/bot/discobot/bot.py
Дополнение кода бота
Бот улучшается в два этапа:
- добавляем код в файл бота
- перезапускаем бота
Для примера добавим в бота какое-нибудь рандомное API. Открываем файл бота:
bot@box-48639:~$ vim ~/discobot/bot.py
И добавляем в него пару библиотек и ещё одну функцию обработки команд:
import json import requests @bot.command() async def meme(ctx): response = requests.get('https://some-random-api.ml/meme') json_data = response.json() embed = discord.Embed(title = json_data['caption']) embed.set_image(url = json_data ['image']) await ctx.send(embed = embed)
Закрываем файл и перезапускаем демона, чтобы изменения вступили в силу:
root@box-48639:~# systemctl restart mlg
Результатом будет рандомный мем:

Готово! Боты в Discord умеют многое, и мы можем и дальше расширять его возможности, изучая документацию.
Полезные ссылки
- Официальная документация Discord
- Документация discord.py
- GitHub разработчиков модуля
Как в Discord правильно настроить созданного бота
Для управления сервером в Discord существует обширный функционал. Создание бота помогает эффективно организовать работу сервера, выполняя ряд задач. Пользователям доступны различные типы ботов, каждый из которых выполняет определенные функции. В данной статье подробно рассмотрено, как настроить бота в Дискорде на ПК и в мобильной версии приложения.

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

Обзор функционала бота
В первую очередь следует настроить командную строку. Посредством нее бот выполняет свои функции. Для этого необходимо выполнить следующее:
- Проверьте наличие бота в списке участников (если его там нет, значит, не был пройден процесс авторизации);
- В любом из текстовых чатов введите команду «+help» или «/help»;
- Введенные символы будут означать активацию взаимодействия с ботом, о чем подробно будет написано в ответном сообщении.
В момент активации командной строки станут доступными основные функции бота, заложенные его разработчиками. Для получения боле подробной информации можно перейти на официальный сайт, откуда был скачан конкретный бот.

Предоставление прав доступа
После ознакомления с функционалом бота, необходимо выполнить следующий этап настроек — присвоение роли. Сделать это можно таким образом:
- Нажмите на строку с названием сервера, чтобы открыть его меню;
- Выберите раздел «Настройки сервера»;
- Нажмите на пункт «Роли»;
- Выберите тип роли, соответствующей конкретному боту, или выберите запуск прав администратора;
- Нажмите на пункт «Права текстовых каналов»;
- Выберите строку «Отправлять сообщения».
Аналогичным образом происходит настройка остальных прав участника. Отредактировать доступ к определенным правам можно в любой момент. При возникновении проблем бот отправит сообщение с указанием на это.

Настройка роли
В некоторых случаях может потребоваться присвоение специфической роли. Иногда пользователи объединяют ботов в отдельную группу. Для присвоения дополнительной роли сделайте следующее:
- Нажмите на раздел «Управление участниками»;
- Выберите пункт «Участники»;
- Найдите в списке бот, для которого необходимо ввести изменения;
- Нажмите на знак «+» рядом с названием бота;
- Выберите подходящую роль из списка (также можно воспользоваться строкой поиска).
Любую роль можно заменить или удалить, действуя по вышеописанному алгоритму.

Настройка бота Discord в мобильном приложении
Зачастую создание бота в мобильной версии Дискорда вызывает у пользователей затруднения. Однако его настройка происходит довольно легко и просто.

Использование функции командной строки
Для ознакомления со свойствами бота и его возможностями необходимо выполнить следующие действия:
- Зайдите на сервер;
- Сделайте свайп влево;
- Откроется список участников;
- Убедитесь, что бот активирован (будет включен значок «В сети»);
- Войдите в текстовый чат;
- Введите команду «+help»;
- Ознакомьтесь с правилами пользования ботом и его функциями.

Добавление роли и редактирование прав
Порядок действий схож с алгоритмом настройки для ПК:
- Нажмите на название сервера;
- Войдите в «Настройки»;
- Перейдите в блок «Управление участникам/и»;
- Нажмите пункт «Роли»;
- Задайте необходимый параметр.
Для каждой роли есть свои индивидуальные настройки: выбор цвета, смена имени, обособление от других участников. Для универсальных ботов лучше применить доступ на правах администратора, активировав соответствующий переключатель.
Частые вопросы:
- Как удалить бота в Discord на сервере
- Как сделать бота, выдающего роли в Discord
- Что такое Дискорд Онлайн, и как им пользоваться
- Как написать своего бота для использования в Discord
