direct-shablonyблог · практика
← Блог
Бот, который сам находит мне заказчиков в Telegram — с граблями и кодом
2026-09-08

Бот, который сам находит мне заказчиков в Telegram — с граблями и кодом

автоматизацияTelegramнейросетилидыPython

Идея была простая: пусть робот сам читает чаты, где люди ищут исполнителя, и кидает мне в личку тех, кто реально хочет заказать. Звучит на один вечер. По факту — день на грабли. Рассказываю честно, как есть, с кодом и цифрами.

Грабля 1. Ключевые слова гребут мусор

Первая наивная версия ловила сообщения по словам вроде «нужен бот» или «сайт». Через день я перестал смотреть уведомления: из сотни «лидов» настоящих было три.

Почему так — в любом рабочем чате половина сообщений это НЕ клиенты:

Список стоп-слов бесконечен, им проблему не закрыть. Решение — задать по каждому сообщению короткий вопрос нейросети: это человек, который хочет ЗАКАЗАТЬ и готов платить, или он сам предлагает услуги и ищет работу?

Модель отвечает is_buyer: true/false плюс оценка релевантности от 0 до 1. Пропускаю только тех, у кого «да» и оценка выше 0.6. Разница на живом примере из лога:

«нужен бот для приёма заявок с сайта, кто сделает?»  → is_buyer=True,  0.95
«настраиваю чат-ботов и CRM, обращайтесь»            → is_buyer=False, 0.10

Слово «бот» одно, а смысл противоположный. Стоп-слова этого не видят — нейросеть видит.

Грабля 2. Модель не влезла в сервер

Захотелось «по-взрослому»: своя модель на своём сервере. Полез считать. Нормальная модель хочет 8 ГБ памяти, а на дешёвом VPS у меня два. Не влезает даже впритык.

Первая мысль — докупить сервер. Посмотрел цены: в разы дороже за месяц, а на слабом процессоре без видеокарты модель думает над каждым сообщением по 20–30 секунд. Медленно и дорого.

Правильная мысль оказалась другой: зачем держать модель у себя? Есть облачные сервисы, где та же работа делается за секунду и в бесплатном лимите я укладываюсь. Сервер просто отправляет туда текст и получает вердикт. Ноль доплаты, ноль нового железа, и модель там мощнее, чем я бы поднял локально.

Мораль: «поставить у себя» звучит солидно, но часто это лишние деньги. Локально держать модель имеет смысл, только если данные секретные — а публичные сообщения из чатов таковыми не являются.

Грабля 3. Telegram банит за массовый вход

Чтобы бот ловил заказы, он должен состоять в нужных чатах. Я по наивности вступил разом в два десятка групп за пару минут. Telegram показал предупреждение и придержал аккаунт — ещё чуть-чуть, и бан. А это личный аккаунт, терять нельзя.

Массовое вступление за короткое время выглядит как поведение спам-бота: телега ловит это по скорости. Живой человек не заходит в 20 групп за минуту.

Починил «тихим» вступлением: по 3 новых чата в день, с паузами 3–7 минут между каждым, как будто человек не спеша листает. И бот НИКОГДА ничего не пишет от моего имени — только читает. Пишут — банят; читаешь — терпят.

# анти-бан: вступаем медленно, по-человечески
JOIN_PAUSE_MIN, JOIN_PAUSE_MAX = 180, 420   # 3–7 минут между вступлениями
DAILY_CAP = 3                               # не больше 3 групп в день

Правило на любую автоматизацию в соцсетях: скорость важнее объёма. Делай мало, но по-человечески — и тебя не тронут.

Фишка: горячий клиент виден по пересечению

Обычный лид — человек один раз написал «нужен бот». А горячий — тот, кто ищет прямо сейчас и активно. Как его вычислить, не спрашивая? По простому сигналу: он пишет об одной и той же задаче в нескольких чатах разом.

Логика человеческая: если я закидываю «ищу, кто сделает» в три разных чата за пару дней — я тороплюсь и реально ищу исполнителя. Бот запоминает, в каких чатах засветился каждый автор, и как только один и тот же человек всплывает во втором-третьем чате — помечает его огоньком и поднимает наверх. Идею подсмотрел, когда разбирал по косточкам чужой платный парсер: там это называлось «пересечение аудиторий».

Заодно — дедупликация. Один человек в трёх чатах пишет почти одно и то же. Без защиты бот прислал бы три одинаковых уведомления. Поэтому сравниваю тексты на похожесть: тот же автор с тем же запросом показывается один раз, но с пометкой «в 3 чатах».

Грабля 4. «Работает» — это ещё не работает

Настроил автозапуск. Система отчиталась: «выполнено, код 0». Отлично. Через день смотрю — не отработало ни разу. Оказалось, запускалась обёртка, которая тихо падала, а «код 0» относился к ней, не к скрипту.

Потом облачная модель начала отдавать ошибку «слишком много запросов» на старте — бот прогонял сразу все чаты залпом и упирался в лимит. Добавил повтор с паузой (respect retry-after), и лиды перестали теряться.

Вывод, который экономит десятки часов: не верь, что работает — проверь, что работает. «Код 0», «процесс запущен», «в моём ящике дошло» — это сигналы, а не факты. Факт — это строка в логе с галочкой, ответ сервера 200, выросший счётчик.

Итог

За день бот из наивного «ловца по словам» превратился в рабочий инструмент: читает нужные чаты 24/7, отделяет заказчиков от шума нейросетью, растёт по чатам медленно и незаметно, помечает горячих и не долбит дублями. Никакого платного софта, никакого спама — робот просто читает открытые чаты и подсказывает, кому написать первым.

Главный принцип, который я вынес: автоматизация — это не «настроил и забыл», а «проверяй фактом на каждом шаге». Тогда она приносит деньги, а не иллюзию занятости.

Нужен такой же результат под вашу задачу?

Дообучу LLM на ваших данных, соберу AI-ассистента или проверю модель на безопасность. Локально и приватно.