B1ackMambaX / JavaTelegramBot

Бот на Java, который поможет тебе отточить теорию по языкам программирования
https://t.me/devhelper_kn_bot
4 stars 0 forks source link

Task 2 - Update Architecture #5

Closed begenFys closed 10 months ago

begenFys commented 11 months ago

Задача 2 - Обновление архитектуры

Основная задача: Обновить архитектуру проекта, чтобы сделать поддержку многопользовательского режима у ботов, классы ботов формировать из интерфейса Bot. Идеи реализация многопользовательского режима:

Подзадача: Реализация хранения данных в базе данных PostgreSQL, конкретная реализация:

  1. ORM
  2. Асинхронного подключение к базе

Подзадача со свёздочкой: Деплой через Docker, намётки на CI/CD, конкретная реализация:

  1. Dockerfile для контейнера приложения
  2. docker-compose файл для одновременного поднятия БД и приложения

Пример диалога:

Б: Привет я DeveloperHelperBot, я могу помочь тебе отточить твои теоретические знания о языке JavaScript. Для того чтобы начать введи /quiz. В ответ на вопрос введи только одно слово Пользователь 1: /quiz Б: Тест по ЯП JavaScript, состоит из 10 вопросов. Как правильно задать наследование одного класса от другого? Пользователь 1: extends Б: Отлично, это правильный ответ! (либо в случае неправильного ответа: Неправильно! Правильный ответ: extends)

Пользователь 2(во время теста Пользователя 1): Ты кто такой?!?!? Б: Я не понимаю вас, посмотреть список доступных комманд можно с помощью /help

Возможные пути расширения функционала

vpyzhyanov commented 11 months ago

По сути всё описание задачи состоит из обязательных требований и доп. баллов. Нужно добавить что-то существенное в саму задачу. Например можно реализовать конечный автомат для смены состояний бота.

vpyzhyanov commented 11 months ago

Основная задача: Обновить архитектуру проекта, чтобы сделать поддержку многопользовательского режима у ботов, классы ботов формировать из интерфейса Bot. Идеи реализация многопользовательского режима: Хранить экземпляры логики для каждого пользователя в Hashmap в классе бота Реализовать менеджер состояний бота (конечный автомат) Реализовать клавиатуру для команд

Согласовано