User interface which communicates with backend Bot name: sen_jun_bot
System:
- install CMake (Ubuntu: sudo apt-get -y install cmake)
- install / download & build Boost >= 1.74 (https://www.boost.org/doc/libs/1_80_0/more/getting_started/unix-variants.html)
- install OpenSSL (Ubuntu: sudo apt-get install libssl-dev)
- install zlib (Ubuntu: sudo apt-get install zlib1g-dev)
- install libcurl (Ubuntu: sudo apt-get install libcurl4-openssl-dev)
- install fmt v8.1.1 (Ubuntu: sudo apt install libfmt-dev or use readme in https://fmt.dev/latest/usage.html)
- install spdlog v1.9.2 (Ubuntu: sudo apt install libspdlog-dev or use readme in https://github.com/gabime/spdlog)
- install prometheus-cpp v1.1.0
Also after the command "git clone" you should add submodules with $ git submodule update --init --recursive
This command initializes others dependencies:
- tgbot-cpp v1.7 (https://github.com/reo7sp/tgbot-cpp/releases/tag/v1.7)
- cpp-httplib v0.11.2 (https://github.com/yhirose/cpp-httplib.git)
- nlohmann/json v3.11.2 (https://github.com/nlohmann/json/tree/v3.11.2)
- kvstor v1.1.0 (https://github.com/khva/kvstor)
- base64 v1.0.0 (https://github.com/khva/base64)
- magic-enum v0.8.1 (https://github.com/Neargye/magic_enum/releases)
- rapidcsv v8.75 (https://github.com/d99kris/rapidcsv.git)
Don't forget to add bot-settings.json file into accomodation/etc/ before building. You can find template for config in accomodation/etc/bot-settings-template.json
Bot config should be the first argument in the command line for starting: ./telegram_bot /your/path/to/config.json
Текущее стояние бота:
- Возвращает курсы со статусами из хэндимена
- Получает последнюю активную главу с задачами, парсит ответ от хендимена.
- Авторизация через сцену
- Отправляет решение на проверку в хендимен. И обновляет прогресс пользователя по ответу из хендимена При проверке решение - стоит фриз на отправку нового решение (в конфиге настраивается время фриза). Бот скажет, что не может отправить на проверку новое решение, пока не проверит предыдущее(либо до окончания времени фриза, на случай, если проверка затянулась)
- Ставит курс в прогресс при первом обращении и комплитед при завершении
- Обновляет прогресс главы
- Апи пользователя:
- получение всех возможных курсов со статусами
- повторить последний максимальный активный кусочек
- перейти к оглавлению (главы с иконками статусов)
- синхронизировать учетку с сайтом. Ожидается команда /sync your_key После нажатия на Далее - кнопка пропадает
- Чтение конфига бота из джейсона
- В параграфе с задачками и не пустыми подсказками появляется кнопка "Посмотреть подсказку"
- При редактировании сообщение бот реагирует на это, как на отправку нового сообщения.
- В кеше храним главы в виде параграфов. Если пользователю попадается задача - берем состояние задачи из хендимена
- В отдельном потоке сохраняем состояние бота в файл раз в заданный в конфиге период