Бот Виселица в Discord
Несколько слов
После того как я набрался знаний на Java я решил создать какой-то сервис, который бы приносил пользу обычным людям. Мне пришло в голову сделать Hangman бот в Discord. Вообще это не первый мой бот который я сделал для этой платформы. Кстати бот полностью OpenSource: GitHub Hangman
Как реализован?
Саму логику поначалу я хотел найти в интернете, но путного там ничего не нашел и мне пришлось самому написать логику, кстати она доступна всем ТЫК. В момент создания бота я еще очень плохо понимал ООП и как создавать игры для несколько игроков, чтобы они не мешали друг другу. Но в процессе я быстро понял что можно игры хранить в коллекции:
ConcurrentMap<Long, Hangman> activeHangman = new ConcurrentHashMap<>();
Следующая проблема, которую предстояло решить, — это откуда брать слова для игр. В первую очередь я был нацелен на английскую аудиторию, и проблем с поиском слов не было. Я нашел сервис, у которого можно было одним запросом получить все слова, что я и сделал. Затем я решил разделить код на микросервисы. У меня была запущена своя API для получения слов, которая, кстати, доступна. ТУТ.
Какие новые функции появились спустя 2 года?
- Теперь играть можно в соревновательном режиме против других игроков.
/competitive
- Появилась доска почёта:
/leadboard
- Полностью проведен рефакторинг кода. Много что сломалось, но починил быстро.
- Теперь можно играть вместе с неограниченным количеством игроков.
- Реализовал поддержку игры против ChatGPT.
Как строились запросы?
GET: https://api.megoru.ru/api/word
Картинки
С помощью команды /hg
любой игрок может создать игру. Кстати недавно добавил поддержку
совместной игры. /multi @user
А вот так засчитывает введенные буквы
Кстати логотип и сами картинки статуса игры делал на заказ у замечательной девушки.
Куда будет двигаться проект в будущем?
На самом деле проект уже можно сказать полностью сделан и добавлять туда почти нечего. Скорее всего это конец разработки и поддержки обновлениями. Нужно двигаться дальше, но не забывать с чего начинал свой путь.
23.05.2021