Небольшой инструмент для извлечения строки сессии Telegram из папки tdata (Telegram Desktop) и сохранения её в формате переменной окружения в файле .env.
- Берёт папку
tdata, как её хранит Telegram Desktop (Windows, macOS, Linux) - Декодирует из неё MTProto‑ключи и идентификатор дата‑центра
- Собирает корректную строку сессии
- Сохраняет результат в файл
.envс переменнойTELEGRAM_SESSION
- Python 3.14 (образ
python:3.14.8-slim, запинен по digest) opentele-ng— наш форк opentele без Qt (см.requirements.txt)
Все строки в requirements.txt зафиксированы по версии. С 05.10.2026 вместо
VCS-зависимости opentele @ git+https://github.com/thedemons/opentele.git@1a6f0816…
стоит opentele-ng — наш форк (stufently/opentele,
PyPI): апстрим не обновлялся с 2024-07-15, на Python 3.13+ падает уже при импорте и
тянет PyQt5. Импорт в коде прежний — opentele.td, opentele.api,
opentele.exception. Обновление зависимости = явная смена версии в
requirements.txt + пересборка образа.
Экшены в .github/workflows/ci.yml тоже запинены по commit-SHA: джоба билдит и
пушит ghcr.io/stufently/tdata-session-exporter:latest, т.е. любой пуш в main
ПЕРЕЗАЛИВАЕТ образ под тем же тегом. Правки, не требующие релиза образа, пуши с
[skip ci] в сообщении коммита.
По той же причине docker-compose.yml тянет образ не по голому :latest, а по
дайджесту (:latest@sha256:2c974906… — то, на что тег указывал на момент пина).
После осознанного релиза образа дайджест в compose нужно обновить вручную.
git clone https://github.com/stufently/tdata-session-exporter.git
cd tdata-session-exporter
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate.bat # Windows
pip install --upgrade pip
pip install -r requirements.txt- Положите папку
tdataв один из путей:accounts/<ИМЯ_АККАУНТА>/tdata(рекомендуется)./tdata
- Запустите:
python app/handler.py- В корне проекта появятся файлы:
<ИМЯ_АККАУНТА>.json<ИМЯ_АККАУНТА>.session
Где <ИМЯ_АККАУНТА> — это имя папки над tdata (например, +2349049675164).
python app/handler.py \
--export-tdata "/абс/путь/до/.../tdata" \
--export-out "." \
--export-basename "+2349049675164"python app/handler.py --bundle "/abs/path/accounts/+2349049675164.json"При успехе строка сессии будет записана в .env (TELEGRAM_SESSION).
Run the service with Docker Compose:
docker-compose up -dTo update to a new image version:
docker-compose pull
docker-compose down
docker-compose up -d