Специализированный Telegram-бот для управления приемом лекарств. Заменяет приложение Medisafe и предоставляет удобный интерфейс для отслеживания расписания приема препаратов.
- 💊 Добавление лекарств с описанием приема
- ⏰ Настройка расписания (каждый день или через X дней)
- 🔔 Автоматические напоминания в установленное время
- 🌍 Поддержка часовых поясов
- 🔄 Гарантированная доставка уведомлений с системой повторных попыток
- 📋 Просмотр списка всех лекарств
- 🗑 Удаление лекарств
- Python 3.10+
- aiogram 3.x - асинхронный фреймворк для Telegram ботов
- PostgreSQL - база данных
- SQLAlchemy (async) - ORM
- APScheduler - планировщик задач
- pytz - работа с часовыми поясами
git clone <repository_url>
cd MedicalTrackerПроект использует Poetry для управления зависимостями:
poetry installИли установите зависимости вручную:
pip install aiogram asyncpg sqlalchemy[asyncio] apscheduler python-dotenv pytz- Убедитесь, что PostgreSQL запущен
- Создайте базу данных:
CREATE DATABASE medical-tracker;Создайте файл .env в корне проекта:
# Telegram Bot Token
BOT_TOKEN=your_bot_token_here
# PostgreSQL Database Configuration
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password_here
DB_NAME=medical-tracker
# Scheduler Timezone
SCHEDULER_TIMEZONE=UTC
# Retry Configuration
MAX_RETRY_ATTEMPTS=5poetry run python -m database.init_dbpoetry run python main.py/start- Начать работу с ботом/add_medication- Добавить новое лекарство/list_medications- Показать список всех лекарств/delete_medication- Удалить лекарство/help- Справка по использованию/cancel- Отменить текущую операцию
- Используйте команду
/add_medication - Введите название препарата
- Введите описание приема (или пропустите)
- Выберите периодичность (каждый день или через X дней)
- Если выбрано "через X дней", введите интервал
- Введите время приема в формате HH:MM (например, 09:00)
- Введите количество препарата
- Подтвердите добавление
- Бот проверяет расписания
- Уведомления отправляются в установленное время с учетом часового пояса пользователя
- При ошибке отправки система автоматически повторяет попытку:
- 1-я попытка: через 5 минут
- 2-я попытка: через 15 минут
- 3-я попытка: через 30 минут
- 4-я попытка: через 1 час
- 5-я попытка: через 2 часа
- Максимум 5 попыток доставки
MedicalTracker/
├── main.py # Точка входа
├── config.py # Конфигурация
├── bot/ # Код бота
│ ├── handlers/ # Обработчики команд
│ ├── keyboards/ # Клавиатуры
│ ├── middlewares/ # Middleware
│ ├── states/ # FSM состояния
│ └── utils/ # Утилиты
├── database/ # Работа с БД
│ ├── models.py # SQLAlchemy модели
│ ├── base.py # Базовые классы
│ ├── repository.py # Репозитории
│ └── init_db.py # Инициализация БД
├── services/ # Бизнес-логика
│ ├── medication_service.py
│ └── notification_service.py
└── scheduler/ # Планировщик задач
└── notification_scheduler.py
- Откройте @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям для создания бота
- Скопируйте полученный токен в файл
.env
Для отладки можно изменить уровень логирования в main.py:
logging.basicConfig(
level=logging.DEBUG, # Изменить на DEBUG для подробных логов
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)MIT
damir (1damiraminov@gmail.com)