Телеграм-бот для автоматизации работы Донорского центра НИЯУ МИФИ. Бот предоставляет удобный интерфейс для доноров и организаторов для управления донациями, регистрации на дни донора и ведения статистики.
- 📝 Регистрация - простая регистрация по номеру телефона
- 👤 Профиль донора - просмотр личной информации и истории донаций
- 📅 Запись на День донора - регистрация на предстоящие мероприятия
- 📊 История донаций - отслеживание количества и дат донаций
- 🦴 Регистр костного мозга - информация о вступлении в регистр
- ℹ️ Информационные материалы - доступ к полезной информации о донорстве
- 🗂️ Управление донорами - добавление, редактирование и поиск доноров
- 📅 Управление Днями донора - создание и отмена мероприятий
- 📊 Статистика - генерация отчетов и экспорт данных в Excel
- 📢 Массовые рассылки - уведомления для различных категорий доноров
- ✅ Подтверждение донаций - управление статусом регистраций
DonorBotExample/
├── bot/ # Основной код бота
│ ├── src/ # Исходный код
│ │ ├── core/ # Основные настройки и конфигурация
│ │ ├── db/ # Настройки базы данных
│ │ ├── di/ # Dependency Injection контейнеры
│ │ ├── dialogs/ # Диалоги пользовательского интерфейса
│ │ ├── enums/ # Перечисления
│ │ ├── handlers/ # Обработчики команд и сообщений
│ │ ├── models/ # Модели данных (SQLAlchemy)
│ │ ├── repositories/ # Репозитории для работы с БД
│ │ ├── scheduling/ # Планировщик задач
│ │ ├── services/ # Бизнес-логика и сервисы
│ │ ├── lifespan.py # Управление жизненным циклом приложения
│ │ └── main.py # Точка входа в приложение
│ ├── alembic/ # Миграции базы данных
│ ├── .example.env # Пример файла переменных окружения
│ ├── Dockerfile # Docker-образ для бота
│ └── pyproject.toml # Зависимости Python
├── deploy/ # Конфигурация развертывания
│ └── ansible/ # Ansible плейбуки для деплоя
│ ├── group_vars/ # Переменные групп
│ ├── inventory/ # Инвентарь серверов
│ ├── roles/ # Роли Ansible
│ ├── playbook.yml # Основной плейбук
│ ├── requirements.yml # Зависимости Ansible
│ └── secrets.example.yml # Пример секретов
├── docker-compose.yml # Продакшн конфигурация Docker
├── docker-compose.dev.yml # Разработческая конфигурация Docker
└── docker-compose.base.yml # Базовая конфигурация Docker
- Docker и Docker Compose
- Python 3.12+ (для разработки)
- PostgreSQL 15+
- Redis
- Скопируйте файл с примером переменных окружения:
cp bot/.example.env bot/.env- Отредактируйте файл
bot/.env, указав ваши значения
docker compose -f docker-compose.dev.yml up --builddocker compose up --build -d- Настройте инвентарь в
deploy/ansible/inventory/ - Скопируйте и заполните секреты:
cp deploy/ansible/secrets.example.yml deploy/ansible/secrets.yml- Запустите деплой:
ansible-galaxy install -r deploy/ansible/requirements.yml
cd deploy/ansible
ansible-playbook -i inventory/production playbook.ymlcd bot
alembic revision --autogenerate -m "Description of changes"cd bot
alembic upgrade headcd bot
alembic downgrade -1- Архитектура: Чистая архитектура с разделением на слои (handlers, services, repositories)
- Dependency Injection: Использование Dishka для управления зависимостями
- Диалоги: aiogram-dialog для создания интерактивных пользовательских интерфейсов
- Миграции: Alembic для управления схемой базы данных
- Webhook/Polling: Поддержка как webhook, так и polling режимов
- Донорский центр YADONOR: официальный сайт
- Telegram бот: @mifi_donot_center_bot
Сделано с ❤️ для Донорского центра НИЯУ МИФИ