Инструмент для сканирования и удаления удаленных аккаунтов (deleted accounts) из Telegram каналов. Оптимизирован для работы с каналами с миллионами подписчиков.
- Двухэтапный подход: сначала выгрузка всех участников, затем анализ и удаление
- Оптимизация для больших каналов: пакетная обработка, минимальное потребление RAM
- Безопасное удаление: предварительный просмотр, подтверждение, откат действий
- Возобновление операций: чекпоинты для прерванных процессов
- Подробная отчетность: CSV, JSON, текстовые отчеты
- Гибкая аналитика: поиск deleted accounts по разным паттернам
project/
├── main.py # Основной скрипт с меню
├── config.py # Конфигурация и API ключи
├── database.py # SQLite база данных
├── exporter.py # Выгрузка участников
├── analyzer.py # Анализ удаленных аккаунтов
├── deleter.py # Безопасное удаление
├── reporter.py # Генерация отчетов
├── checkpoint_manager.py # Управление чекпоинтами
├── .env.example # Шаблон конфигурации
└── requirements.txt # Зависимости
git clone https://github.com/xsa-dev/py-dir-fake-users-from-channel.git
cd py-dir-fake-users-from-channel# Установка uv (если еще не установлен)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Установка зависимостей проекта
uv sync
# Запуск приложения
uv run python run.pyИли через Makefile:
make install # установить зависимости через uv
make start # запустить приложение# Активация виртуального окружения
python -m venv .venv
source .venv/bin/activate # Для Windows: .venv\Scripts\activate
# Установка зависимостей
pip install -e .- Перейдите на my.telegram.org
- Войдите под своим аккаунтом
- Перейдите в "API development tools"
- Создайте новое приложение
- Сохраните
api_idиapi_hash
Скопируйте шаблон конфигурации:
cp .env.example .envОтредактируйте .env файл:
# Telegram API Configuration
API_ID=12345678
API_HASH=abcdef1234567890abcdef1234567890
PHONE_NUMBER=+79991234567
# Database Configuration
DATABASE_NAME=channel_users.db
# Export Configuration (оптимизировано для больших каналов)
BATCH_SIZE=2000
CHECKPOINT_INTERVAL=10000
REQUEST_DELAY=0.033 # ~30 запросов в секунду
# Channel Configuration
CHANNEL_USERNAME=@your_channel
# Deletion Configuration
DELETE_BATCH_SIZE=100
DELETE_DELAY=0.1
DELETE_CONFIRMATION=trueuv run python run.pymake install # установить зависимости через uv
make start # запустить приложениеpython run.py1. Экспортировать участников канала
→ Введите имя канала (@channel_name)
→ Ожидание завершения (для 1М пользователей: 2-4 часа)
2. Анализировать удаленные аккаунты
→ Автоматический поиск по паттернам
→ Показ результатов анализа
→ Сохранение отчетов
4. Удалить пользователей
→ Предпросмотр кандидатов
→ Подтверждение удаления
→ Пакетное удаление с паузами
- Память: < 300MB RAM для 1М пользователей
- База данных: SQLite с индексами для быстрых запросов
- Пакетная обработка: 2000 пользователей за раз
- Лимиты API: Умная обработка лимитов Telegram (30 запросов/сек)
- Чекпоинты: Возобновление после обрывов
- Прогресс: Детальный прогресс-бар с ETA
Система ищет аккаунты по следующим паттернам:
Deleted AccountDeleted Useruser[numbers]- Пустые и дефолтные имена
- Отсутствие username
- Предпросмотр перед удалением
- Подтверждение пользователя
- Резервные копии в БД
- Логирование всех операций
- Обработка ошибок без остановки
- Права администратора проверяются
Система генерирует отчеты в форматах:
- CSV: Для анализа в Excel
- JSON: Для интеграции с другими системами
- Текстовый: Краткая сводка
Файлы сохраняются в папке reports/.
Также можно использовать отдельные модули:
# Прямое использование в Python
from exporter import TelegramExporter
from analyzer import DeletedUserAnalyzer
from deleter import TelegramUserDeleter
async def scan_channel():
# Инициализация
client = TelegramClient('session', api_id, api_hash)
db = DatabaseManager('users.db')
await db.init_database()
# Экспорт
exporter = TelegramExporter(client, db)
stats = await exporter.export_channel_participants('@channel_name')
# Анализ
analyzer = DeletedUserAnalyzer(db)
deleted = await analyzer.find_deleted_accounts()
print(f"Найдено deleted accounts: {len(deleted)}")- Убедитесь, что API ID и API Hash верные
- Проверьте формат номера телефона (+79991234567)
- Для двухфакторной аутентификации потребуется пароль
- Увеличьте
CHECKPOINT_INTERVALдля большей стабильности - Уменьшите
BATCH_SIZEесли возникают ошибки API - Используйте премиум аккаунт для повышенных лимитов
- Проверьте права администратора в канале
- Убедитесь, что вы не были удалены из канала
- Некоторые типы каналов могут ограничивать удаление
- Python 3.12+
- Telegram API ключи
- Права администратора в целевом канале (для удаления)
- Стабильное интернет-соединение
- Добавлена поддержка сохранения
photo_idпользователей в базе данных - Добавлена автоматическая миграция схемы БД для существующих баз данных
- Добавлены тесты для больших объемов данных (
test/test_database_large.py)- Тест на 10,000 пользователей (запускается всегда)
- Тест на 2,000,000 пользователей (требует
RUN_HEAVY_TESTS=1)
- Добавлена команда
make testдля запуска тестов через uv
- Обновлены инструкции по установке: добавлена поддержка
uv(рекомендуется) - Улучшена обработка экспорта пользователей с поддержкой
photo_id - Улучшена миграция данных при перемещении пользователей в
deleted_users
- Добавлен файл
LICENSEс MIT лицензией - Обновлены ссылки на репозиторий в
README.mdиpyproject.toml - Добавлена секция "AI Assistance"
- Добавлены инструкции по установке через
uvиMakefile
- Добавлено поле
photo_idв классUser - Добавлен метод
_upgrade_schema()для автоматической миграции схемы БД - Обновлен метод
insert_users_batch()для поддержкиphoto_id - Обновлен метод
move_users_to_deleted()с использованиемINSERT OR IGNORE
MIT License - см. LICENSE для деталей.
Репозиторий: https://github.com/xsa-dev/py-dir-fake-users-from-channel
AI-assisted code (ChatGPT, Claude, Cursor).
- Fork the repository: https://github.com/xsa-dev/py-dir-fake-users-from-channel
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
При возникновении проблем:
- Проверьте логи ошибок
- Убедитесь в правильности конфигурации
- Попробуйте с меньшими BATCH_SIZE
- Используйте чекпоинты для возобновления
Внимание: Удаление пользователей — необратимая операция. Всегда делайте бэкапы и внимательно проверяйте списки перед удалением!