Гайд · 7 мин чтения

Настраиваем автоотчет по всем Telegram чатам и каналам

Настройте бота который каждое утро читает ваши Telegram-чаты и каналы и присылает сводку. Telethon + Claude Code + VPS — 0 минут ручного чтения.

243 просмотров
Настраиваем автоотчет по всем Telegram чатам и каналам

У меня в Telegram было 15 чатов и каналов которые я читал каждое утро. Это занимало 20-30 минут — и половину времени я просто листал шум.

Теперь в 9 утра мне приходит одно сообщение. Claude собрал всё важное, отфильтровал мусор и написал сводку. Я трачу 2 минуты вместо 30.

В этом гайде — как настроить точно такую же систему с нуля.

Что строим

Бот который по расписанию:

  1. Читает сообщения из любых Telegram-чатов и каналов к которым у вас есть доступ
  2. Фильтрует шум (короткие реплики, стикеры, приветствия)
  3. Отправляет данные Claude Code для анализа
  4. Присылает готовый дайджест вам в личку

Стек: Python + Telethon (парсинг) + Claude Code (анализ) + системный cron (расписание). VPS за $5/мес, подписка Claude Max — больше ничего платить не нужно.

Что потребуется

Шаг 1. Получить API Telegram

Telethon работает от вашего имени — как полноценный Telegram-клиент. Для этого нужны API credentials.

  1. Зайдите на my.telegram.org
  2. Войдите через номер телефона
  3. Перейдите в API development tools
  4. Заполните форму: App title (любое), Short name (любое), Platform — Other
  5. Нажмите Create application

Вы получите два значения — сохраните их:

api_id = 12345678
api_hash = "abc123def456..."
Это credentials вашего аккаунта. Не публикуйте их и не давайте никому — через них можно войти в ваш Telegram.

Шаг 2. Где запускать бота

Сервер — опциональный. Бот отлично работает и на вашем Mac или Windows. Единственный нюанс: компьютер должен быть включён в момент запуска по расписанию. Если вы и так держите его включённым по утрам — сервер не нужен, пропустите установку зависимостей ниже и просто установите Python и Telethon локально.

Сервер нужен если:

Подойдёт любой VPS за $4-7/мес — Hetzner, DigitalOcean, Timeweb Cloud. Если решили использовать сервер — откройте Terminal на Mac и подключитесь по SSH (IP берёте из панели вашего хостинга):

ssh root@YOUR_SERVER_IP

После подключения вы окажетесь внутри сервера. Там выполните установку зависимостей:

apt update && apt install -y python3 python3-pip python3-venv nodejs npm
python3 -m venv /root/venv
/root/venv/bin/pip install telethon

Если работаете локально на Mac — просто откройте Terminal и выполните:

pip3 install telethon

Шаг 3. Авторизация Telethon (один раз)

Это единственный шаг который нужно сделать интерактивно — Telegram пришлёт код подтверждения на ваш номер.

Создайте файл /root/auth_telethon.py — проще всего передать код ниже в Claude Code с командой "создай этот файл", или скопировать вручную через любой текстовый редактор на сервере (nano /root/auth_telethon.py):

from telethon import TelegramClient

API_ID = 12345678       # ваш api_id
API_HASH = "abc123..."  # ваш api_hash

client = TelegramClient("digest_session", API_ID, API_HASH)

async def main():
    await client.start()
    me = await client.get_me()
    print(f"Авторизован как: {me.first_name} ({me.phone})")
    await client.disconnect()

import asyncio
asyncio.run(main())

Запустите и введите код из Telegram:

/root/venv/bin/python3 /root/auth_telethon.py

После успешной авторизации появится файл digest_session.session. Это сохранённая сессия — в следующий раз код вводить не придётся.

Шаг 4. Парсер чатов

Теперь нужен скрипт который читает сообщения из нужных чатов и сохраняет их в файл. Напишем его через Claude Code.

Откройте Claude Code и дайте такой промпт:

Напиши Python-скрипт /root/tg-digest-fetch.py который:

1. Использует Telethon с сессией ~/digest_session, API_ID и API_HASH из переменных окружения
2. Читает сообщения за последние 24 часа из следующих чатов (задай как список CHAT_IDS с числовыми ID или username):
   - @channel_name (или числовой ID)
   - добавь ещё нужные
3. Фильтрует шум: сообщения короче 15 символов, стикеры, одиночные эмодзи, типичные приветствия
4. Сохраняет результат в ~/.digest/YYYY-MM-DD.json в формате:
   {
     "date": "2026-04-07",
     "chats": {
       "Название чата": [
         {"time": "09:15", "text": "текст сообщения до 1000 символов"}
       ]
     },
     "total": 42
   }
   (имена отправителей НЕ сохранять — только время и текст)
5. Выводит статистику: сколько сообщений из каждого чата
6. Хранит файлы только за последние 7 дней (старые удаляет)

Зависимости: только telethon (уже установлен в /root/venv).
Запускается как: /root/venv/bin/python3 /root/tg-digest-fetch.py

После того как Claude напишет скрипт — нужно указать ID ваших чатов. Самый простой способ их узнать — попросите Claude Code добавить в скрипт авторизации вывод всех диалогов:

# Этот код добавьте в auth_telethon.py перед disconnect(), или дайте Claude Code команду:
# "добавь вывод всех диалогов с их ID в auth_telethon.py"
async for dialog in client.iter_dialogs():
    print(dialog.id, dialog.name)

Запустите скрипт авторизации ещё раз — он выведет список всех ваших чатов и каналов с ID. Найдите нужные и скопируйте их ID в переменную CHAT_IDS в скрипте парсера.

Проверьте что скрипт работает:

API_ID=12345678 API_HASH="abc123..." /root/venv/bin/python3 /root/tg-digest-fetch.py

Шаг 5. Создать Telegram-бота для отправки

Для отправки дайджеста нужен отдельный бот. Создаётся за 1 минуту:

  1. Напишите @BotFather в Telegram
  2. Отправьте /newbot
  3. Придумайте имя и username (должен заканчиваться на bot)
  4. Получите токен вида 1234567890:ABCdef... — сохраните его
  5. Напишите вашему боту /start — это нужно чтобы он мог слать вам сообщения

Узнайте ваш Telegram ID (куда бот будет слать дайджест):

  1. Напишите @userinfobot
  2. Он покажет ваш числовой ID — сохраните

Шаг 6. Установить Claude Code

Claude Code анализирует данные из чатов и формирует дайджест. Установите его там где будет работать бот — на сервере или локально на Mac:

npm install -g @anthropic-ai/claude-code

Авторизация на Mac (локально)

Если бот будет работать на Mac — авторизуйтесь интерактивно:

claude login

Выберите 1 — Claude account with subscription, откройте ссылку в браузере, вставьте код обратно в терминал.

Авторизация на сервере (VPS)

На сервере обычный claude login не подойдёт — он открывает браузер, которого на VPS нет. Кроме того, стандартный OAuth-токен истекает каждые ~10 часов. Если ваш cron запустится после истечения — дайджест не отправится.

Решение — long-lived токен через setup-token. Он действует 1 год и не требует обновления.

На Mac (где есть браузер) выполните:

claude setup-token

Откроется браузер для авторизации. После этого в терминале появится токен вида sk-ant-oat01-... — скопируйте его.

На сервере добавьте этот токен в переменные окружения (мы это сделаем в Шаге 7 вместе с остальными переменными). Claude Code автоматически подхватывает CLAUDE_CODE_OAUTH_TOKEN из окружения — никакие credentials-файлы не нужны.

Проверьте что работает (на сервере — с переменной, на Mac — без):

claude -p "скажи привет" --output-format text

Шаг 7. Скрипт дайджеста

Теперь главный скрипт — он берёт данные из файла, отправляет Claude на анализ и присылает дайджест в Telegram.

Промпт для Claude Code:

Напиши bash-скрипт /root/tg-digest-send.sh который:

1. Читает переменные из /root/.env.digest:
   TELEGRAM_BOT_TOKEN=...
   TELEGRAM_MY_ID=...
   API_ID=...
   API_HASH=...

2. Запускает /root/venv/bin/python3 /root/tg-digest-fetch.py для получения свежих данных

3. Читает сегодняшний файл из ~/.digest/YYYY-MM-DD.json

4. Вызывает Claude Code неинтерактивно:
   claude -p "$PROMPT" --allowedTools "Bash" --max-turns 10 --output-format text

   Промпт для Claude должен содержать:
   - Данные из JSON-файла
   - Задание: проанализировать сообщения, выделить самое важное и интересное,
     сформировать дайджест до 15 пунктов, отфильтровать флуд и мусор
   - Задание: отправить результат через curl в Telegram API на $TELEGRAM_MY_ID
   - Формат сообщения: Markdown, заголовок с датой, пронумерованные пункты

5. Логирует результат в /var/log/tg-digest.log с временными метками

Сделай скрипт исполняемым (chmod +x).

После того как Claude напишет скрипт — создайте файл с вашими переменными. Выполните в терминале сервера (или на Mac, если работаете локально):

cat > /root/.env.digest << 'EOF'
TELEGRAM_BOT_TOKEN=1234567890:ABCdef...
TELEGRAM_MY_ID=123456789
API_ID=12345678
API_HASH=abc123def456...
CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-...
EOF
chmod 600 /root/.env.digest

Переменная CLAUDE_CODE_OAUTH_TOKEN — тот самый long-lived токен из Шага 6. На Mac его можно не добавлять, если вы авторизовались через claude login.

Запустите вручную для проверки:

/root/tg-digest-send.sh

Через 1-2 минуты должен прийти дайджест в личку бота.

Шаг 8. Настроить расписание

Добавьте задачу в cron — бот будет запускаться каждый день в 9 утра. Выполните в терминале (на сервере или на Mac):

crontab -e

Добавьте строку (время в UTC, подберите под ваш часовой пояс):

# Дайджест Telegram в 9:00 по московскому времени (UTC+3 = 06:00 UTC)
0 6 * * * /root/tg-digest-send.sh >> /var/log/tg-digest.log 2>&1

Сохраните и выйдите. Cron подхватит изменения автоматически.

Что дальше

Базовая система готова. Вот что можно добавить:

Весь этот гайд — то что я реально использую каждый день. Скрипты из шагов 4 и 7 написал Claude Code за несколько минут. Самое долгое — авторизация Telethon и BotFather, и то это 10 минут руками.