Этот проект представляет собой Telegram-бота, созданного с использованием фреймворка Aiogram, SQLAlchemy и Alembic. Бот предназначен для управления CTF-клубом в университете, чтобы отслеживать задания, учет нарушений и участие в соревнованиях.
- Функциональность
- Установка
- Настройка базы данных
- Структура проекта
- Создание миграций
- Использование
- Схема базы данных
Бот предназначен для помощи в управлении CTF-клубом и включает следующие функции:
- Регистрация участников клуба и создание их профилей.
- Добавление задач и отслеживание их выполнения.
- Отслеживание участия и начисление очков за участие в CTF-соревнованиях.
- Система "жизней", которая позволяет участникам нарушить дедлайны только ограниченное количество раз.
- Просмотр рейтинговой таблицы участников.
- Уведомление о приближении дедлайнов и нарушениях.
-
Клонируйте репозиторий:
git clone https://github.com/username/telegram-ctf-bot.git cd telegram-ctf-bot -
Создайте структуру файлов проекта:
bash setup_files.sh
-
Установите необходимые зависимости:
pip install -r requirements.txt
-
Создайте файл
.envв корневой директории проекта и добавьте параметры подключения к базе данных PostgreSQL:BOT_TOKEN=yourtoken DATABASE_URL=postgresql://ctf:ctf@localhost:5432/ctf ADMIN_NICKNAMES=admin1,admin2,admin3 -
Настройте подключение в
database/db.py, чтобы использовать параметры из.env.
Проект организован следующим образом:
project_root/
|-- bot/
| |-- main.py # Главный файл, откуда запускается бот
| |-- handlers/ # Обработчики команд и состояний
| |-- keyboards/ # Inline и reply клавиатуры
| |-- states/ # FSM состояния
|-- database/
| |-- models.py # SQLAlchemy модели для базы данных
| |-- db.py # Подключение к базе данных
|-- services/
| |-- api_client.py # Работа с API игровых платформ
|-- utils/
| |-- config.py # Конфигурационные параметры
|-- .env # Параметры окружения
|-- requirements.txt # Зависимости проекта
|-- setup_files.sh # Скрипт для создания структуры файлов
-
Инициализируйте Alembic для управления миграциями базы данных:
alembic init alembic
-
Настройте
alembic.ini, чтобы указать параметры подключения к базе данных. Найдите строкуsqlalchemy.urlи измените её:sqlalchemy.url = postgresql://ctf:ctf@localhost:5432/ctf -
Создайте файл миграции для создания таблиц С СООТВЕТСТВУЮЩИМ СООБЩЕНИЕМ МИГРАЦИИ:
alembic revision --autogenerate -m "Your migration message (desribe what you change in models)" -
Выполните миграции:
alembic upgrade head
Запустите бот, выполнив команду:
python bot/main.pyБот начнет регистрацию участников и будет готов принимать команды.

На изображении выше представлена схема базы данных, которая включает таблицы для участников, задач, соревнований, их участий и нарушений.
- /start — Начало работы и регистрация пользователя.
- /profile — Просмотр профиля пользователя.
- /tasks — Просмотр списка задач.
- /submit_task — Отправка выполненного задания.
- /leaderboard — Просмотр таблицы лидеров.
- /violations — Просмотр нарушений.