Казалось бы - все бьются над увеличением количества подписчиков в своих Telegram-каналах - зачем уменьшать их число?

Я сам заинтересовался этой темой после странного всплеска трафика. Опубликовал статью про голосовых ассистентов - и из-за неудачного заголовка она внезапно стала вирусной. Обычно мои тексты собирают около 7 тысяч просмотров (медиана), но в этот раз счётчик вырос до 148 тысяч. А до этого я уже слышал истории, как на каналы без рекламы и инфоповодов «наливаются» сотни или тысячи подписчиков. Звучит как подарок судьбы, но на практике это тревожный сигнал: чаще всего - это фейковые аккаунты.

Мёртвая аудитория - это падение вовлеченности (ER - уровень вовлеченности, ERR - вовлеченность на охват), потеря интереса со стороны рекламодателей и снижение позиций канала в поиске Telegram. Особенно сейчас, когда алгоритмы всё больше ориентируются на наличие Premium-подписчиков.

ERR канала
ERR канала

В этой статье покажу, как выявить и удалить нежелательных подписчиков с помощью open-source скрипта на Python - который работает даже несмотря на ограничения Telegram API, позволяющий получить лишь последние 200 участников.

Почему Telegram не даёт полного списка подписчиков канала?

Telegram ограничивает доступ к списку подписчиков каналов через официальное API. Максимум, что можно получить - это 200 последних подписчиков методом ChannelParticipantsRecent. Причём Telegram не предоставляет параметров для сортировки или фильтрации по дате вступления, что делает задачу модерации практически невозможной.

Работа скрипта о котором ниже
Работа скрипта о котором ниже

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

Для частичной аналитики можно использовать сторонние сервисы вроде TGStat и Telemetr (возможно ещё какие-то) - они показывают прирост подписчиков и вовлечённость.

Альтернативные варианты собрать всех подписчиков

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

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

Скрипт очистки: удаляем новых подписчиков после даты

Эта инструкция для продвинутого пользователя Windows. Более простая инструкция в другой моей статье с этой же библиотекой.

Что нужно заранее:

  1. Компьютер с Windows.

  2. Установленный Python (скачать с python.org, при установке обязательно включите галочку "Add Python to PATH").

  3. Telegram-аккаунт, зарегистрированный по номеру телефона.

  4. Юзернейм канала (например, @mychannel).

  5. Готовность скопировать 2 строки с сайта Telegram (API ID и API HASH).

Установка

  1. Скачайте скрипт с https://github.com/empenoso/telegram-channel-pruner
    Откройте меню Пуск → введите cmd → нажмите Enter. В открывшемся окне введите:

    git clone https://github.com/empenoso/telegram-channel-pruner.git
    cd telegram-channel-pruner

    Если у вас не установлен Git - скачайте отсюда и установите, а потом повторите.

  2. Создайте виртуальное окружение (рекомендуется)

    python -m venv venv
    .\venv\Scripts\activate
  3. Установите зависимости (библиотеки)

    pip install -r requirements.txt

Настройка Telegram API

  1. Перейдите на сайт https://my.telegram.org
    → войдите через Telegram
    → зайдите в раздел API development tools
    → создайте приложение
    → скопируйте api_id и api_hash.

  2. Создайте файл .env в папке со скриптом. Вставьте туда:

    # .env
    api_id=хххххххх                                           # Замените на ваш API ID
    api_hash='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'               # Замените на ваш API Hash
    phone_number=+xxxxxxxxxxx                                 # Ваш номер телефона для входа (если сессия новая)

    Пример:
    api_id=1234567
    api_hash=abcd1234abcd5678efgh9012ijkl3456
    hone_number=+79991234567

  3. Откройте файл channel_cleaner.py (через Блокнот или VS Code) и замените строку:

    CHANNEL_USERNAME = 'homeinv'

    на ваш юзернейм канала, например:

    CHANNEL_USERNAME = 'mychannel'

Как использовать

Все команды нужно запускать в окне cmd из папки telegram-channel-pruner, с активированным окружением (venv).

Проверка работы скрипта

python channel_cleaner.py info

Сохранить последних подписчиков в CSV

python channel_cleaner.py save

Сохранит файл с последними 200 подписчиками, чтобы вы могли посмотреть, кто подписался.

Удалить подписчиков после определённой даты

python channel_cleaner.py kickbydate --after-date "2025-08-01 10:40:00"

Замените дату на свою — в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС, по московскому времени.

Скрипт покажет, кого собирается удалить, и спросит подтверждение.

Важно:

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

  • Скрипт работает только с 200 последними подписчиками, но удаляет их порциями, пока не встретит «старых».

  • Все удалённые пользователи записываются в файл kicked_users.csv.

  • Необратимость: используйте на свой страх и риск. Удаление подписчиков - необратимый процесс.

Заключение

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

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

Чем раньше начать чистку, тем меньше придётся разгребать потом. А вы боретесь с накруткой?

Автор: Михаил Шардин
? Моя онлайн-визитка
? Telegram «Умный Дом Инвестора»

05 августа 2025 года

Комментарии (4)


  1. Klochko
    05.08.2025 00:54

    А что если взять обычного бота и поставить админом в канал? Обычные боты стучат в вебхук событие new_chat_member в котором есть вся базовая информация о пользователе. И просто этим ботом собирать информацию и складывать в отдельную БД?

    Понятное дело, что пост-фактом смысла в этом маловато, но лучше поздно чем никогда. И вот этот бот может собирать информацию: кто подписался; кто отписался; может удалять пользователей. И все это может лежат в БД. С пользователем и всей историей его «миграции». И это работает и в каналах и чатах. А затем выборочно можно удалять кого-то тем же ботом не прибегая к юзерботам и странным ограничениям тг.


    1. empenoso Автор
      05.08.2025 00:54

      Да, поставить бота, который сразу записывает новых подписчиков в базу, это отлично следить за аудиторией канала.

      В статье я описывал другую ситуацию: всплеск уже произошёл, и нужно как-то разобраться с теми, кто уже подписался. Ведь проблема в том, что если бот не стоял с самого начала, он не сможет узнать, кто именно пришёл раньше.

      Поэтому мой скрипт скорее «аварийный» инструмент.


  1. Sannis
    05.08.2025 00:54

    Ну если удалять всех подписчиков, но невелика задача так пачками это делать. Вам при этом не кажется что там могут быть и полезные подписчики?


    1. empenoso Автор
      05.08.2025 00:54

      Конечно могут. Просто надо знать точное время когда стали "заливать" ботов