CLI-инструмент для работы с Telegram:
- создание и использование пользовательской сессии;
- просмотр списка чатов;
- удаление своих сообщений;
- экспорт истории и непрочитанных сообщений в HTML;
- скрытие ваших активных сторис от конкретного пользователя (через privacy rules);
- экспорт сообщений для сценария copy-private-group.
- Python 3.9+ (рекомендуется 3.10+)
- Telegram
api_idиapi_hash(получаются на my.telegram.org)
Проект используется как локальное desktop CLI-приложение (без Telegram Bot API и без серверного деплоя).
-
Создай виртуальное окружение:
python3 -m venv venv
-
Активируй его:
source venv/bin/activate -
Установи зависимости:
pip install -r requirements.txt
-
Создай
.envиз примера и заполни значения:cp .env.example .env
Минимально нужны:
API_IDAPI_HASH
-
Создай сессию:
venv/bin/python script.py create-session
По умолчанию используется имя сессии
session.
venv/bin/python script.py [--session SESSION_NAME] <command> [options]Пример с кастомной сессией:
venv/bin/python script.py --session my_session create-sessionvenv/bin/python script.py create-session
venv/bin/python script.py --session my_session create-sessionvenv/bin/python script.py list-chats
venv/bin/python script.py list-chats --items-per-page 50
venv/bin/python script.py list-chats --no-open-browserДля супергрупп с разделами (topics) в HTML показываются вложенные разделы и составные ID формата chat_id:topic_id.
venv/bin/python script.py delete-my-messages --chat-id -idGroup
venv/bin/python script.py delete-my-messages --chat-id -idGroup --batch-size 100 --delay 1venv/bin/python script.py export-history --chat-id -idGroup
venv/bin/python script.py export-history --chat-id -idGroup --limit 200venv/bin/python script.py export-unread --chat-id -idGroup
venv/bin/python script.py export-unread --chat-id -idGroup --limit 300 --items-per-page 100
venv/bin/python script.py export-unread --chat-id -idGroup --no-open-browservenv/bin/python script.py copy-private-group --chat-id -idGroup
venv/bin/python script.py copy-private-group --chat-id -idGroup:idFolder
venv/bin/python script.py copy-private-group --chat-id -idGroup:idFolder:idMessage
venv/bin/python script.py copy-private-group --chat-id https://t.me/c/idForumGroup/idFolder
venv/bin/python script.py copy-private-group --chat-id https://t.me/c/idForumGroup/idFolder/idMessage
venv/bin/python script.py copy-private-group --chat-id -idGroup --message-id idMessage
venv/bin/python script.py copy-private-group --chat-id -idGroup --limit 500 --items-per-page 100
venv/bin/python script.py copy-private-group --chat-id -idGroup --no-open-browserПоддерживается необязательный message_id: при передаче chat_id:topic_id:message_id или ссылки t.me/c/.../topic_id/message_id экспорт ограничивается сообщениями до указанного message_id.
Также можно передать --message-id отдельным аргументом (для автоматизаций); если заданы оба варианта, приоритет у --message-id.
venv/bin/python script.py hide-stories --username some_user
venv/bin/python script.py hide-stories --username @some_userОбщая:
venv/bin/python script.py --helpПо конкретной команде:
venv/bin/python script.py list-chats --help
venv/bin/python script.py delete-my-messages --help
venv/bin/python script.py export-history --help
venv/bin/python script.py export-unread --help
venv/bin/python script.py copy-private-group --help
venv/bin/python script.py hide-stories --helpВ проекте уже настроен .gitignore для локальных секретов, виртуального окружения, кэша и артефактов экспорта. Обычно в репозиторий не должны попадать:
.envи любые файлы с секретами;- файлы сессий Telegram (
*.session,*.session-journal); venv/;__pycache__/,*.pyc;- служебные директории IDE и macOS.