Crosser bot

Crosser bot


Описание

@crosser_bot - это инструмент для админов каналов и чатов. С помощью бота вы сможете получить детальную аналитику (Рис.1 и Рис.2) по своему каналу/чату:
- Количество реальных людей;

- Количество ботов;

- Время последнего появления подписчиков в Telegram;

- Время жизни пользователя на канале.

Рис.1


Рис.2

Также бот предоставляет инструмент для очистки канала/чата от:

- Неактивных пользователей (Которые заходили в Telegram больше месяца назад);

- Возможность очистить подписчиков которые вступили в канал/чат в определенный период времени;

- Была возможность очистить Удаленные аккаунты, но начиная с мая 2019 Telegram API перестал отдавать эти аккаунты.


Бот предоставляет поиск каналов/чатов у которых схожая аудитория с вашим каналом/чатом (Рис.3).

Рис.3

Есть функция которая позволяет получать каждый час отчет об онлайне вашего канала/чата (Рис.4).

Рис.4.


Техническая сторона

Язык: Python 3.7.

Основные фреймворки и библиотеки: Asyncio, Aiohttp, Asyncpg, Aioredis, Aiogram, Telethon, Celery, Plotly.

Хранилища: PostgreSQL, Redis.

Используем Docker (swarm mode) для контейнеризации и удобного деплоя проекта.


Как происходит получение данных на основе которых работает весь функционал бота:

- Бот должен иметь минимальные права (Возможность добавления других админов в канал/чат);

- Пользователь который инициирует запрос для получение отчета (Рис.1, Рис.2), должен быть админом этого канала/чата;

- После того как все условия были удовлетворены, создается задача на получение и обработку данных которая попадает в очередь (Celery);

- С общего пула бот получает свободного агента (Реальный Telegram аккаунт);

- Далее агент обращается к Telegram API для того что бы вступить в канал/чат, после того как агент вступил в канал/чат, бот дает ему минимальные права админа;

- Агент рекурсивным поиском (смотреть ниже) начинает получать данные подписчиков с помощью запроса на поиск к Telegram API, в поиске используются символы английского и русского алфавита, emoji символы:

* Агент делает запрос на поиск по символу "a", если в ответ от Telegram API пришло данных о 200 подписчиков (Telegram API лимит), агент углубляется дальше, и поисковая строка становится "ab" и так далее, пока по поисковому запросу количество полученных подписчиков не будет меньше значения которое задается в конфигурации проекта;

* На каждой итерации бот делает одновременно 26 http запросов на поиск (в случае английского алфавита);

* В зависимости от количества подписчиков канала/чата бот делает большое количество запросов (в случае когда на канале есть 1000 подписчиков, количество запросов к Telegram API может равняться 400-600).

Алгоритм получение подписчиков по английскому алфавиту

- После того как все данные были получены, агент выходит с канала/чата происходит вставка данных о пользователях и канале/чате в базу данных;

- Далее создается задача (Celery) на формирование и отправку отчета админам канала.


Трудности

  1. Количество поисковых запросов к Telegram API в случае большого канала/чата может быть очень большим, что очень замедляет получение отчета пользователем бота;
  2. С первой проблемы вытекает вторая проблема, когда определенному агенту Telegram API дает временный бан (FloodWaitError), в некоторых случаях бан может быть на 2 дня и более;
  3. Агенты долго не живут - Telegram может деактивировать агента (Deleted Account) сразу после регистрации или через некоторое время;
  4. Постоянная необходимость регистрировать большое количество аккаунтов (агентов) для стабильной работы бота.
  5. Невозможность получить данных о 100% аудитории.


Итог

В данный момент ботом воспользовалось 35 000+ пользователей, получено данных с 15 000+ каналов/чатов, общее количество уникальных пользователей которые были получены в результате выгрузки становит 27 000 000+.

Смотря на выше указанные показатели данный инструмент пользуется большим спросом среди админов каналов/чатов.







-

Report Page