H2, Spring (web, telegrambots, telegrambotsextensions, data-jpa), Kotlin
- В одном номере живет 1 человек.
- 1 человек может участвовать только в 1 вечеринке
- В 1 вечеринке может участвовать несколько человек
Бот реализует 4 команды:
/start
/create
/show
/select
/start - инициализирует юзера. Нужно вводить после каждого перезапуска приложения.
/create - создать вечеринку (имеется возможность продолжить создание вечеринки, если создание вдруг прервалось).
/show - выводит все незавершенные вечеринки.
/select - позволяет выбрать вечеринку по ее айдишнику из бд. В зависимости от того, являетесь ли ы владельцем, будут разные инлайн кнопки (присоединиться и завершить). При нажатии на кнопку "завершить", всем участникам рассылается сообщение с информацией по вечеринке. Она больше не видна при вводе /show, к ней нет доступа через /select. При присоединении вы становитесь учатсником вечеринки. Нельзя присоединиться к вечеринке, если вы уже участвуете в какой либо вечеринке (создали ее сами или присоединились к существующей)
Алгоритм выбора номера сводится к решению примерно такой задачи:
Имеется набор точек, лежащих на одной прямой. Нужно выбрать такую точку, чтобы суммарное расстояние от нее до других было минимальным. Решить данную задачу можно за
O(1). Искомая точка - это медиана данного набора. Т.е. точка, слева и справа от которой лежит одинаковое количество точек (в случае с четным количеством точек это либо точка с индексомn//2либоn//2 - 1).
Укажите в application.yml логин и пароль год-юзера для вашей бд:
username: <Логин>
password: <Пароль>
Запустить приложение с переменной среды:
TELEGRAM_TOKEN=<Токен тг бота>