Введение
Это первая статья про создание бота для Discord. В конце статьи находятся ссылки на следующие части, со временем они будут дополняться. Статьи следуют друг за другом, без каких-либо "информационных дыр". Если нашли опечатку или неточность, отпишите о проблеме в комментариях или в личных сообщениях, максимально оперативно всё поправим! А теперь переходим непосредственно к созданию бота.
В данной части
Создание тестового сервера
Включение режима разработчика
Создание приложения и получение токена
Добавление бота на сервер
Установка библиотеки discord.py
Первые строчки кода
Создание сервера
Гайд будет максимально подробный, поэтому и начинать будем с создания тестового сервера. Зачем он нужен? Лишь для вашего удобства и безопасности, если у вас уже есть большой сервер, тем более не стоит сразу добавлять на него разрабатываемого бота. Никто не защищён от багов и дыр в безопасности.
Заходим в дискорд
-
Слева видим список серверов, листаем в самый низ до кнопки "Создать сервер".
Создаём сервер по любому из предложенных шаблонов.
Включаем режим разработчика
Это необязательно, но очень желательно. В режиме разработчика появляются некоторые полезные элементы для удобства разработки, например, в меню пользователя появляется пункт, который позволяет скопировать его ID.
![](https://habrastorage.org/getpro/habr/upload_files/33f/d4e/44a/33fd4e44ade17ed54422b2a7374db193.png)
Чтобы включить этот режим, заходим в настройки.
![](https://habrastorage.org/getpro/habr/upload_files/d1c/bc5/6d5/d1cbc56d59d15fe6412cdeb227ec7501.png)
В категории "Настройки приложения" ищем "Расширенные".
![](https://habrastorage.org/getpro/habr/upload_files/8b0/dd1/d9f/8b0dd1d9f32e23bee48814234e52cf02.png)
И включаем режим разработчика.
![](https://habrastorage.org/getpro/habr/upload_files/ae9/3e8/c8d/ae93e8c8d8991d4ebb6902f98711324c.png)
Получение токена
Для начала нам нужно зайти на страницу создание приложений и нажать New Application.
![](https://habrastorage.org/getpro/habr/upload_files/101/9ff/afc/1019ffafcf19d9dd18fc30ea5c2fadc5.png)
После этого вам предложат назвать ваше приложение (Потом можно будет изменить).
![Создание приложени Создание приложени](https://habrastorage.org/getpro/habr/upload_files/6de/0a5/875/6de0a5875cc6c6b2d56914360b567ec9.png)
После создания, попадаем на страницу настройки приложения. В меню выбираем "Bot".
![](https://habrastorage.org/getpro/habr/upload_files/237/fc1/984/237fc19849c86fe5f6947d25ef40fcb6.png)
На данной странице нажимаем на "Add Bot". Скопируем токен и сохраним его.
![](https://habrastorage.org/getpro/habr/upload_files/17a/b92/881/17ab92881b598501f3cc4b64a51fa3db.png)
Так же, сразу можно выдать дополнительные разрешения боту, чтобы потом об этом не задумываться.
![](https://habrastorage.org/getpro/habr/upload_files/283/167/0c9/2831670c98f3e5570e3106193bbe47fb.png)
Добавление бота на сервер
В меню ищем пункт OAuth2 –> URL Generator.
![](https://habrastorage.org/getpro/habr/upload_files/d0d/e3c/24f/d0de3c24ffc7304afe2e375d697e27d4.png)
В поле SCOPES выбираем bot и applications.commands. В появившемся ниже поле выбираем Administrator, это более удобно для тестирования. Но когда бот будет работать в продакшене, лучше выставлять только те права, которые правда нужны, потому что никто не защищён от потери токена, а с правами администратора это может стать очень большой проблемой.
![](https://habrastorage.org/getpro/habr/upload_files/4cf/432/a87/4cf432a87c6131d77f67126cdf68f234.png)
Копируем появившеюся ниже ссылку и вставляем в адресную строку браузера. Если у вас не выполнен вход в браузере, его необходимо произвести. После чего выбираем тестовый сервер из списка и нажимаем "Продолжить" и далее "Авторизовать".
![](https://habrastorage.org/getpro/habr/upload_files/b41/077/e16/b41077e1699a80cda29388d40e3d3919.png)
Ура! Наш бот на тестовом сервере!
![](https://habrastorage.org/getpro/habr/upload_files/94e/df7/4fc/94edf74fc5bcfbf4d03384d9c3431cf7.png)
Установка библиотеки
Для начала нужно установить python, данный этап не расписан, но желательно установить версию 3.10 (Последняя версия на момент написания 3.10.5). Если у вас Windows, для проверки можете использовать следующую команду
py --version
В ответ получите версию вашего python. Устанавливать будем не стабильную, а разрабатываемую версию, для этого пропишем следующую команду. (Это можно делать уже внутри проекта). Хотя некоторые IDE устанавливаю git вместе с собой, можете скачать его отдельно.
py -m pip install git+https://github.com/rapptz/discord.py
Если всё же хотите установить стабильную, релизную версию, пропишите следующую команду.
py -3 -m pip install -U discord.py
py -3 -m pip install -U discord.py[voice]
Подробнее про установку библиотеки и саму библиотеку можно прочитать тут.
Первые строчки кода
Пришло время писать код! Программирование в статьях будет происходить в PyCharm, хоть это и довольно тяжёлая IDEA, она удобная и бесплатная для студентов.
Не советую создавать проект через внутренний интерфейс, может появиться множество ненужных папок и файлов, вместо этого создадим папку проекта вручную и откроем как пустой проект.
Для этого заходим в PyCharm, далее File –> Open.
![](https://habrastorage.org/getpro/habr/upload_files/b53/cb9/c83/b53cb9c83445a5664132abe90cfbb7bd.png)
P.s. Не обращайте внимания на другую тему IDE.
В появившемся окне ищем созданную папку, выбираем её и нажимаем "Ok". Обратите внимание на то, что нужно просто нажать по папке, а не проваливаться в неё.
![](https://habrastorage.org/getpro/habr/upload_files/c3c/4cf/810/c3c4cf810ef8645bf4c950a37dd1655f.png)
Если PyCharm автоматически не создал main.py, создайте его вручную.
Вставляем код ниже и запускаем.
import discord # Подключаем библиотеку
from discord.ext import commands
intents = discord.Intents.default() # Подключаем "Разрешения"
intents.message_content = True
# Задаём префикс и интенты
bot = commands.Bot(command_prefix='>', intents=intents)
# С помощью декоратора создаём первую команду
@bot.command()
async def ping(ctx):
await ctx.send('pong')
bot.run('token')
![](https://habrastorage.org/getpro/habr/upload_files/128/5e4/e0f/1285e4e0fba557525676e8c14956606e.png)
В консоли вы увидите логи запуска бота. Они могут быть красными, не бойтесь, сначала прочитайте сами сообщения, они скорее, всего просто информационные.
![](https://habrastorage.org/getpro/habr/upload_files/2e7/baa/779/2e7baa779b7d51eaa2e03d7421df5fe4.png)
Идём в дискорд и используем нашу первую команду.
![](https://habrastorage.org/getpro/habr/upload_files/830/3e6/ee8/8303e6ee884d8eae61d1bf88d57505e2.png)
Немного объясним данную структуру. Поскольку это обычная команда, вся информация хранится в ctx(Переменная одноимённого класса). Она имеет следующие поля:
['args',
'author',
'bot',
'channel',
'cog',
'command',
'command_failed',
'guild',
'invoked_parents',
'invoked_subcommand',
'invoked_with',
'kwargs',
'me',
'message',
'prefix',
'subcommand_passed',
'valid',
'voice_client']
И следующие команды:
['fetch_message',
'history',
'invoke',
'pins',
'reinvoke',
'reply',
'send',
'send_help',
'trigger_typing',
'typing']
Если вы знакомы с синтаксисом языка, то данный список можно получить с помощью встроенной функции dir.
print(dir(ctx))
На более правильно прочитать документацию про Context.
Заключение
Сразу отвечу всем комментаторам. Да - подобных статей море, в том числе есть официальная документация. Но поскольку в моих планах есть создать серию статей, я хотел бы, что бы в них было описано всё, начиная с самых азов.
И небольшое примечание. Статьи строятся на основании того, что у вас есть опыт и знания программирования на python.
Следующие части
Скоро...
Комментарии (5)
kgleba
13.07.2022 18:31Даёшь больше однотипных статей!
https://habr.com/ru/post/511454, https://habr.com/ru/post/494600/
Немного комментариев по существу (АКА предложения по улучшению):
Никто не защищён от багов и дыр в безопасности.
Интересно узнать, о каких "дырах в безопасности" речь? От проблем самой платформы или утечки токена не спасет ничего, настройка же уровней доступа делается буквально в пару строк кода.
Это необязательно, но очень желательно. В режиме разработчика появляются некоторые полезные элементы для удобства разработки, например, в меню пользователя появляется пункт, который позволяет скопировать его ID.
Из статьи мы узнаем, что режим разработчика добавляет возможность копировать ID – и тут у новичка (а статья на начинающих, как я небезосновательно полагаю, и рассчитана) появляется вопрос: А зачем он, собственно, нужен? Позднее это нигде не раскрывается.
Если у вас Windows, для проверки можете использовать следующую команду.
А почему только Windows?.. А почему точка на конце?
Программирование в статьях будет происходить в PyCharm, хоть это и довольно тяжёлая IDEA, она удобная и бесплатная для студентов.
Произошло программирование =)
Кажется, каждый читающий хабы "Программирование" и "Python" знаком с основами языка и работы с IDE. Я бы на вашем месте убрал из статьи все подробные гайды "как открыть файл в пайчарме" – уважайте время вашего читателя)P.s. Не обращайте внимания на другую тему IDEA.
Больше воды – лучше статья, не правда ли? Но, к сожалению, оно так не работает.
И откуда вы так упорно берете букву А в IDE? Integrated Development Environment ведь...Вставляем код ниже и запускаем.
Вы пытались... Объяснить код редкими комментариями через неизвестные начинающему термины и не дать их определения – вот что нам нужно!
Зачем, скажите мне на милость, картинка с IDE с ровно тем же самым кодом под блоком Хабра?!
они скорее всего просто
Скорее всего выделяется запятыми.
они, скорее всего, простоИдём в дискорд и используем нашу первую команду.
<...>Немного объясним данную структуру.
О том, что речь идет о ctx, я понял лишь по следующим предложениям... А первые несколько секунд я вообще не понимал, как произошел переход. Может быть, вы вырезали кусок статьи и забыли поменять структуру предложения?
Если вы знакомы с синтаксисом языка, то данный список можно получить с помощью встроенной функции dir.
Если честно, мне кажется, что в данном случае лучше было бы даже просто дать ссылку на документацию и отправить читателей копошиться самим. Да, по названиям интуитивно понятно, за что отвечает тот или иной функционал, но список полей не дает абсолютно никакого понимания, какие аргументы принимаются, в каком контексте вызываются, и прочее, прочее...
minusd Автор
13.07.2022 18:34Даёшь больше однотипных статей!
Прочитай внимательнее заключение, я знаю что подобных статей много, но это будет серия, поэтому я хочу что бы она была полная и подробная. По этой же причине показаны такие вещи как открытие и запуск в IDE.
kgleba
13.07.2022 18:41А в чем проблема была указать ссылку на одну из имеющихся уже статей и сразу приступить к написанию второй, продвинутой части?
И небольшое примечание. Статьи строятся на основании того, что у вас есть опыт и знания программирования на python.
По этой же причине показаны такие вещи как открытие и запуск в IDE.
IlyaBurdin
Листаем
Чтобы
Чтобы
В появившемся
Вручную
Синтаксисом
я хотел бы, чтобы в них было
minusd Автор
Всё исправил, спасибо!