Задача клиента
Заказчик хотел получить Telegram-бота, который помогает быстро подобрать автомобиль из Кореи или Китая по трём параметрам: марка → модель → бюджет. При этом бот должен в реальном времени парсить актуальные объявления с сайта Carme.club, показывать фото, характеристики, цену в рублях и давать прямую ссылку на объявление.
Главные сложности и подводные камни
- Carme.club активно борется с парсерами — обычные запросы через requests блокируются уже на уровне Cloudflare.
- Список марок и моделей подгружается динамически через JavaScript, простым BeautifulSoup его не получить.
- Необходимо было обходить антибот-системы, но при этом не нагружать сервер и не попадать под бан.
- Требовалась отправка до 10 фотографий одним альбомом + защита от «битых» изображений.
- Пользователь должен иметь возможность в любой момент поменять марку/модель или начать заново — без потери контекста.
Принятые решения и почему именно так
- Selenium + selenium-stealth — единственный надёжный способ получить актуальный список марок и моделей, который обновляется ежедневно и кэшируется в JSON.
- aiogram 3.x + asyncio — современный асинхронный фреймворк, позволил одновременно обрабатывать десятки пользователей без задержек.
- aiohttp + BeautifulSoup для парсинга карточек авто — максимально быстро и с правильными заголовками.
- FSM (конечные автоматы) + постоянная Reply-клавиатура — пользователь никогда не теряется в диалоге.
- Пагинация марок/моделей и отправка автомобилей пачками по 5 штук — экономия трафика и удобство восприятия.
- Автоматическая проверка подписки на канал с возможностью повторной проверки по кнопке.
- Все временные фото скачиваются локально и сразу удаляются после отправки — никаких утечек на сервере.
Результат и выгода для клиента
Бот работает 24/7 уже больше полугода, ежедневно помогает десяткам людей находить актуальные предложения. Благодаря обходу блокировок и кэшированию марок/моделей — ответ приходит менее чем за 15-20 секунд даже при большом количестве объявлений.
Клиент получил полностью автономный инструмент продаж, который сам привлекает подписчиков в канал и сразу закрывает их на покупку.