- Python 3.9
- Python-Telegram-Bot 20.4
- Язык SQL
- Poetry для управления зависимостями
- Asyncio для написания асинхронного кода на основе корутин
- Переменные окружение python-dotenv
- Aiosqlite для асинхронных запросов к БД SQLite
В БД загружаются все координаты контрольных точек и соответствующие задания. Райдер - участник гонки - регистрируется в боте и начинает гонку, отправляя стартовую геолокацию и свою фотографию, которые бот фиксирует, пересылая данные в специальный чат организаторов. Получив порядковый номер, райдер при помощи специальной команды получает контрольную точку и задание, которое он должен выполнить по достижению метки. Райдер вновь отправляет геометку и фотографию, бот фиксирует время прохождения точки в базе данных и пересылает данные райдера в чат администраторов. Райдер по той же команде получает следующую контрольную точку. В случае, если райдер прошел все контрольные точки, он получает соответствующее сообщение и свое время прохождения, которое фиксируется от времени старта прохождения первой контрольной точки до времени финиша последней. Результаты прохождения всех точек фиксируются и выводятся при вызове специальной команды.
Организаторы должны иметь возможность иметь доступ к списку участников, контрольных точек и результатов, изменять/удалять их. Должна быть верификация по секретному ключу, которая предоставит тому или иному участнику (юзеру в БД) права администратора.
/start
- выводит документацию со списком доступных команд
/register
- регистрирует пользователя в базе данных
/start_race
- стартует гонку для зарегистрированного пользователя,
фиксирует стартовые геолокацию и фотографию участника. Обновляет список
контрольных точек для участника, вызвавшего команду. Если пользователь не
зарегистрирован, выводит сообщение об этом
/go
- выводит контрольную точку
зарегистрированному и начавшему гонку участнику, фиксирует геолокацию и фото
выполнения по достижению точки
/admin
- для зарегистрированного пользователя начинает процедуру
получения прав администратора через секретный ключ
/participants
- выводит список всех зарегистрированных
пользователей с информацией об участии в гонке и админских правах
/points
- выводит список контрольных точек с координатами
и заданиями к выполнению
/results
- выводит участников и их контрольные точки, со временем
старта и временем завершения для каждой из контрольных точек. Доступен просмотр
результатов как всех участников, так и определенного участника по его ID
из списка /participants
/overall_results
- список участников, которые завершили гонку,
пройдя все контрольные точки. Отсортирован по времени прохождения в порядке
возрастания
/add_point
- добавляет контрольную точку с указанием координат
и задания для выполнения по достижению
/del_points
- удаляет контрольные точки с
возможностью удаления как всех контрольных точек, так и некоторых из них по ID
точек
/del_participants
- удаляет всех зарегистрированных пользователей
из базы данных, кроме администраторов. Требует подтверждения действия
/del_results
- удаляет записи всех результатов из базы данных.
Требует подтверждения действия
- Клонировать репозиторий и перейти в него в командной строке bash
git clone git@github.com:d2avids/race_bot.git
- Перейти в папку с проектом
cd race_bot/
- Установить менеджер зависимостей Poetry
pip install poetry
- Установить зависимости
poetry install
- Активировать виртуальное окружение
poetry shell
- Создать файл env и заполнить его переменными окружения по примеру файла env_example
touch .env
- Запустить бот
python race_bot.py
Имя: David Saidov
Email: delightxxls@gmail.com