Skip to content

d2avids/race_bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Race Bot

Бот, созданный для организации гонок в формате Alleycat race.


Технологии

  • 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