Telegram-бот, который позволяет быстро выучить или запомнить что-то!
Бот может задавать вопросы из списка в случайном порядке и проверять, правильно ли ответил пользователь.
- Секции вопросов, которые позволяют разделить вопросы по темам
- Список вопросов для каждой секции.
- Админ панель, которая позволяет администратору легко создавать и удалять вопросы и секции вопросов
- Статистика прохождения опросов пользователем
- Скачайте репозиторий
- Создайте .env файл:
cp .env.example .env - Вставьте токен бота в файл .env
- Выполните
docker-compose up
Установите переменные окружения в файле .env.example
Переменные:
BOT_TOKEN - токен бота
BOT_WEBHOOK_URL - адрес вебхука. При необходимости используйте туннель
BOT_WEBHOOK_PORT - порт, на котором будет запущено приложение.
ADMIN_TG_IDS - список телеграм айди пользователей, имеющих доступ к админ панели. Разделены запятой(123,456)
Тесты используют in-memory базу данных SQLite и не требуют запущенного Docker-контейнера.
- Установите зависимости:
pip install -r dev_requirements.txt - Выполните
python -m pytestиз корневой директории
- Язык: Python 3.12
- Фреймворк для бота: Aiogram 3
- База данных: MySQL 8.0
- ORM: SQLAlchemy 2.0 (асинхронный режим с asyncio)
- Контейнеризация: Docker, Docker Compose
- Тестирование: Pytest, pytest-asyncio
-
handlers (Presentation): Обработка входящих запросов от Telegram API.
-
service (Business Logic): Изолированное ядро приложения со всей бизнес-логикой (use_cases, repo, uow).
-
database (Data Access): Реализация хранения данных с помощью SQLAlchemy.
Такая структура позволяет легко заменять внешние компоненты (например, UI или БД), не затрагивая бизнес-логику.