Skip to content
HohlasPublic

About

Telegram chat missage filter

Resources

Stars

13 stars

Watchers

0 watching

Forks

Repository files navigation

ChatSum

Открываешь чат после пары дней тишины — а там уже тысяча новых сообщений. Одна команда — и вместо бесконечной ленты получаешь стройный разбор: всё разложено по темам, сжато до сути, каждый вывод подкреплён цитатой. Бежишь глазами по заголовкам, останавливаешься только на важном. Захотел подробностей — читаешь короткие выжимки из слов участников и по ссылке прыгаешь точно к месту спора в чате.

Тысячи сообщений в чате — одна команда, и получаешь аккуратный разбор: главные темы, кто что говорил, важные ссылки и цифры. Не надо листать чат за неделю — бот прочитает всё сам и разложит по полочкам.

Что он умеет

  • Саммари за период: «что было в чате за последние 12 часов / 2 дня».
  • Саммари по количеству: «разбери последние 50 сообщений».
  • Саммари по расписанию: каждое утро получаешь дайджест чата сам, без команд.
  • Выгрузка без нейросети: сохранить переписку текстом, чтобы разобрать вручную.

Как выглядит результат

Вместо сотни сообщений — темы с выводами. Нажми, чтобы развернуть кусок живого саммари (полный разбор):

Пример саммари чата (04.10, 11:14 – 12:47)

💡 Просмотр точного времени через CLI Участники обсудили способы узнать точное время событий, отметив, что детальную информацию можно увидеть через командную строку. — 04.10 11:14 — Vladimir S.: отметил, что ранее видел только дату и искал, где указано время. Orion: подсказал, что точное время отображается в CLI.

💡 Занижение скорости генерации и тариф Ultra-Fast Участники выражают недовольство занижением скорости работы сервиса (около 300 т/с вместо обещанных 750 т/с) и связывают это со снижением серверных мощностей или продвижением платных опций. — 04.10 11:53 — Vlad: предполагает намеренное занижение скорости ради продвижения тарифа. Pavel K: считает, что пользователей пересадили на меньшее число серверов, и сомневается в скором расширении инфраструктуры.

💡 Закрытие бесплатного доступа к Google Gemini Google ограничивает бесплатный доступ к линейке Gemini, оставляя без подписки лишь Flash-Lite, а доступ к Flash и Pro потребует тарифов AI Plus ($5) и AI Pro ($20). — 04.10 12:39 — Stas2063: поделился ссылкой на новость об ограничении доступа с 9 октября. iLYA Boytsov: предположил, что платные тарифы сигнализируют о скором релизе новой версии.

Режим «размышления» модели (reasoning_effort: none / low / medium / high)

Перед ответом модель может «думать» — тратить время и токены на внутренние рассуждения. Режим задаёт их объём: none — без раздумий, high — максимум. Чем глубже разбор, тем больше тем он вылавливает, но тем чаще появляются повторы и мелкие темы.

Замер на реальном чате (~550 сообщений, один и тот же вход):

Режим Тем Мышление, токенов
none 22 0
low 29 2 044
medium 36 16 378
high 57 49 145
  • none — аккуратно и компактно, но теряет часть мелких обсуждений.
  • low — небольшой прирост покрытия.
  • medium — заметно полнее, повторов ещё мало.
  • high — вдвое больше тем, но среди них дубли заголовков и темы из одного сообщения (шум).

Выбран medium (в MODEL_CONFIG.txt) — максимум полноты без мусора. Режим задаётся строкой GEMINI_REASONING_EFFORT; изменения применяются после перезагрузки конфига (/reload_config).

Основные команды

/sum 12h     — что было в чате за последние 12 часов
/sum 2d      — за последние 2 дня
/sum 50      — последние 50 сообщений
/copy 100    — сохранить последние 100 сообщений без анализа (бесплатно)
/sch ...     — настроить ежедневный дайджест (подробности ниже)

Команды отправляются прямо в чат — бот работает с твоего аккаунта и отвечает там же.

Расширенный список команд
/sum            — за последние 24 часа
/sum 3h        — за последние 3 часа
/sum 2d        — за последние 2 дня
/sum 45        — последние 45 сообщений
/sum 600-800   — сообщения с 600-го по 800-е от конца
/sum 2d-3d     — сообщения от 3 до 2 дней назад
/sum 1d+       — анализ + копия результата в исходный чат
/sum 1d-       — вместо Telegraph прислать как сообщение Telegram
/sum1d+-       — пробел не обязателен, + и - можно вместе

/copy 3h | /copy 50 | /copy 600-800 | /copy 2d-3d
               — то же, но выгрузка без анализа (бесплатно):
                 JSON-файл + текст для ручного разбора
/help          — справка

Настройка и расписание — только на своём сервере (в GitHub Actions расписание задаётся файлом SCHEDULE.txt):

/config /show_model /show_excluded /show_priority /show_prompt
/add_excluded НИК /remove_excluded НИК
/add_priority НИК /remove_priority НИК
/set_model НАЗВАНИЕ
/reload_config
/sch 09:00 1d    — дайджест каждый день в 09:00 МСК
/sch 21:30 12h   — то же на 21:30 с охватом 12 часов
/sch 09:00 1d+   — + копия в исходный чат, - как сообщение Telegram
/sch_list /unsch

Два способа запуска

Свой сервер (VPS) GitHub Actions (бесплатно)
Что нужно Компьютер или сервер, который всегда включён Только аккаунт GitHub, сервера не надо
Как работает Бот постоянно на связи, отвечает сразу Бот просыпается по расписанию и по твоим командам
Команды Прямо в любом чате: /sum 12h В общем чате: sum50 + ссылка на чат

Можно только один способ за раз — оба сразу не работают.

Установка

Что нужно заранее (для обоих способов)

Telegram: api_id и api_hash (бот через BotFather НЕ нужен)

Здесь нужен не отдельный бот, а приложение в системе Telegram: программа входит от твоего имени (такой запуск называется «userbot» — программа действует как твой аккаунт). Шаги по официальной справке (https://core.telegram.org/api/obtaining_api_id):

  1. Поставь официальный клиент Telegram и зарегистрируйся.
  2. Открой https://my.telegram.org/auth и войди по номеру телефона (код придёт в Telegram).
  3. Раздел API development tools → заполни короткую форму (название и платформа — любые) → получишь api_id (число) и api_hash (строка).
  4. Впиши их в private.txt вместе с номером телефона в виде +7999....

Помни: один номер — одно приложение; важные письма разработчика приходят на этот номер. Ключи никому не показывай.

Gemini: бесплатный ключ для gemini-3.6-flash
  1. Открой https://aistudio.google.com/apikey и войди Google-аккаунтом.
  2. Нажми Create API key, выбери или создай проект — ключ вида AIza... появится на странице ключей (справка: https://ai.google.dev/gemini-api/docs/api-key).
  3. Вставь ключ в private.txt как GOOGLE_API_KEY. Для запаса лимита добавь ещё: GOOGLE_API_KEY1, GOOGLE_API_KEY2… — бот крутит их по кругу.
  4. Модель уже выбрана в файле MODEL_CONFIG.txt (строка GEMINI_MODEL=gemini-3.6-flash) — в private.txt её писать не надо.

Старт бесплатный: щедрые лимиты, токены входа и выхода бесплатны (цены: https://aistudio.google.com/docs/pricing). Учти: на бесплатном уровне содержимое могут использовать для улучшения продуктов.

Как заполнить private.txt
TELEGRAM_API_ID=12345678
TELEGRAM_API_HASH=0123456789abcdef0123456789abcdef
TELEGRAM_PHONE=+79991234567
TELEGRAM_GROUP_ID=-1002...
GOOGLE_API_KEY=AIzaSyExampleKey
# запас лимита:
# GOOGLE_API_KEY1=AIzaSy...
# GOOGLE_API_KEY2=AIzaSy...

TELEGRAM_GROUP_ID — чат для результатов, узнай через @username_to_id_bot. Модель задаётся в MODEL_CONFIG.txt, а не здесь.

Вариант 1. Свой сервер

git clone https://github.com/Hohlas/ChatSum.git && cd ChatSum
./scripts/setup.sh        # проверит Python, поставит всё нужное
# заполни private.txt ключами из прошлого шага:
cp private.txt.example private.txt

Минимальное содержимое private.txt (модель — в MODEL_CONFIG.txt):

TELEGRAM_API_ID=12345678
TELEGRAM_API_HASH=0123456789abcdef0123456789abcdef
TELEGRAM_PHONE=+79991234567

GOOGLE_API_KEY=AIzaSyExampleKey

Запуск:

python3 main.py           # обычный запуск
./scripts/start_bot_background.sh   # в фоне, чтобы работал после закрытия окна

При первом запуске Telegram пришлёт код подтверждения на твой номер — введи его в окно запуска. Дальше заходи в любой чат и пиши /sum 12h.

Ежедневный дайджест настраивается командой прямо в чате, например /sch 08:00 1d — каждое утро в 8:00 будет саммари чата за сутки.

Вариант 2. GitHub Actions (без сервера)

  1. Нажми Fork на странице проекта и склонируй свой форк.
  2. Выполни шаги из варианта 1 до private.txt включительно.
  3. Сгенерируй строку сессии: ./venv/bin/python tools/gen_session.py.
  4. Залей ключи в GitHub: ./scripts/push_github_secrets.sh.
  5. Открой в расписании файл SCHEDULE.txt — каждая строка это номер-чата|время|охват, например -1001234567890|08:00|1d (дайджест каждое утро в 8:00). Закоммить и запушь.
  6. Запусти вручную: Actions → ChatSum scheduled summaries → Run workflow. Дальше бот просыпается сам каждые ~11 минут.

Разовые команды — в общем чате бота: sum50 + ссылка на чат (например, sum50 t.me/название_чата). Выполненная команда исчезает сама.

Если что-то пошло не так

  • «429 quota exceeded» — закончился бесплатный лимит Gemini. Подожди до завтра или добавь ещё ключи (GOOGLE_API_KEY1, GOOGLE_API_KEY2…).
  • Telegram снова просит код — сессия слетела, просто пройди вход заново.
  • Бот молчит — проверь, что заполнены все ключи в private.txt и что процесс запущен (для VPS).

Лицензия

См. файл LICENSE.

About

Telegram chat missage filter

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages