МЕНЮ

Как сделать Дискорд бота на Python и добавить его на сервер?После выхода на канале ролика про базовые основы программирования на Python вы часто спрашиваете, на чём ещё можно практиковаться в свободное время, помимо написания различных скриптов с упором в ИБ. Как по мне, если вы пока не работаете непосредственно в этой сфере, а просто на досуге занимаетесь самостоятельным освоением языка – наилучшей практикой на начальном этапе, будет написание ботов. Да, разумеется, боты не являются чем-то новым и уникальным. С самого начала популяризации интернета боты применялись и применяются до сих пор во всевозможных мессенджерах, играх и в соц. сетях.

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

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

Для того, чтобы запустить по уму Discord-бота, нам понадобится высокоскоростная виртуальная машина на внешнем сервере. Я буду использовать вариант с VDS от моих друзей из SprintBox.

SprintBox специализируется на предоставлении мощных VDS-серверов. Настроить их можно по своему усмотрению.

Хотите – ставьте готовый популярный дистрибутив выбрав его инсталляшку из вариантов в панели управления сервиса. Любите полный контроль? Пожалуйста. Загружаейте собственную операционную систему вручную.

Можно установить сервер в игре майнкрафт, задеплоить любые типы ботов. Для VK, Телеги и, разумеется, Discord’а. Куда ж без него. Но прежде, чем начинать творить весь интересный движ, нужно сначала пройти регистрацию на офф сайте.

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

kak sdelat discord bota na phyton 01

Перед нами сразу открывается панель управления с вариантами выбора для установки дистрибутива.

kak sdelat discord bota na phyton 02

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

kak sdelat discord bota na phyton 03

Давайте создадим новый бокс и инсталлируем на него образ Ubuntu.

kak sdelat discord bota na phyton 04

Выбираем из списка тариф. Тут кстати есть небольшой нюанс. Несмотря на то, что оплата указывается за месяц, запустить бокс вы сможете даже если на вашем счету будет всего 100 рублей. А если ещё заюзаете мой промокод, то получите 50% кэшбек при первом пополнении счёта.

kak sdelat discord bota na phyton 05

После успешного пополнения, можно запустить созданный бокс через клиент VNC.

kak sdelat discord bota na phyton 06

Подготовка окружения

Логинимся под пользователем Root используя те данные, которые пришли нам в письме на указанный при регистрации ящик и обновляем пакеты системы до самой последней версии.

root@box-10000:~# apt-get update

root@box-10000:~# apt-get upgrade

После того, как процесс завершится – устанавливаем менеджер пакетов PIP. Он нам понадобится для загрузки библиотек.

root@box-10000:~# apt-get install python3-pip

Чтобы иметь возможность устанавливать разные модули разным проектам накатив virtualenv.

root@box-10000:~$ pip3 install virtualenv --user

Затем добавим виртуальное окружение в системные пути:

root@box-10000:~$ export PATH=$HOME/.local/bin:$PATH

И наконец создадим само окружение. Здесь python - произвольное имя нового окружения, а ключ --system-site-packages задействует модули, уже установленные в системе.

root@box-10000:~$ virtualenv --system-site-packages python

Активируем эту историю. И сразу ставим библиотеку Discord.

root@box-10000:~$ source ~/python/bin/activate

(python) root@box-10000: pip install discord

Далее добавляем директорию для бота, не выходя из виртуального окружения:

(python) root@box-48639:~$ mkdir discobot

И создаем конфиг.

(python) root@box-48639:~$ vim discobot/config.py

Вносим изменения в содержание.

settings = {

'token': ‘ODQ2MzkxFDQ2OTI5Dzc2Njc1.YKu1Fg.OqAK4hPGz6NzXaF6lsXWYRssstk',

'bot': 'My Awesome Bot',

'id': 849291049223776275,

    'prefix': '!'

}

На этом этапе нам понадобятся данные с сайта месседжера. Заходим на https://discord.com/ и авторизовавшись создаём приложение. Для этого захоим в раздел «Разработчикам», «Applications» и нажимаем на кнопку «New Application».

kak sdelat discord bota na phyton 07

Выбираем имя для приложения.

kak sdelat discord bota na phyton 08

По желанию можно задать описание и загрузить аватарку.

kak sdelat discord bota na phyton 09

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

kak sdelat discord bota na phyton 10

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

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

kak sdelat discord bota na phyton 11

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

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

kak sdelat discord bota na phyton 13

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

kak sdelat discord bota na phyton 14

Собственно, на этом этапе всё. Бот на сервере.

kak sdelat discord bota na phyton 15

Давайте вернёмся к редактированию конфига в Phyton. В строчку Токен, как вы уже догадались вносится ранее скопированный в дискорде набор символов, имя, ID из раздела «General Information», и префикс с символом на который бот будет реагировать, как на начало команды.

settings = {

'token': ‘ODQ2MzkxFDQ2OTI5Dzc2Njc1.YKu1Fg.OqAK4hPGz6NzXaF6lsXWYRssstk',

'bot': 'My Awesome Bot',

    'id': 849291049223776275,

    'prefix': '!'

}

Далее давайте напишем код для нашего бота. Создаем bot.py и сразу отредактируем его через Vim:

(python) root@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(), {'__file__': activate_this})
import discord
from discord.ext import commands
from config import settings

Затем обозначим боту, с какого символа будут начинаться его команды.

bot = commands.Bot(command_prefix = settings['prefix'])

И создадим первую команду — бот будет отправлять ответ с текстом “Working” на сообщение “!status”.

@bot.command()
async def status(ctx):
    await ctx.reply('Working')

Добавляем в код функцию запуска.

bot.run(settings['token'])

Закроем редактор и запустим наш бот.

(python) root@box-48639:~$ python discobot/bot.py

Пробуем отправить тестовое сообщение в Discord. Гуд. Всё работает. 

kak sdelat discord bota na phyton 16

Фишка для бота Discord

Теперь давайте добавим несколько крутых фишек. Например, прикрутим к боту какое-нибудь рандомное API. Открываем файл бота:

root@box-48639:~$ vim ~/discobot/config.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

В результате бот сможет генерировать рандомные мемы.

kak sdelat discord bota na phyton 17

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

Так у SprintBox данная база с такими статьями предоставлена прямо на сайте. Один из таких материалов, как раз и лёг в основу нашего сегодняшнего сюжета. Так что настоятельно рекомендую ознакомиться, если интересно саморазвитие в бото-строении.

Ну а у меня на сегодня всё. Не забудьте поставить лайк и написать комментарий интересна ли вам в целом тема создания ботов. Что вы хотите увидеть в дальнейших уроках по Python и на каком уровне в его освоении вы находитесь в данный момент.

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

Не можешь понять, куда делись видео по взломам и хакингу? Они переехали в наш уютный паблик в телеге

telegram chanel

Хочешь больше контента? Подписывайся на YouTube-канал!

Курс «Диплом за неделю»

Пособие «Библия вардрайвинга»

Курс Cisco «CCNA: Introduction to Networks»

© 2024. IT-спец. Денис Курец.