Skip to content

Repository files navigation

Memorization bot - Бот для опросов

Telegram-бот, который позволяет быстро выучить или запомнить что-то!

Бот может задавать вопросы из списка в случайном порядке и проверять, правильно ли ответил пользователь.

Возможности бота:

  • Секции вопросов, которые позволяют разделить вопросы по темам
  • Список вопросов для каждой секции.
  • Админ панель, которая позволяет администратору легко создавать и удалять вопросы и секции вопросов
  • Статистика прохождения опросов пользователем

Установка и запуск

  1. Скачайте репозиторий
  2. Создайте .env файл: cp .env.example .env
  3. Вставьте токен бота в файл .env
  4. Выполните docker-compose up

Переменные окружения:

Установите переменные окружения в файле .env.example Переменные:
BOT_TOKEN - токен бота
BOT_WEBHOOK_URL - адрес вебхука. При необходимости используйте туннель
BOT_WEBHOOK_PORT - порт, на котором будет запущено приложение.
ADMIN_TG_IDS - список телеграм айди пользователей, имеющих доступ к админ панели. Разделены запятой(123,456)

Запуск тестов

Тесты используют in-memory базу данных SQLite и не требуют запущенного Docker-контейнера.

  1. Установите зависимости: pip install -r dev_requirements.txt
  2. Выполните 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 или БД), не затрагивая бизнес-логику.

About

Бот для создания опросов

Topics

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages