Skip to content

Astra42/NewsHound

Repository files navigation

Telegram News Monitor Bot

Python aiogram Status

📋 Описание проекта

Telegram News Monitor Bot — это AI-powered бот для автоматического мониторинга новостей из Telegram-каналов с возможностью ответа на пользовательские вопросы и генерации аналитических саммари по датам.

Проблема: Пользователи теряют важную информацию в потоке новостей из множества Telegram-каналов, сложно найти релевантную информацию и быстро получить аналитику.

Решение: Бот автоматически собирает, индексирует и обрабатывает новости, предоставляя интеллектуальный доступ к контенту через естественный язык.

Ключевые возможности:

  • 🔄 Мониторинг каналов — автоматическое отслеживание и индексирование постов из добавленных групп/каналов в векторное хранилище
  • 🤖 AI-ответы — ответы на вопросы пользователей с использованием RAG (Retrieval-Augmented Generation) через LangGraph
  • 📊 Саммари по датам — генерация кратких аналитических резюме для указанного временного промежутка
  • Быстрый поиск — семантический поиск через векторные эмбеддинги

🛠 Технологический стек

Основные компоненты

Компонент Технология Назначение
Telegram API aiogram 3.x Интеграция с Telegram (отправка/получение сообщений)
Парсинг каналов telethon Извлечение постов из Telegram-каналов
LLM & RAG LangChain, LangGraph Обработка вопросов и генерация ответов
Оркестрация FastAPI REST API для управления ботом
Хранилище эмбеддингов FAISS / PostgreSQL Векторное хранилище для семантического поиска
База данных PostgreSQL Хранение метаданных постов, пользователей, истории
Эмбеддинги OpenAI Embeddings / Hugging Face Векторные представления текста

Зависимости

aiogram==3.x           # Telegram Bot API
telethon==1.x          # Telegram client для парсинга
langchain==0.1.x       # LLM framework
langgraph==0.1.x       # Multi-agent orchestration
fastapi==0.104.x       # Web framework
pydantic==2.x          # Data validation
sqlalchemy==2.x        # ORM для работы с БД
psycopg2-binary        # PostgreSQL adapter
qdrant-client          # Vector database client
python-dotenv          # Environment variables

🤖 Команды бота

1. Управление источниками новостей

/add_group <группа_ссылка>

Назначение: Добавить Telegram-канал/группу в список мониторинга
Действие:

  • Добавить запись в PostgreSQL (таблица channels)
  • Спарсить все исторические посты через telethon
  • Загрузить тексты в Qdrant (создать эмбеддинги через LangChain)
  • Активировать мониторинг новых постов

Пример:

/add_group https://t.me/news_channel

/delete_group <группа_ссылка>

Назначение: Удалить канал из мониторинга
Действие:

  • Удалить из базы данных (каскадное удаление)
  • Удалить векторные эмбеддинги из Qdrant

Пример:

/delete_group https://t.me/news_channel

2. Ответ на вопросы пользователя

POST /api/completion

Назначение: Получить AI-ответ на вопрос на основе собранных новостей
Метод: REST API (используется в inline-callback ботом)
Параметры:

{
  "user_id": 123456789,
  "question": "Какие новости за последнюю неделю?",
  "top_k": 5
}

Процесс (LangChain RAG):

  1. Преобразовать вопрос в эмбеддинг
  2. Поиск релевантных постов в Qdrant (top_k результатов)
  3. Составить контекст из результатов
  4. Передать в LLM с промптом
  5. Вернуть сгенерированный ответ

Ответ:

{
  "answer": "На основе мониторинга за неделю...",
  "sources": [
    {"channel": "news_channel", "date": "2025-12-05", "post_id": 12345}
  ]
}

3. Генерация саммари по периоду

POST /api/summary

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

{
  "user_id": 123456789,
  "start_date": "2025-12-01",
  "end_date": "2025-12-05",
  "channels": ["channel_1", "channel_2"]
}

Процесс (LangGraph multi-step):

  1. Запрос постов из БД за период
  2. Группировка по темам через LLM
  3. Генерация саммари по каждой теме
  4. Компиляция финального отчета

Ответ:

{
  "summary": "САММАРИ ЗА ПЕРИОД...\n\n📰 Политика:\n...\n💼 Экономика:\n...",
  "posts_processed": 47,
  "period": "2025-12-01 до 2025-12-05"
}

Авторы: Vladimir Enshov, Zavodov Andrey

About

Your personal news assistant

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors