Удаление команды discord py
Я расскажу о создании 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 для запуска и остановки контейнера с ботом:
Читайте также: