Глеб Цыгалов
Как я сделал Telegram-бота для статистики ссылок с помощью ИИ
TelegramАвтоматизация

Как я сделал Telegram-бота для статистики ссылок с помощью ИИ

Оглавление

Логотип Status Link

Я давно пользуюсь Telegram-каналами и закупами рекламы. В какой-то момент стало понятно: просто смотреть на количество подписчиков уже мало. Важно понимать, какая ссылка привела людей, сколько из них осталось, сколько отписалось, какая аудитория пришла и сколько реально стоит живой подписчик.

Для этого есть готовые боты. Один из таких сервисов я использовал как ориентир, но потом он стал требовать платную подписку. И тут появилась простая мысль: а почему бы не сделать свой?

Так появился Status Link — Telegram-бот, который отслеживает статистику по пригласительным ссылкам.

В чём была проблема

Когда покупаешь рекламу в Telegram, обычно всё выглядит так:

  1. Создаёшь отдельную пригласительную ссылку для закупа.
  2. Даёшь её рекламодателю или ставишь в рекламный пост.
  3. Ждёшь подписчиков.
  4. Потом пытаешься понять, сколько людей реально пришло и осталось.

Если ссылок мало, можно ещё как-то жить руками. Но когда каналов несколько, ссылок много, закупы идут параллельно, начинается каша.

Хочется быстро видеть:

  • сколько людей вошло по конкретной ссылке;
  • сколько потом вышло;
  • сколько осталось в канале;
  • какие языки у аудитории;
  • есть ли premium-пользователи;
  • сколько арабской аудитории;
  • сколько стоит один оставшийся подписчик;
  • по какой ссылке заходил конкретный пользователь.

И главное — хочется быстро поделиться этой статистикой с другим человеком. Например, с закупщиком или админом канала. Не скриншотами, не пересказом, а одной ссылкой.

Идея простая: бот не создаёт ссылки за вас, а только отслеживает те, которые вы уже создали в Telegram.

Вы добавляете бота админом в канал или чат, даёте ему право видеть пригласительные ссылки, а дальше он начинает собирать статистику по входам и выходам.

Если отправить боту пригласительную ссылку, он закрепит её за вами и выдаст отдельную ссылку на просмотр статистики. Эту ссылку можно отправить кому угодно — человек сможет посмотреть цифры по конкретной ссылке, но не получит доступ к управлению каналом.

Статистика ссылки в Status Link

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

С технической стороны всё устроено довольно спокойно.

Когда человек вступает в канал по пригласительной ссылке, Telegram присылает боту событие. В этом событии может быть информация о ссылке, пользователе и канале. Status Link сохраняет это в базе.

Если человек потом выходит из канала, бот тоже получает событие и обновляет статистику.

В итоге по каждой ссылке можно увидеть:

  • вошли — сколько людей пришло по ссылке;
  • вышли — сколько людей отписалось;
  • итог — сколько осталось;
  • пол — базовая оценка по имени;
  • языки — по данным Telegram и профилю пользователя;
  • premium — сколько пользователей с Telegram Premium;
  • арабы — отдельная эвристика по языку, имени и профилю;
  • Н/Д — пользователи, по которым не удалось определить язык;
  • цена подписчика — если в названии ссылки указана сумма закупа.

Например, если ссылка называется 16.06 закуп 5000р, а в канале осталось 100 человек, бот покажет примерно 50р за подписчика.

Важно: Telegram не отдаёт всё на свете. Например, он не сообщает настоящий пол или национальность пользователя. Поэтому часть параметров — это аккуратные оценки, а не абсолютная истина. Но для закупов и быстрой аналитики этого обычно достаточно.

Что умеет бот

Отслеживать ссылки

Бот работает с обычными пригласительными ссылками Telegram. Их можно создавать вручную в канале, как обычно.

Если ссылка уже была создана, а бот ещё не получил её в личку, он всё равно может начать собирать данные, когда увидит первые входы по этой ссылке. Потом, когда вы отправите эту ссылку боту, он покажет уже накопленную статистику.

Показывать живой остаток

Самая важная цифра — не сколько людей зашло, а сколько осталось.

Поэтому в статистике отдельно есть:

  • вошли;
  • вышли;
  • итог.

И цена подписчика считается именно по итогу, то есть по тем, кто остался в канале.

Считать цену подписчика

Если в названии ссылки есть бюджет, бот сам его распознаёт.

Примеры:

  • 10000р
  • 5000₽
  • 150$

Пока основная логика заточена под рубли и доллары. Бот берёт сумму из названия ссылки и делит её на количество оставшихся подписчиков.

Получается быстрый ответ на главный вопрос: закуп вообще нормальный или нет?

Делиться статистикой

У каждой отслеживаемой ссылки есть отдельная ссылка на статистику.

Её можно отправить менеджеру, закупщику, владельцу канала или кому угодно ещё. Человеку не нужно добавляться в канал админом и не нужно иметь доступ к боту как владелец ссылки.

Он просто открывает ссылку и видит статистику.

Искать подписчика

В боте есть поиск по username или Telegram ID.

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

Это полезно, когда нужно разобраться, откуда пришёл конкретный человек.

Смотреть дашборд

В /start бот показывает список каналов, к которым есть доступ. У каждого канала есть свой emoji, чтобы быстрее ориентироваться в списке.

Внутри канала можно посмотреть ссылки и быстро перейти в детальную статистику по каждой.

Почему я делал это с ИИ

Я не хотел превращать это в долгую разработку на месяцы. Хотел быстро собрать рабочий инструмент под свою задачу: проверить гипотезу, запустить на своих каналах, потом уже улучшать.

Поэтому я делал проект вместе с Codex.

Я описывал, что нужно:

  • как бот должен отвечать;
  • какие кнопки нужны;
  • какие данные показывать;
  • как должна выглядеть статистика;
  • где развернуть сервер;
  • как перенести бота из одного дата-центра в другой;
  • как сделать публичный сайт и админку.

А агент уже писал код, правил баги, деплоил, проверял логи и объяснял, что происходит.

Самое удобное в таком подходе — можно идти маленькими шагами. Сначала бот просто принимает ссылку. Потом появляется статистика. Потом кнопка “поделиться”. Потом цена подписчика. Потом поиск. Потом админка. Потом перенос на другой сервер, потому что Telegram API на первом сервере иногда тормозил.

Не нужно сразу идеально понимать всю архитектуру. Достаточно понятно описывать следующий шаг.

Что оказалось важным

Сервер лучше держать там, где Telegram API работает стабильно

Сначала бот стоял на сервере, где доступ к Telegram API был нестабильным. Пришлось использовать Tor-прокси. Это работало, но иногда ответы могли задерживаться на 10-30 секунд.

Потом бот переехал на сервер в Нидерландах. Там прямой доступ к Telegram API стал намного быстрее: ответы идут без прокси, задержки заметно меньше.

Для Telegram-бота это критично. Пользователь отправил ссылку — бот должен ответить сразу, а не через полминуты.

Нельзя запускать один bot token в двух местах

При переносе важно не держать один и тот же Telegram-бот одновременно на двух серверах в режиме polling. Иначе они будут мешать друг другу.

Поэтому схема была такая:

  1. Подготовить новый сервер.
  2. Перенести код и базу.
  3. Проверить всё без запуска polling.
  4. Остановить старый сервис.
  5. Сделать финальный снимок базы.
  6. Запустить бота на новом сервере.

Секреты нельзя хранить в репозитории

Токены, пароли, .env, база, приватные ключи — всё это живёт только на сервере или локальной машине. В GitHub это не отправляется.

Это скучная часть, но она очень важная. Особенно когда проект начинает жить не только у тебя на компьютере.

Что получилось

Сейчас Status Link умеет:

  • отслеживать входы и выходы по пригласительным ссылкам;
  • показывать статистику по каждой ссылке;
  • считать оставшихся подписчиков;
  • показывать языки, premium, арабскую аудиторию и Н/Д;
  • считать цену подписчика по бюджету в названии ссылки;
  • давать ссылку для просмотра статистики;
  • искать пользователя по username или ID;
  • показывать список каналов и ссылок через дашборд;
  • работать на отдельном сервере как systemd-сервис;
  • делать backup базы;
  • показывать общую статистику в админ-панели.

Бот пока бесплатный. Платных тарифов нет. Я в первую очередь делал его как рабочий инструмент для себя и своих каналов.

Кому это может быть полезно

Status Link нужен тем, кто закупает трафик в Telegram и хочет понимать, что происходит после клика по ссылке.

Например:

  • владельцам Telegram-каналов;
  • закупщикам рекламы;
  • администраторам сеток каналов;
  • менеджерам, которые ведут несколько каналов;
  • тем, кто тестирует разные источники трафика.

Если закупы идут регулярно, такой бот быстро экономит время. Не надо собирать цифры руками и спорить по ощущениям. Открыл ссылку — посмотрел, сколько людей пришло, сколько ушло и сколько стоит оставшийся подписчик.

Что дальше

Дальше хочется сделать личные кабинеты на сайте.

Сейчас основная работа идёт через Telegram-бота и внутреннюю админку. Следующий логичный шаг — дать пользователям удобный веб-интерфейс: графики, фильтры, статистику по каналам, сравнение ссылок, динамику входов и отписок.

Ещё одна идея — уведомления.

Например, пользователь указывает, что хочет получить alert, если цена подписчика стала выше определённого значения. Бот следит за статистикой и пишет только тому, кто настроил это уведомление.

Попробовать

Бот: @linkname_bot

Сайт: statuslink.pro

Если коротко: Status Link помогает понять, какие Telegram-ссылки приводят живых подписчиков, а какие просто красиво выглядят в отчёте.

Глеб Цыгалов

Глеб Цыгалов | Блог

В Telegram-канале больше цифр, кейсов и полезных материалов про рекламу, каналы, ботов и инструменты для бизнеса.

Подписаться на канал

Ещё про Telegram, рекламу и рабочие инструменты.

Все статьи