Практика работы с Telegram

Экспорт комментариев Telegram в JSONL: пример на Python

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

Редакция Telecobra · Обновлено 18 сентября 2026

Определите пост и обсуждение

Для сверки вопросов читателей или анализа обратной связи нужен конкретный пост канала с привязанной группой обсуждения. Запишите username канала и ID поста. В публичной ссылке вида t.me/channel_name/123 число 123 — ID поста; это не ID отдельного комментария.

Ваш аккаунт должен иметь доступ к обсуждению. Обычный чат, личный диалог и канал без обсуждения требуют другого сценария. Пример сохраняет текст и структуру ответов, но не скачивает вложения и не раскрывает телефоны авторов.

Скачать Python-примеры с README и лицензией MIT →

В архиве только исходный код и инструкции. Токены, аккаунты и готовые базы пользователей в него не входят. Код бесплатный; компьютер, хостинг и интернет оплачиваются отдельно.

Подготовьте отдельное окружение

python -m venv .venv
# Активируйте окружение способом вашей ОС
python -m pip install telethon==1.45.0

Создайте свои API ID/hash приложения на my.telegram.org и задайте TELEGRAM_API_ID, TELEGRAM_API_HASH переменными среды. TELEGRAM_SESSION определяет отдельный локальный файл авторизации. Не передавайте файл сессии другим людям и не используйте его одновременно в нескольких работающих клиентах.

Сначала просмотр, затем выгрузка

python export_telegram.py comments --source @your_owned_channel --post 123 --limit 100 --output comments-123.jsonl
python export_telegram.py comments --source @your_owned_channel --post 123 --limit 100 --output comments-123.jsonl --execute

Замените источник и пост своими. Без --execute сеть не используется. При первом выполнении потребуется ваш вход в Telegram. Итератор библиотеки читает страницы обсуждения; limit ограничивает число записей. Увеличение до 10000 допускает пример, но не гарантирует наличие или доступность такого числа комментариев.

Существующий файл не перезаписывается. Для повторной попытки выберите другое имя, затем сопоставьте message_id. Автоматического возобновления с места остановки в этом небольшом примере нет.

Проверьте результат

ПолеЗначение
message_idИдентификатор сообщения в обсуждении.
dateВремя сообщения с часовым поясом.
reply_toID сообщения, на которое дан ответ, если он есть.
textТекст или подпись; пустая строка допустима для нетекстового сообщения.

Откройте файл как UTF-8 JSON Lines. Сравните несколько известных комментариев с обсуждением в клиенте, проверьте крайние даты и предел выборки. Число строк — число полученных записей, а не доказательство полного исторического архива.

Если строк меньше ожидаемого

  • Сработал ваш limit: повторите с обоснованным большим пределом и новым выходным файлом.
  • Часть обсуждения удалена или недоступна аккаунту. Программа не восстанавливает отсутствующие данные.
  • Получен FloodWait: выгрузка прекращается и сохраняет записанную часть; дождитесь указанного Telegram времени.
  • Ответы самого канала на собственный пост могут не входить в результаты метода reply_to.

Проверены синтаксис примера и документированный контракт Telethon. Онлайн-выгрузка на чужих или боевых аккаунтах не выполнялась. Для экспорта через кабинет Telecobra используйте инструкцию парсера комментариев.

Источники и документация

Одна платформа · разные задачи

Подписка Telecobra

Соберите инструменты для работы с Telegram в одном кабинете. Сроки доступа, цены и условия — на странице подписки.

В этой инструкции описана только часть возможностей платформы. Полный список доступен в разделе функций.