Как Я Сделал Бота Discord Для Игровой Гильдии На .Net Core



Введение Всем привет! Недавно я написал бота Discord для гильдии World of Warcraft. Он регулярно собирает данные об игроках с игровых серверов и пишет в Discord сообщения о том, что в гильдию вступил новый игрок или что старый игрок покинул гильдию.

Между собой мы прозвали этого бота Farmhand. В этой статье я решил поделиться своим опытом и рассказать, как сделать такой проект. По сути, мы реализуем микросервис на .

NET Core: напишем логику, интегрируем с API сторонних сервисов, покроем тестами, упакуем в Docker и разместим в Heroku. Кроме того, я покажу вам, как реализовать непрерывную интеграцию с помощью Github Actions. Вам не нужны никакие знания об игре.

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

Но если у вас есть учетная запись Battle.net, вы можете получить реальные данные.

Для понимания материала от вас требуется хотя бы минимальный опыт создания веб-сервисов с использованием платформы ASP.NET и некоторый опыт работы с Docker.



План

На каждом этапе мы постепенно будем увеличивать функционал.

  1. Давайте создадим новый проект веб-API с одним контроллером /check. При обращении к этому адресу мы отправим строку «Hello!» в чате Discord.
  2. Научимся получать данные о составе гильдии с помощью готовой библиотеки или заглушки.

  3. Научимся кэшировать полученный список игроков, чтобы при последующих проверках можно было найти различия с предыдущей версией списка.

    Обо всех изменениях мы будем писать в Discord.

  4. Давайте напишем Dockerfile для нашего проекта и разместим проект на хостинге Heroku.
  5. Давайте рассмотрим несколько способов заставить код выполняться периодически.

  6. Мы реализуем автоматическую сборку, запуск тестов и публикацию проекта после каждого коммита на мастер.



Шаг 1. Отправьте сообщение в Discord

Нам нужно будет создать новый проект веб-API ASP.NET Core. Создание нового проекта – это одна из фундаментальных вещей, которую я не буду подробно описывать.

При работе над проектом используйте сервис Github для хранения кода.

В будущем мы будем использовать несколько возможностей Github. Добавим в проект новый контроллер

  
   

[ApiController] public class GuildController : ControllerBase { [HttpGet("/check")] public async Task<IActionResult> Check(CancellationToken ct) { return Ok(); } }

Далее нам понадобится вебхук с вашего сервера Discord. Webhook — это механизм отправки событий.

В данном случае это адрес, на который можно отправлять простые http-запросы с сообщениями внутри.

Получить его можно в пункте «Интеграции» в настройках любого текстового канала на вашем сервере Discord.

Как я сделал бота Discord для игровой гильдии на .
</p><p>
NET Core

Создание вебхука Давайте добавим вебхук в appsettings.json нашего проекта.

Позже мы переместим его в переменные среды Heroku. Если вы не знакомы с тем, как работать с конфигурацией в проектах ASP Core, сначала изучите Эта тема .



{

Теги: #api #docker #C++ #.

NET #bot #wow #dotnet #microservice #discord #heroku

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.