Telegram Summary Bot

Бот для Telegram, который собирает обсуждения в чатах (с поддержкой топиков) и периодически делает саммари с помощью Google Gemini AI или OpenAI (выбор через .env). Бот анализирует сообщения, выделяет основные темы, собирает важные ссылки и публикует саммари с динамическим тегом и ссылкой на донат.

Возможности

  • 🤖 Умное определение главных тем обсуждения с помощью Gemini AI или OpenAI (выбор через .env)
  • 📊 Сбор и анализ сообщений по топикам и в общих чатах
  • ⏰ Настраиваемые периодические саммари
  • 📍 Гибкая маршрутизация саммари в выбранный топик/чат
  • 🔒 Административный контроль (все команды доступны только админам)
  • 🔗 Автоматический сбор ссылок из обсуждений
  • 📝 Форматирование саммари с эмодзи, количеством сообщений, ссылками и тегом #dailysummary
  • 🛡️ Ограничение длины сообщения Telegram (4096 символов)
  • 🟢 Docker и docker-compose для быстрого запуска

Требования

  • Python 3.12+
  • Redis для хранения сообщений
  • Telegram Bot Token
  • Google Gemini API Key и/или OpenAI API Key

Переменные окружения

Создайте файл .env на основе example.env:

# Telegram Bot Token
TELEGRAM_TOKEN=ваш_токен_бота

# Google Gemini API Key
GEMINI_API_KEY=ваш_ключ_gemini

# OpenAI API Key (если используется OpenAI)
OPENAI_API_KEY=ваш_ключ_openai

# Провайдер саммари: gemini или openai
SUMMARIZER_PROVIDER=gemini

# Модель для саммари (например, models/gemini-1.0-pro или gpt-4-turbo-preview)
SUMMARIZER_MODEL=models/gemini-1.0-pro

# Интервал саммари в минутах (по умолчанию 60)
SUMMARY_INTERVAL_MINUTES=60

# Ссылка для доната (опционально, если не указана — будет только тег)
DAILY_SUMMARY_LINK=https://www.buymeacoffee.com/your-link

Установка и запуск

1. Подготовка окружения

# Клонируйте репозиторий
git clone https://github.com/TrackLine/summary-bot.git
cd summary-bot

# Установите зависимости
pip install -r requirements.txt

2. Настройка Redis

Через Docker (рекомендуется):

docker run -d -p 6379:6379 redis:7

Или локально:

Установите Redis через пакетный менеджер вашей системы.

3. Запуск бота

python bot.py

4. Запуск через Docker Compose (альтернативно)

docker-compose up --build

Команды бота

⚠️ Все команды доступны только администраторам чата

  • /start — Информация о боте и список команд
  • /summary_now — Создать саммари немедленно
  • /set_summary_topic — Выбрать топик для отправки саммари
  • /set_interval — Установить интервал автоматического саммари (в минутах)
  • /summary_on — Включить автоматическое саммари
  • /summary_off — Выключить автоматическое саммари
  • /select_topics — Выбрать топики для анализа через кнопки

Особенности работы

  • Бот автоматически определяет и группирует сообщения по топикам в форумах
  • Использует Google Gemini AI или OpenAI для умного определения тем обсуждения
  • Сохраняет сообщения в Redis с политикой хранения 3 дня
  • Автоматически собирает все ссылки из обсуждений
  • Поддерживает эмодзи для разных типов тем
  • Показывает прогресс при генерации саммари
  • Форматирует саммари с тегом #dailysummary (ссылка на донат добавляется только если указана)
  • Соблюдает лимит Telegram на длину сообщения (4096 символов)

Техническая информация

  • Асинхронная обработка с использованием aiogram 3.x
  • Интеграция с Google Gemini AI и OpenAI
  • Redis для хранения сообщений и настроек
  • Поддержка HTML форматирования в саммари
  • Автоматическое экранирование специальных символов
  • Docker/Docker Compose для быстрого деплоя

Безопасность

  • Все команды управления доступны только администраторам
  • Безопасное хранение токенов через переменные окружения
  • Автоматическое экранирование HTML в сообщениях

Разработка и вклад в проект

Если вы хотите внести свой вклад в развитие бота:

  1. Форкните репозиторий
  2. Создайте ветку для своих изменений
  3. Внесите изменения и создайте pull request

Лицензия

MIT License