Скрипт на Python для удаления нежелательных подписчиков из вашего Telegram-канала по дате их присоединения. Эффективно борется с последствиями бот-атак, работая в обход ограничений Telegram API.
Казалось бы, все бьются над увеличением количества подписчиков в своих Telegram-каналах. Зачем уменьшать их число?
Я сам заинтересовался этой темой после странного всплеска трафика. Опубликовал статью про голосовых ассистентов — и из-за неудачного заголовка она внезапно стала вирусной. Обычно мои тексты собирают около 7 тысяч просмотров, но в этот раз счётчик вырос до 140 тысяч.
Я слышал истории, как на каналы без рекламы «наливаются» сотни или тысячи подписчиков. Звучит как подарок судьбы, но на практике это тревожный сигнал: чаще всего — это фейковые аккаунты или боты.
Мёртвая аудитория — это падение вовлеченности (ER, ERR), потеря интереса со стороны рекламодателей и снижение позиций канала в поиске Telegram. Особенно сейчас, когда алгоритмы всё больше ориентируются на наличие Premium-подписчиков.
Telegram ограничивает доступ к полному списку подписчиков канала через официальное API. Максимум, что можно получить — это 200 последних подписчиков методом ChannelParticipantsRecent. Это ограничение является защитой от массового сбора данных, но мешает администраторам проводить чистку.
Этот скрипт работает в цикле, запрашивая самые свежие порции по 200 подписчиков. Он анализирует дату присоединения каждого пользователя и удаляет тех, кто подписался ПОСЛЕ указанной вами даты (например, после начала бот-атаки).
Как только скрипт встречает подписчика, который присоединился ДО нужной даты, он понимает, что все последующие пользователи в списке еще старше, и завершает работу. Это позволяет эффективно очистить канал от "свежих" ботов, несмотря на ограничения API.
- Удаление по дате: Главная функция, позволяющая удалить всех, кто присоединился после определённого времени.
- Безопасность:
- Встроенные задержки между удалениями, чтобы избежать временных блокировок (
FloodWaitError). - Запрос на подтверждение перед массовым удалением (можно отключить флагом
--yes).
- Встроенные задержки между удалениями, чтобы избежать временных блокировок (
- Логирование: Все удалённые пользователи сохраняются в файл
kicked_users.csvдля последующего анализа. - Информативность: Возможность получить диагностическую информацию о канале.
- Сохранение списка: Команда для сохранения последних 200 подписчиков в CSV-файл (для анализа или "белого списка").
-
Клонируйте репозиторий:
git clone https://github.com/empenoso/telegram-channel-pruner.git cd telegram-channel-pruner -
(Рекомендуется) Создайте и активируйте виртуальное окружение:
python -m venv venv # Windows .\venv\Scripts\activate # macOS / Linux source venv/bin/activate
-
Установите зависимости:
pip install -r requirements.txt
Примечание для Windows: Если возникнет ошибка, связанная с часовыми поясами, библиотека
tzdataизrequirements.txtдолжна ее решить.
-
Получите учетные данные Telegram API:
- Перейдите на сайт my.telegram.org и войдите в свой аккаунт.
- Откройте раздел "API development tools".
- Создайте новое приложение. Вы получите
api_idиapi_hash.
-
Заполните файл
.env:# Учетные данные с my.telegram.org api_id=12345678 api_hash=ВАШ_СЕКРЕТНЫЙ_ХЭШ # Ваш номер телефона в международном формате phone_number=+79123456789
-
Настройте скрипт:
- Откройте файл
channel_cleaner.py. - Найдите строку
CHANNEL_USERNAME = 'homeinv'и замените'homeinv'на юзернейм вашего канала (например,'@my_channel').
- Откройте файл
Все команды выполняются из терминала в папке проекта.
Эта команда покажет основную информацию о вашем канале и проверит, есть ли у скрипта доступ к списку участников.
python channel_cleaner.py infoСохраняет последних 200 подписчиков в файл ГГГГ_ММ_ДД_subscribers_whitelist.csv. Полезно для анализа перед чисткой.
python channel_cleaner.py saveЭто главная команда для очистки канала. Она удаляет всех, кто присоединился ПОСЛЕ указанной даты и времени.
python channel_cleaner.py kickbydate --after-date "2025-08-01 10:40:00"- Необратимость: Используйте на свой страх и риск. Удаление подписчиков - необратимый процесс.
- Права администратора: Вы должны быть админом канала с правами на удаление сообщений
- Лимиты API: Скрипт автоматически обрабатывает лимиты Telegram
- Безопасность: API ключи хранятся локально в файле
.env
🔗 Хабр: https://habr.com/p/933128/
🔗 Смартлаб: https://smart-lab.ru/mobile/topic/1188250/
🔗 Пикабу: https://pikabu.ru/story/_13039124
Автор: Михаил Шардин
🔗 Моя онлайн-визитка
📢 Telegram «Умный Дом Инвестора»