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Назначение: Добавить Telegram-канал/группу в список мониторинга
Действие:
- Добавить запись в PostgreSQL (таблица
channels) - Спарсить все исторические посты через telethon
- Загрузить тексты в Qdrant (создать эмбеддинги через LangChain)
- Активировать мониторинг новых постов
Пример:
/add_group https://t.me/news_channel
Назначение: Удалить канал из мониторинга
Действие:
- Удалить из базы данных (каскадное удаление)
- Удалить векторные эмбеддинги из Qdrant
Пример:
/delete_group https://t.me/news_channel
Назначение: Получить AI-ответ на вопрос на основе собранных новостей
Метод: REST API (используется в inline-callback ботом)
Параметры:
{
"user_id": 123456789,
"question": "Какие новости за последнюю неделю?",
"top_k": 5
}Процесс (LangChain RAG):
- Преобразовать вопрос в эмбеддинг
- Поиск релевантных постов в Qdrant (top_k результатов)
- Составить контекст из результатов
- Передать в LLM с промптом
- Вернуть сгенерированный ответ
Ответ:
{
"answer": "На основе мониторинга за неделю...",
"sources": [
{"channel": "news_channel", "date": "2025-12-05", "post_id": 12345}
]
}Назначение: Создать краткое аналитическое резюме новостей за указанный временной промежуток
Параметры:
{
"user_id": 123456789,
"start_date": "2025-12-01",
"end_date": "2025-12-05",
"channels": ["channel_1", "channel_2"]
}Процесс (LangGraph multi-step):
- Запрос постов из БД за период
- Группировка по темам через LLM
- Генерация саммари по каждой теме
- Компиляция финального отчета
Ответ:
{
"summary": "САММАРИ ЗА ПЕРИОД...\n\n📰 Политика:\n...\n💼 Экономика:\n...",
"posts_processed": 47,
"period": "2025-12-01 до 2025-12-05"
}Авторы: Vladimir Enshov, Zavodov Andrey