Skip to content

xailiry/TechBot

Repository files navigation

TechHunter Bot

TechHunter - Telegram-бот для поиска выгодных объявлений с телефонами на Avito.

Он не просто смотрит цену в объявлении. Бот постепенно учит реальный рынок по живым частным лотам, понимает модель, память, состояние, дефекты, примерную стоимость ремонта и присылает только те варианты, где есть понятная маржа.

Проект сделан для ресейла техники: iPhone, Samsung Galaxy, Pixel, Honor, OnePlus, Xiaomi/Redmi/Poco и другие популярные модели.

Что делает бот

  • Следит за свежими объявлениями Avito через видимый браузер Playwright.
  • Сам собирает базу рыночных цен по моделям, памяти и состоянию.
  • Отличает рабочие, дефектные, битые и заблокированные устройства.
  • Считает потенциальную прибыль с учетом торга, ремонта и базовых расходов.
  • Отсекает очевидный мусор: реплики, iCloud/операторские блокировки, магазины, рефы, подозрительные фото и слишком странные цены.
  • Умеет искать не только по подпискам, но и в режиме Discovery: сканировать всю категорию и находить неожиданные сделки.
  • Присылает удобную карточку в Telegram: цена, рынок, профит, состояние, дефекты, ремонт, доверие к продавцу и кнопки действий.
  • Запоминает обратную связь. Если часто жать "мимо", бот становится строже к сделкам.

Как это работает

  1. Ты добавляешь подписку, например:

    iphone 13 pro | до:55000 | москва | акб:85
    
  2. Бот сначала собирает рынок по этой модели: смотрит реальные объявления и строит базовые цены.

  3. Потом он регулярно проверяет свежие лоты. Если цена выглядит интересной, бот открывает объявление, разбирает описание, оценивает состояние и считает экономику сделки.

  4. Если сделка проходит фильтры, в Telegram приходит карточка с коротким разбором.

Основные режимы

Подписки

Обычный режим: ты сам задаешь, что искать.

Примеры:

iphone 15 pro | до:80000 | москва
samsung s24 ultra | до:90000 | акб:85
iphone 13 разбит экран | до:35000

Discovery

Широкий поиск по категории телефонов. Бот сам просматривает рынок и ищет потенциально выгодные лоты по всем поддерживаемым моделям.

Discovery полезен, когда не хочется заранее угадывать модель. Минус: ему нужно время, чтобы накопить базу цен.

Training Mode

Фоновое обучение цен. Бот ходит по рынку и пополняет базу наблюдений, не пытаясь сразу присылать каждое объявление.

Что нужно для запуска

  • Windows
  • Python 3.13
  • Telegram-бот, созданный через @BotFather
  • Доступ к Avito в обычном браузере

Быстрый запуск на Windows

Открой 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

Если PowerShell не дает активировать venv

Иногда Windows блокирует запуск скриптов. Тогда выполни:

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

После этого снова:

..\venv\Scripts\Activate.ps1

Настройки в .env

Минимально нужен только 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.

Команды в Telegram

Главное меню:

/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

Как пользоваться в обычной жизни

  1. Запусти бота.
  2. Добавь 2-5 подписок на интересные модели.
  3. Дай боту немного времени собрать рынок.
  4. Смотри карточки сделок.
  5. Жми "норм" или "мимо", чтобы бот лучше понимал твой вкус.
  6. Если 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 под свой процесс ресейла.

About

Бот для перекупов техники: мониторит Avito, сам учит цены по состоянию и шлёт в Telegram только реально выгодные лоты, включая битые под ремонт.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors