Введение Всем привет! Недавно я написал бота Discord для гильдии World of Warcraft. Он регулярно собирает данные об игроках с игровых серверов и пишет в Discord сообщения о том, что в гильдию вступил новый игрок или что старый игрок покинул гильдию.
Между собой мы прозвали этого бота Farmhand. В этой статье я решил поделиться своим опытом и рассказать, как сделать такой проект. По сути, мы реализуем микросервис на .
NET Core: напишем логику, интегрируем с API сторонних сервисов, покроем тестами, упакуем в Docker и разместим в Heroku. Кроме того, я покажу вам, как реализовать непрерывную интеграцию с помощью Github Actions. Вам не нужны никакие знания об игре.
Я написал материал, чтобы абстрагироваться от игры и сделал заглушку для данных об игроках.
Но если у вас есть учетная запись Battle.net, вы можете получить реальные данные.
Для понимания материала от вас требуется хотя бы минимальный опыт создания веб-сервисов с использованием платформы ASP.NET и некоторый опыт работы с Docker.
План
На каждом этапе мы постепенно будем увеличивать функционал.
- Давайте создадим новый проект веб-API с одним контроллером /check. При обращении к этому адресу мы отправим строку «Hello!» в чате Discord.
- Научимся получать данные о составе гильдии с помощью готовой библиотеки или заглушки.
- Научимся кэшировать полученный список игроков, чтобы при последующих проверках можно было найти различия с предыдущей версией списка.
Обо всех изменениях мы будем писать в Discord.
- Давайте напишем Dockerfile для нашего проекта и разместим проект на хостинге Heroku.
- Давайте рассмотрим несколько способов заставить код выполняться периодически.
- Мы реализуем автоматическую сборку, запуск тестов и публикацию проекта после каждого коммита на мастер.
Шаг 1. Отправьте сообщение в Discord
Нам нужно будет создать новый проект веб-API ASP.NET Core. Создание нового проекта – это одна из фундаментальных вещей, которую я не буду подробно описывать.При работе над проектом используйте сервис Github для хранения кода.
В будущем мы будем использовать несколько возможностей Github. Добавим в проект новый контроллер
Далее нам понадобится вебхук с вашего сервера Discord. Webhook — это механизм отправки событий.[ApiController] public class GuildController : ControllerBase { [HttpGet("/check")] public async Task<IActionResult> Check(CancellationToken ct) { return Ok(); } }
В данном случае это адрес, на который можно отправлять простые http-запросы с сообщениями внутри.
Получить его можно в пункте «Интеграции» в настройках любого текстового канала на вашем сервере Discord.
Создание вебхука Давайте добавим вебхук в appsettings.json нашего проекта.
Позже мы переместим его в переменные среды Heroku. Если вы не знакомы с тем, как работать с конфигурацией в проектах ASP Core, сначала изучите Эта тема .
{
Теги: #api #docker #C++ #.
NET #bot #wow #dotnet #microservice #discord #heroku
-
Как Создать Счет С Помощью Excel
19 Oct, 24 -
Российский Vr-Рынок: Почему Бы И Нет?
19 Oct, 24 -
Концепт «Зимнего» Мобильного Телефона
19 Oct, 24