Skip to content

whatarefuck/CtfClubBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

169 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Telegram CTF Club Bot

Этот проект представляет собой Telegram-бота, созданного с использованием фреймворка Aiogram, SQLAlchemy и Alembic. Бот предназначен для управления CTF-клубом в университете, чтобы отслеживать задания, учет нарушений и участие в соревнованиях.

Оглавление

Функциональность

Бот предназначен для помощи в управлении CTF-клубом и включает следующие функции:

  • Регистрация участников клуба и создание их профилей.
  • Добавление задач и отслеживание их выполнения.
  • Отслеживание участия и начисление очков за участие в CTF-соревнованиях.
  • Система "жизней", которая позволяет участникам нарушить дедлайны только ограниченное количество раз.
  • Просмотр рейтинговой таблицы участников.
  • Уведомление о приближении дедлайнов и нарушениях.

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/username/telegram-ctf-bot.git
    cd telegram-ctf-bot
  2. Создайте структуру файлов проекта:

    bash setup_files.sh
  3. Установите необходимые зависимости:

    pip install -r requirements.txt

Настройка базы данных

  1. Создайте файл .env в корневой директории проекта и добавьте параметры подключения к базе данных PostgreSQL:

    BOT_TOKEN=yourtoken
    DATABASE_URL=postgresql://ctf:ctf@localhost:5432/ctf
    ADMIN_NICKNAMES=admin1,admin2,admin3
    
  2. Настройте подключение в 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       # Скрипт для создания структуры файлов

Создание миграций (начать с 3го шага после редактирования моделей SqlAlchemy)

  1. Инициализируйте Alembic для управления миграциями базы данных:

    alembic init alembic
  2. Настройте alembic.ini, чтобы указать параметры подключения к базе данных. Найдите строку sqlalchemy.url и измените её:

    sqlalchemy.url = postgresql://ctf:ctf@localhost:5432/ctf
  3. Создайте файл миграции для создания таблиц С СООТВЕТСТВУЮЩИМ СООБЩЕНИЕМ МИГРАЦИИ:

    alembic revision --autogenerate -m "Your migration message (desribe what you change in models)"
  4. Выполните миграции:

    alembic upgrade head

Использование

Запустите бот, выполнив команду:

python bot/main.py

Бот начнет регистрацию участников и будет готов принимать команды.

Схема базы данных

![Схема базы данных](bot/database/db scheme.png)

На изображении выше представлена схема базы данных, которая включает таблицы для участников, задач, соревнований, их участий и нарушений.

Основные команды бота

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

About

Bot for CTF club

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors