Skip to content

Hohlas/ChatSum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Telegram Chat Summary Bot

Telegram userbot для автоматического анализа сообщений чата с помощью Perplexity AI. Бот собирает сообщения за указанный период, фильтрует шум и создает структурированные выжимки с выделением основных тем и аргументов участников. Результат сохраняется в красивом HTML файле и отправляется в вашу группу.

Достаточно отправить в чат сообщение

/sum 12h

Бот создаст выжимку чата, в котором была отправлена команда за последние 12 часов.

✨ Основные возможности

  • 📊 Анализ по времени или количеству: /sum 3h, /sum 2d, /sum 50
  • 💾 Экспорт без AI: /copy 12h — получение JSON файла для самостоятельного анализа в любом ИИ
  • 🎯 Умная фильтрация: автоматическое исключение шума и флуда
  • 👥 Гибкая настройка: исключение/приоритизация пользователей по спискам
  • 📄 HTML отчеты с темной темой: результаты в виде красиво оформленных HTML файлов
  • 🌐 Опциональная публикация в Telegraph: можно переключиться на Telegraph вместо HTML
  • 🌳 Оптимизация списка сообщений: Древовидная структура экспорта и оптимизация полей сообщений для экономии токенов

🚀 Быстрая установка

1. Получение API ключей

Telegram API:

  1. Перейдите на https://my.telegram.org/auth
  2. Войдите с вашим номером телефона
  3. Выберите "API development tools"
  4. Получите api_id и api_hash
  5. Создайте группу для публикации выжимки. Узнайте ID с помощью бота @username_to_id_bot)

Perplexity API:

  1. Зайдите на https://www.perplexity.ai/settings/api
  2. Зарегистрируйте платёжную информацию и пополните баланс
  3. Сгенерируйте API ключ

2. Установка

git clone https://github.com/Hohlas/ChatSum.git
cd ChatSum
pip install -r requirements.txt

3. Настройка

При первом запуске бот автоматически создаст файл private.txt из шаблона private.txt.example.

Откройте private.txt и заполните вашими реальными ключами:

TELEGRAM_API_ID=ваш_api_id
TELEGRAM_API_HASH=ваш_api_hash
TELEGRAM_PHONE=+79001234567
PERPLEXITY_API_KEY=ваш_perplexity_ключ
TELEGRAM_GROUP_ID=-1001234567890 # ID канала для публикации результатов (опционально)

💡 Совет: Если файл не создался автоматически, скопируйте private.txt.example в private.txt и отредактируйте его.

4. Запуск

python3 main.py

При первом запуске Telegram попросит ввести код подтверждения.

📝 Команды

/sum — Получение выжимки с AI

Анализирует сообщения чата с помощью Perplexity AI и создает красивый HTML отчет с автоматической темной темой.

/sum              # Последние 24 часа (по умолчанию)
/sum 12h          # Последние 12 часов
/sum 2d           # Последние 2 дня
/sum 3d 6h        # Последние 3 дня и 6 часов
/sum 50           # Последние 50 сообщений

Результат:

  • Статистика (количество тем, сообщений, токенов, стоимость)
  • HTML файл с полным анализом (автоматическая темная тема)
  • Информация о периоде анализа

💡 Совет: Для публикации в Telegraph вместо HTML, измените USE_HTML_EXPORT=false в MODEL_CONFIG.txt

/copy — Экспорт без AI

Экспортирует сообщения в JSON для самостоятельного анализа с помощью любого ИИ.

/copy 12h         # Экспорт за 12 часов
/copy 50          # Экспорт 50 сообщений

Результат:

  • JSON файл с оптимизированной структурой
  • Готов для копирования в ИИ
  • Информация о периоде экспорта

Управление конфигурацией

/config              # Показать текущую конфигурацию
/show_excluded       # Список исключенных пользователей
/show_priority       # Список приоритетных пользователей
/show_prompt         # Показать промпт для AI
/show_model          # Показать текущую модель AI

/add_excluded User   # Добавить пользователя в исключенные
/remove_excluded User # Удалить из исключенных
/add_priority User   # Добавить в приоритетные
/remove_priority User # Удалить из приоритетных

/set_model sonar-pro # Изменить модель AI
/reload_config       # Перезагрузить конфигурацию из файлов

⚙️ Конфигурационные файлы

Бот использует 4 конфигурационных файла:

EXCLUDED_USERS.txt

Список пользователей, сообщения которых исключаются из анализа.

# Исключенные пользователи (имена, отображаемые в чате, НЕ username)
SpamBot
Flooder

PRIORITY_USERS.txt

Список приоритетных пользователей, чьи сообщения выводятся первыми в анализе.

# Приоритетные пользователи
Expert1
Expert2

PROMPT.txt

Промпт для Perplexity AI, определяющий формат анализа. Можно редактировать для изменения структуры выжимки.

MODEL_CONFIG.txt

Настройки модели AI и формата экспорта:

MODEL=sonar-pro
USE_REASONING=false
USE_HTML_EXPORT=true

Параметры:

  • MODEL: sonar, sonar-pro (рекомендуется)
  • USE_REASONING: экспериментальный режим reasoning
  • USE_HTML_EXPORT:
    • true — создавать HTML файлы (по умолчанию)
    • false — публиковать в Telegraph

Подробнее: CONFIG_MANAGEMENT.md

🖥️ Развертывание на сервере

Через systemd (автозапуск)

  1. Создайте файл /etc/systemd/system/telegram-bot.service:
[Unit]
Description=Telegram Chat Analyzer Bot
After=network.target

[Service]
Type=simple
User=your_username
WorkingDirectory=/path/to/ChatSum
ExecStart=/usr/bin/python3 /path/to/ChatSum/main.py
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
  1. Активируйте сервис:
sudo systemctl daemon-reload
sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot
sudo systemctl status telegram-bot

Через screen (вручную)

# Запуск в фоне
./start_bot_background.sh

# Подключиться к боту
screen -r telegram-chat-analyzer

# Отключиться (Ctrl+A, затем D)
# Остановить
./stop_bot.sh

📊 Формат результатов

HTML отчет (/sum с USE_HTML_EXPORT=true)

Создается красиво оформленный HTML файл с:

  • 🎨 Стили в духе Telegraph: читаемый шрифт, оптимальная ширина, приятные отступы
  • 🌓 Автоматическая темная тема: определяется по настройкам системы
  • 📱 Адаптивный дизайн: отлично выглядит на мобильных устройствах
  • 💡 Заголовки тем (жирный шрифт)
  • Краткое резюме (курсив)
  • Ссылки на сообщения участников
  • Информация о разработчике в конце

Преимущества HTML:

  • ✅ Полностью автономный файл (нет внешних зависимостей)
  • ✅ Не требует интернета для просмотра
  • ✅ Темная тема для комфортного чтения
  • ✅ Можно сохранить и открыть в любое время

Telegraph статья (/sum с USE_HTML_EXPORT=false)

При желании можно переключиться на публикацию в Telegraph:

  • 🌐 Результат доступен по ссылке
  • 📤 Легко поделиться
  • ☁️ Хранится в облаке Telegraph

JSON экспорт (/copy)

{
  "metadata": {
    "chat_id": "1675726024",
    "period_start": "2025-11-19 17:55:17",
    "chat_name": "ProChat",
    "total_messages": 52,
    "filtered_messages": 51
  },
  "messages": [
    {
      "id": 243613,
      "s": "Insey",
      "t": "Текст сообщения",
      "r": [
        {
          "id": 243616,
          "s": "Artem",
          "t": "Ответ"
        }
      ]
    }
  ]
}

Оптимизация: Короткие ключи (s=sender, t=text, r=replies) для экономии токенов.

⚠️ Важные замечания

  • Безопасность:
    • Файл private.txt не должен попадать в git (уже в .gitignore)
    • Шаблон private.txt.example безопасно хранить в репозитории (не содержит реальных ключей)
    • При первом запуске бот автоматически создаст private.txt из шаблона
    • HTML файлы полностью автономны и не содержат трекеров
  • Сессия: Файл *.session содержит данные авторизации, также не в git
  • HTML отчеты: Сохраняются в папке html_reports/ (добавлена в .gitignore)
  • Лимиты API: Следите за использованием Perplexity API
  • Таймауты: Для больших объемов (>200 сообщений) может потребоваться время
  • Временные файлы: Файлы analysis_*.json автоматически удаляются после успешной публикации

🔧 Решение проблем

Бот не запускается:

  • При первом запуске файл private.txt создается автоматически из private.txt.example
  • Проверьте правильность API ключей в private.txt (замените значения-заглушки на реальные)
  • Убедитесь, что установлены все зависимости: pip install -r requirements.txt

Ошибка аутентификации:

  • Удалите файл session_name.session и перезапустите бота
  • Проверьте правильность TELEGRAM_API_ID, TELEGRAM_API_HASH, TELEGRAM_PHONE

Ошибка Perplexity API:

Таймауты при анализе:

  • Уменьшите период анализа (например, /sum 6h вместо /sum 12h)
  • Используйте /copy для экспорта и анализируйте вручную

📄 Лицензия

MIT License. Подробности в файле LICENSE.


💰 0x94f69c258cD251bcB77DBb6156DA13E32dCb8Ef4

About

Telegram chat missage filter

Resources

License

Stars

Watchers

Forks

Packages

No packages published