TechHunter - Telegram-бот для поиска выгодных объявлений с телефонами на Avito.
Он не просто смотрит цену в объявлении. Бот постепенно учит реальный рынок по живым частным лотам, понимает модель, память, состояние, дефекты, примерную стоимость ремонта и присылает только те варианты, где есть понятная маржа.
Проект сделан для ресейла техники: iPhone, Samsung Galaxy, Pixel, Honor, OnePlus, Xiaomi/Redmi/Poco и другие популярные модели.
- Следит за свежими объявлениями Avito через видимый браузер Playwright.
- Сам собирает базу рыночных цен по моделям, памяти и состоянию.
- Отличает рабочие, дефектные, битые и заблокированные устройства.
- Считает потенциальную прибыль с учетом торга, ремонта и базовых расходов.
- Отсекает очевидный мусор: реплики, iCloud/операторские блокировки, магазины, рефы, подозрительные фото и слишком странные цены.
- Умеет искать не только по подпискам, но и в режиме Discovery: сканировать всю категорию и находить неожиданные сделки.
- Присылает удобную карточку в Telegram: цена, рынок, профит, состояние, дефекты, ремонт, доверие к продавцу и кнопки действий.
- Запоминает обратную связь. Если часто жать "мимо", бот становится строже к сделкам.
-
Ты добавляешь подписку, например:
iphone 13 pro | до:55000 | москва | акб:85 -
Бот сначала собирает рынок по этой модели: смотрит реальные объявления и строит базовые цены.
-
Потом он регулярно проверяет свежие лоты. Если цена выглядит интересной, бот открывает объявление, разбирает описание, оценивает состояние и считает экономику сделки.
-
Если сделка проходит фильтры, в Telegram приходит карточка с коротким разбором.
Обычный режим: ты сам задаешь, что искать.
Примеры:
iphone 15 pro | до:80000 | москва
samsung s24 ultra | до:90000 | акб:85
iphone 13 разбит экран | до:35000
Широкий поиск по категории телефонов. Бот сам просматривает рынок и ищет потенциально выгодные лоты по всем поддерживаемым моделям.
Discovery полезен, когда не хочется заранее угадывать модель. Минус: ему нужно время, чтобы накопить базу цен.
Фоновое обучение цен. Бот ходит по рынку и пополняет базу наблюдений, не пытаясь сразу присылать каждое объявление.
- Windows
- Python 3.13
- Telegram-бот, созданный через @BotFather
- Доступ к Avito в обычном браузере
Открой PowerShell в папке проекта:
cd C:\Users\bogat\Downloads\NoCodeProjects\TechHunter_BotСоздай и активируй виртуальное окружение:
py -3.13 -m venv ..\venv
..\venv\Scripts\Activate.ps1Установи зависимости:
pip install -r requirements.txt
python -m playwright install chromiumСоздай файл настроек:
copy .env.example .envОткрой .env и впиши токен Telegram-бота:
BOT_TOKEN=123456:your_bot_token_hereПрименяй миграции базы:
python -m alembic upgrade headЗапускай:
python main.pyПосле запуска открой своего бота в Telegram и напиши:
/start
Иногда Windows блокирует запуск скриптов. Тогда выполни:
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedПосле этого снова:
..\venv\Scripts\Activate.ps1Минимально нужен только BOT_TOKEN.
Чаще всего полезны эти параметры:
BOT_TOKEN=
ADMIN_USER_IDS=
DISCOVERY_MIN_PRICE=5000
DISCOVERY_DEEP_PER_CYCLE=15
DISCOVERY_MIN_PROFIT_RUB=7000
DISCOVERY_MIN_PROFIT_RATIO=0.20
BROWSER_RESTART_INTERVAL_SEC=600Коротко:
DISCOVERY_MIN_PRICE- минимальная цена для широкого поиска, чтобы не тонуть в старом мусоре.DISCOVERY_DEEP_PER_CYCLE- сколько потенциальных сделок Discovery может открыть за цикл.DISCOVERY_MIN_PROFIT_RUB- минимальный профит в рублях.DISCOVERY_MIN_PROFIT_RATIO- минимальная маржа.BROWSER_RESTART_INTERVAL_SEC- как часто перезапускать браузер, чтобы разгружать память.
Больше настроек лежит в techhunter/config.py.
Главное меню:
/start
/menu
Добавить подписку:
/add iphone 13 pro | до:55000 | москва | акб:85
Посмотреть подписки:
/list
Удалить подписку:
/del 3
Пауза и продолжение доставки:
/pause
/resume
Настройки доставки:
/settings
Discovery:
/discovery
/discovery_profit 10000
/discovery_ratio 25
Обучение рынка:
/train_start
/train_stop
/train_stat
- Запусти бота.
- Добавь 2-5 подписок на интересные модели.
- Дай боту немного времени собрать рынок.
- Смотри карточки сделок.
- Жми "норм" или "мимо", чтобы бот лучше понимал твой вкус.
- Если Avito покажет капчу, реши ее в открытом окне браузера. Бот сам продолжит работу.
Запуск всех тестов:
python -m tests.run_allОжидаемый результат:
ALL 11 SUITES PASSED
По умолчанию SQLite лежит здесь:
data/techhunter.db
Миграции применяются через Alembic:
python -m alembic upgrade headТесты используют отдельную базу:
data/test_suite.db
- Браузер специально запускается видимым. Это часть антикапча-стратегии.
- Бот периодически перезапускает браузер, чтобы не копить память.
- Цены не захардкожены как "истина". Бот учится на объявлениях и может уточняться со временем.
- Дефолтные цены ремонта помечаются как оценочные. Если нужны точные цифры под твою мастерскую, их лучше внести отдельно.
- Проект рассчитан на личное использование. Соблюдай правила площадок и законы своей страны.
- Python 3.13
- aiogram 3
- Playwright
- SQLAlchemy 2 + Alembic
- SQLite
- Pydantic 2
- BeautifulSoup
- локальные эвристики и CLIP для анализа фото
Проект рабочий: мониторинг, Discovery, обучение цен, карточки сделок, фильтры доставки, обратная связь и тесты уже собраны.
Дальше его можно развивать как личный инструмент: добавлять источники, расширять модели, настраивать ремонтные прайсы и улучшать UX под свой процесс ресейла.