Telegram-бот для мониторинга цен на товары в интернет-магазинах. Автоматически отслеживает изменения цен и отправляет уведомления пользователям через Telegram.
- Отслеживание цен на товары по ссылке
- Автоматическая периодическая проверка цен по расписанию (cron)
- Уведомления в Telegram при изменении цены
- Поддержка прокси для парсинга
- Групповая рассылка уведомлений
- Язык: Python 3.13+
- Telegram: aiogram 3
- Парсинг: Playwright (Chromium)
- БД: PostgreSQL 16, SQLAlchemy 2, Alembic
- Очередь: Redis 7
- Планировщик: APScheduler
- Контейнеризация: Docker, Docker Compose
Проект построен на принципах Clean Architecture:
├── domain/ # Бизнес-сущности и доменные сервисы
├── application/ # Use cases и интерфейсы репозиториев
├── infrastructure/ # Реализация: БД, парсер, Redis
├── presentation/ # Telegram-бот (хэндлеры, клавиатуры)
└── checker_main.py # Точка входа сервиса проверки цен
-
Клонировать репозиторий:
git clone https://github.com/heavenyoung1/pricely.git cd pricely -
Создать файл
.envна основе.env.exampleи заполнить значения:cp .env.example .env sudo nano .env
Переменные .env:
CHECKER_CRON— расписание проверки цен в формате cron (например,'0 */6 * * *'— каждые 6 часов)
-
Собрать и запустить все сервисы:
docker compose up -d --build
Будут запущены:
Сервис Описание dbPostgreSQL 16 redisRedis 7 migrateПрименение миграций Alembic botTelegram-бот checkerСервис периодической проверки цен -
Проверить статус сервисов:
docker compose ps
-
Посмотреть логи:
docker compose logs -f bot checker
По умолчанию используется протокол HTTP и порт 3000. SOCKS-прокси (порт 3001) не поддерживаются.
Создать файл с данными прокси:
sudo touch infrastructure/parsers/proxy.jsonЗаполнить infrastructure/parsers/proxy.json согласно структуре:
[
{
"proxy": "192.168.101.1:3000",
"username": "LOGIN",
"password": "PASSWORD"
},
{
"proxy": "192.168.101.1:3000",
"username": "LOGIN",
"password": "PASSWORD"
}
]# Собрать все образы
docker compose build
# Собрать конкретный сервис
docker compose build bot
# Собрать без кэша (полная пересборка)
docker compose build --no-cache# Запустить все сервисы
docker compose up -d
# Собрать и запустить (если были изменения в коде)
docker compose up -d --build
# Остановить все сервисы
docker compose down
# Остановить и удалить volumes (БД, Redis)
docker compose down -v# Перезапустить все сервисы
docker compose restart
# Перезапустить конкретный сервис
docker compose restart bot
docker compose restart checker
# Пересобрать и перезапустить один сервис (после изменения кода)
docker compose up -d --build bot# Логи всех сервисов
docker compose logs
# Логи конкретного сервиса в реальном времени
docker compose logs -f bot
docker compose logs -f checker
# Последние 100 строк логов
docker compose logs --tail 100 bot