Удаление команды discord py

Обновлено: 05.07.2024

Я расскажу о создании Discord-бота на Python, который запускает сборку проекта в Unity Cloud Build и создаёт ссылку на скачивание для QA из внешней команды.

Настройка и поддержка полноценного CI занимает много времени и средств. При этом команде чаще всего нужна базовая функциональность. Так случилось и с нашим проектом. Потребовался простой способ сборки проекта в Unity Cloud Build и передачи его на внешний QA.

На начальном этапе были такие условия и ограничения:

  • репозиторий проекта — Bitbucket (есть поддержка GitHub и GitLab);
  • наличие лицензии Unity Teams Advanced, которая разблокирует доступ к Unity Cloud Build;
  • ограниченный доступ к Unity Cloud Build для части команды;
  • сборка версии проекта не после каждого коммита в ветку, а только после завершения работы над функциональностью или багом.

Для этих целей был создан Discord-бот на Python (этот язык выбрал, как самый быстрый и удобный для автоматизации). Он позволил команде запускать сборку версии в Unity Cloud Build, и после её успешного завершения формировал ссылку для скачивания QA, как внутри команды, так и вне её.

Настройка проекта в Unity Cloud Build


Далее выбираем Create project и вводим имя нашего проекта (для примера, назовем его Dungeon Crawl Prototype):


После этого в списке проектов появится созданный проект. Переходим к нему и выбираем SET UP CLOUD BUILD:


На следующей странице выбираем с каким Git репозиторием будем интегрировать наш проект. В нашем случае это GitHub:


Подключаем GitHub и переходим к настройке сборки проекта:


Добавляем новую сборку SETUP NEW TARGET:


Выбираем платформу. В нашем примере было создано две сборки под Windows 64 и Android:


Вводим название Target Label, в Branch ветку в git репозитории. Для тестового примера был установлен флаг Auto Detect Version:


Для примера был выбран Debug ключ и тестовый Bundle ID:


Далее нажимаем NEXT: BUILD, после чего настройка сборки завершена. Те же шаги необходимо повторить и для других платформ. На этом заканчиваем настройку Unity Cloud Build. В будущем понадобится создать Discord-оповещения для старта построения сборки и результата сборки. Сделаем это после настройки сервера.

Создание и настройка Discord-гильдии (сервера)


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

  • bot для нашего бота, ci для пользователей:
  • ci для пользователей, которые смогут давать команды боту:
  • qa для тех, кому будет доступна ссылка на скачивания сборки.


Далее создадим три канала:


На этом настройка гильдии закончена. Следующим шагом будет создание Discord-бота.

Создание и настройка Discord-бота


Далее создаем бота. Для этого переходим в созданное приложение, выбираем вкладку Bot и нажимаем Add Bot:


Далее необходимо настроить разрешения для бота. Переходим в пункт OAuth2 и выбираем следующие опции:


После выбора всех опций копируем url кнопкой Copy. Затем в браузере переходим по скопированной ссылке, выбираем Discord-гильдию, созданную ранее, и проверяем, выставленные разрешения:


Далее в настройках Discord-гильдии добавляем нашего бота в роль bot, которую создали ранее:


Осталось настроить Discord-оповещения для Unity Cloud Build (о начале и завершении сборки, и её результате):

Настройка Discord оповещения для Unity Cloud Build

Возвращаемся в Unity Cloud Build и переходим в раздел Notifications, в котором выбираем Integrations page:


Далее создаем новую интеграцию, нажав на NEW INTEGRATION:


Выбираем Discord и нажимаем NEXT:




На этом настройка оповещений и окружения завершена. На следующем этапе создадим Discord-бот на Python.

Создание Discord-бота на Python

Настройка проекта

Руководитель направления (Technical Product Manager)

Sportmaster Lab , Липецк, Санкт-Петербург, Москва , От 200 000 до 300 000 ₽

Создаём новый проект и добавляем в него requirements.txt с таким содержанием:

Так же создаём файл .env с переменными:

DISCORD_GUILD — название Discord гильдии.

DISCORD_BOT_NAME — имя бота.

DISCORD_TOKEN — можно получить на Discord Developer Portal в разделе Bot, скопировав токен:


UNITY_API_KEY можно получить в настройках Unity Cloud Build:


UNITY_ORGANIZATION_ID и PROJECT_ID так же можно получить в Unity Cloud Build. Для этого открываем конфигурацию сборки и нажимаем на EDIT BASIC INFO:


Далее в строке браузера можно увидеть UNITY_ORGANIZATION_ID и PROJECT_ID:


PROJECT_NAME — имя проекта, который собирается в Unity Cloud Build:

Написание бота

Далее я опишу основные моменты реализации Discord-бота. Создаём класс DiscordBot который наследуется от discord.Client. Он реализует API, позволяющее подключиться к Discord гильдии:

Далее необходимо подключиться к Discord-гильдии:

Метод on_ready, позволяет реагировать на событие подключения бота к Discord-гильдии:

Для работы с Unity Cloud Build создаём класс UnityCloudBuildWorker:

Запуск бота как сервис

Для удобства запуска бота на удаленном сервере мы добавили в репозиторий возможность собрать и запустить бота в качестве Docker-контейнера. Для этого были добавлены Dockerfile:

И Makefile, в котором описаны команды up и down для запуска и остановки контейнера с ботом:

Читайте также: