Создание бота на основе discord.py. Часть 1

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Введение

Это первая статья про создание бота для Discord. В конце статьи находятся ссылки на следующие части, со временем они будут дополняться. Статьи следуют друг за другом, без каких-либо "информационных дыр". Если нашли опечатку или неточность, отпишите о проблеме в комментариях или в личных сообщениях, максимально оперативно всё поправим! А теперь переходим непосредственно к созданию бота.

В данной части

  1. Создание тестового сервера

  2. Включение режима разработчика

  3. Создание приложения и получение токена

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

  5. Установка библиотеки discord.py

  6. Первые строчки кода

Создание сервера

Гайд будет максимально подробный, поэтому и начинать будем с создания тестового сервера. Зачем он нужен? Лишь для вашего удобства и безопасности, если у вас уже есть большой сервер, тем более не стоит сразу добавлять на него разрабатываемого бота. Никто не защищён от багов и дыр в безопасности.

  1. Заходим в дискорд

  2. Справа видим список серверов, листам в самый низ до кнопки "Создать сервер".

  3. Создаём сервер по любому из предложенных шаблонов.

Включаем режим разработчика

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

Что включить этот режим, заходим в настройки.

В категории "Настройки приложения" ищем "Расширенные".

И включаем режим разработчика.

Получение токена

Для начала нам нужно зайти на страницу создание приложений и нажать New Application.

После этого вам предложат назвать ваше приложение (Потом можно будет изменить).

Создание приложени
Создание приложени

После создания, попадаем на страницу настройки приложения. В меню выбираем "Bot".

На данной странице нажимаем на "Add Bot". Скопируем токен и сохраним его.

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

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

В меню ищем пункт OAuth2 –> URL Generator.

В поле SCOPES выбираем bot и applications.commands. В появившимся ниже поле выбираем Administrator, это более удобно для тестирования. Но когда бот будет работать в продакшене, лучше выставлять только те права, которые правда нужны, потому что никто не защищён от потери токена, а с правами администратора это может стать очень большой проблемой.

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

Ура! Наш бот на тестовом сервере!

Установка библиотеки

Для начала нужно установить python, данный этап не расписан, но желательно установить версию 3.10 (Последняя версия на момент написания 3.10.5). Если у вас Windows, для проверки можете использовать следующую команду.

py --version

В ответ получите версию вашего python. Устанавливать будем не стабильную, а разрабатываемую версию, для этого пропишем следующую команду. (Это можно делать уже внутри проекта).

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.

P.s. Не обращайте внимания на другую тему IDEA.

В появившемся окне ищем созданную папку, выбираем её и нажимаем "Ok". Обратите внимание на то, что нужно просто нажать по папке, а не проваливаться в неё.

Если 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')

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

Идём в дискорд и используем нашу первую команду.

Немного объясним данную структуру. Поскольку это обычная команда, вся информация хранится в 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))

Заключение

Сразу отвечу всем комментаторам. Да - подобных статей море, в том числе есть официальная документация. Но поскольку в моих планах есть создать серию статей, я хотел что бы в них было описано всё, начиная с самых азов.

И небольшое примечание. Статьи строятся на основании того, что у вас есть опыт и знания программирования на python.

Следующие части

Скоро...

Источник: https://habr.com/ru/post/676390/


Интересные статьи

Интересные статьи

В статье рассмотрены различные подходы к организации практической безопасности сетей, построенных на оборудовании MikroTik, в том числе при помощи дополнительного открытого программного обеспечения, р...
После праздничных каникул (это было в январе) я решил немного поработать Android разработчиком на пол ставки, дабы совмещать работу с учебой. Ещё в декабре я познакомилс...
Продолжение статьи о написании своей прошивки для фотополимерного LCD 3D-принтера. Первая часть лежит тут. В ней было описан первый этап — создание графического пользовательского ...
В следующий раз, оказавшись на вокзале, потратьте минутку своего внимания и обратите его на надпись, ровно посередине в самом низу вагона поезда, на котором унесетесь в очередной долгожданный отп...
В начале 2010-х годов объединенная группа специалистов из Стенфордского университета, Массачусетского университета, The Tor Project и SRI International представила результаты своего исследова...