Бот Виселица в Discord

Несколько слов

После того как я набрался знаний на Java я решил создать какой-то сервис, который бы приносил пользу обычным людям. Мне пришло в голову сделать Hangman бот в Discord. Вообще это не первый мой бот который я сделал для этой платформы, но это сейчас самый успешный. Кстати бот полностью OpenSource: GitHub Hangman

Как реализован?

Саму логику поначалу я хотел найти в интернете, но путного там ничего не нашел и мне пришлось самому написать логику, кстати она доступна всем ТЫК. В момент создания бота я еще очень плохо понимал ООП и как создавать игры для несколько игроков, чтобы они не мешали друг другу. Но в процессе я быстро понял что можно игры хранить в коллекции:

ConcurrentMap<Long, Hangman> activeHangman = new ConcurrentHashMap<>();

Следующую проблему которую предстояло решить так это откуда брать слова для игр? В первую очередь я был нацелен на Английскую аудиторию и проблем с поиском слов не было. Был какой-то сервис у которого можно было одним запросом взять все слова, что и сделал. А вот потом я решил разделить код на микросервисы. Да у меня была запущена своя API для получения слов которая кстати доступна ТУТ.

Какие новые функции появились спустя 2 года?

  1. Теперь играть можно в соревновательном режиме против других игроков. /competitive
  2. Появилась доска почёта: /leadboard
  3. Полностью проведен рефакторинг кода. Много что сломалось, но починил быстро.

Как строились запросы?

GET: https://api.megoru.ru/api/word

Давай уже картинки показывай

С помощью команды /hg любой игрок может создать игру. Кстати недавно добавил поддержку совместной игры. /multi @user


А вот так засчитывает введенные буквы


Кстати логотип и сами картинки статуса игры делал на заказ у замечательной девушки.

Куда будет двигаться проект в будущем?

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


23.05.2021