Skip to main content

Unified Telegram bot with MCP (Model Context Protocol) for information collection and RAG assistant

Project description

🤖 Unified Telegram MCP Bot

Умный Telegram-бот с поддержкой Model Context Protocol (MCP) для сбора информации и персонального RAG-ассистента.

🎯 Особенности

🔄 Единая архитектура с маршрутизацией сообщений

  • Групповые чаты → Коллектор информации (обрабатывает ссылки, сохраняет в базу)
  • Личные сообщения → RAG-ассистент (поиск по базе + умные ответы)

🧠 Интеллектуальные возможности

  • Автоматическая обработка ссылок через MCP Playwright
  • RAG (Retrieval-Augmented Generation) с автоматическим поиском
  • Контекстная память с автоматическим сжатием диалогов
  • Прямое подключение к ChromaDB (минуя ненадежный MCP ChromaDB)

🚀 Режимы развертывания

  • Development (polling) - для демонстрации и разработки
  • Production (webhook) - для продакшн-серверов

📋 Быстрый старт

1. Установка зависимостей

# Клонируйте репозиторий
git clone <your-repo-url>
cd telegram-mcp-bot

# Установите uv (если еще нет)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Установите зависимости Python
uv sync

# Установите MCP Playwright
npx playwright install chromium

2. Настройка окружения

# Скопируйте пример конфигурации
cp .env.example .env

# Отредактируйте .env своими данными:
# - TELEGRAM_TOKEN (получите у @BotFather)
# - LLM_PROXY_API_KEY (ваш API ключ)
# - другие настройки по необходимости

3. Запуск для демонстрации

# Режим разработки (polling)
uv run python unified_bot.py

Бот готов! Добавьте его в групповой чат и напишите в личные сообщения.

🎮 Использование

Командные интерфейсы

В групповых чатах:

  • Просто отправляйте ссылки - бот автоматически их обработает
  • /status - статистика работы бота
  • /stats - детальная статистика обработки

В личных сообщениях:

  • Любой вопрос - бот найдет информацию в базе и ответит
  • /start - приветствие и инструкции
  • /clear - очистить контекст диалога
  • /context - показать текущий контекст

Автоматические функции

Обработка ссылок в группах:

👤 Пользователь: https://github.com/awesome/project
🤖 Бот: ✅ Ссылка обработана и сохранена в базу

RAG-поиск в личных сообщениях:

👤 Пользователь: есть ли что-то про GitHub проекты?
🔍 Бот ищет в базе...
🤖 Бот: Найдено 3 репозитория: awesome/project, cool/tool...

🏗️ Архитектура системы

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Telegram      │    │   Unified Bot    │    │   ChromaDB      │
│   Messages      │───▶│   Router         │───▶│   Knowledge     │
│                 │    │                  │    │   Base          │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                │
                                ▼
                       ┌──────────────────┐
                       │   MCP Playwright │
                       │   Browser        │
                       └──────────────────┘

Компоненты:

🔄 UnifiedTelegramBot (unified_bot.py)

  • Единая точка входа
  • Маршрутизация по типу чата
  • Управление агентами

📊 TelegramCollectorDirect (telegram_collector_direct.py)

  • Обработка групповых сообщений
  • MCP Playwright для ссылок
  • Прямое сохранение в ChromaDB

🧠 PersonalAssistant (personal_assistant.py)

  • Персональный RAG-ассистент
  • Автоматический поиск по ключевым словам
  • Контекстная память диалогов

🔧 Конфигурация

Переменные окружения (.env)

# ==================== ОСНОВНЫЕ НАСТРОЙКИ ====================
TELEGRAM_TOKEN=your_bot_token_here
LLM_PROXY_API_BASE_URL=your_llm_api_url
LLM_PROXY_API_KEY=your_api_key

# ==================== РЕЖИМ РАЗВЕРТЫВАНИЯ ====================
DEPLOYMENT_MODE=polling  # polling для демо, webhook для продакшна

# ==================== ПРОДАКШН НАСТРОЙКИ ====================
WEBHOOK_HOST=your-domain.com
WEBHOOK_PORT=8443
WEBHOOK_PATH=/webhook

# ==================== БРАУЗЕР (HEADLESS ДЛЯ СЕРВЕРОВ) ====================
PLAYWRIGHT_HEADLESS=true
PLAYWRIGHT_NO_SANDBOX=true
PLAYWRIGHT_DISABLE_WEB_SECURITY=true

Автоматические настройки MCP

Система автоматически настраивает MCP серверы:

# Playwright с headless для серверов
"env": {
    "PLAYWRIGHT_HEADLESS": "true",
    "PLAYWRIGHT_NO_SANDBOX": "true",
    # ... другие оптимизации
}

# ChromaDB с прямым подключением
chroma_client = chromadb.PersistentClient(path="./chroma")

🚀 Переход в продакшн

Быстрое переключение:

# 1. Смените режим в .env
DEPLOYMENT_MODE=webhook
WEBHOOK_HOST=your-domain.com

# 2. Запустите webhook версию
uv run python webhook_bot.py

# Или с Gunicorn
gunicorn webhook_bot:create_app -w 1 -k aiohttp.GunicornWebWorker -b 0.0.0.0:8443

Docker развертывание:

# Сборка образа
docker build -t telegram-mcp-bot .

# Запуск с переменными окружения
docker run -d \
  -p 8443:8443 \
  -e TELEGRAM_TOKEN=$TELEGRAM_TOKEN \
  -e WEBHOOK_HOST=$WEBHOOK_HOST \
  -v ./chroma:/app/chroma \
  telegram-mcp-bot

Systemd сервис:

# Создайте systemd сервис
sudo cp deploy/telegram-bot.service /etc/systemd/system/
sudo systemctl enable telegram-bot
sudo systemctl start telegram-bot

📊 Мониторинг и отладка

Команды диагностики:

# Проверка статуса бота
uv run python check_unified_bot.py

# Тест поиска в ChromaDB
uv run python test_chroma_query.py

# Проверка MCP серверов
env | grep PLAYWRIGHT

Логи и метрики:

  • Автоматическое логирование всех операций
  • Статистика через команды /status и /stats
  • Graceful error handling с детальными сообщениями

🔧 Разработка и настройка

Структура проекта:

telegram-mcp-bot/
├── telegram_mcp_bot/          # Основной пакет
│   ├── telegram_collector_direct.py
│   ├── personal_assistant.py
│   ├── agent_runner.py
│   └── chroma_utils.py
├── unified_bot.py             # Polling режим
├── webhook_bot.py             # Webhook режим  
├── production_deployment_guide.md
├── .env.example
└── production.env.example

Кастомизация агентов:

Изменение промптов:

# В telegram_collector_direct.py
SYSTEM_PROMPT = """
Ваш кастомный промпт для коллектора...
"""

# В personal_assistant.py  
SYSTEM_PROMPT = """
Ваш кастомный промпт для ассистента...
"""

Настройка поиска:

# В personal_assistant.py
SEARCH_KEYWORDS = ["github", "проект", "код", "репозиторий"]  # Ваши ключевые слова

🎁 Дополнительные возможности

MCP Tools доступные:

  • browser_navigate - навигация по веб-страницам
  • browser_snapshot - снимки страниц
  • Прямой ChromaDB - надежное сохранение и поиск

Автоматические оптимизации:

  • Ограничение ссылок (максимум 2 за раз)
  • Паузы между запросами (избегание rate limit)
  • Headless браузер для серверов
  • Контекстное сжатие диалогов

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

Частые проблемы:

Бот не отвечает:

# Проверьте токен
echo $TELEGRAM_TOKEN

# Проверьте процесс
ps aux | grep unified_bot

Браузер не работает:

# Установите браузеры
npx playwright install chromium

# Проверьте headless режим
env | grep PLAYWRIGHT_HEADLESS

Ошибки MCP:

# Проверьте MCP серверы
npx --version
uv --version

Получение помощи:

  1. Проверьте логи в консоли
  2. Используйте команды /status для диагностики
  3. Запустите check_unified_bot.py для полной проверки

📦 Как пакет Python

Система также доступна как Python пакет:

# Установка как пакет
pip install -e .

# Использование в коде
from telegram_mcp_bot import TelegramCollectorDirect, PersonalAssistant

🏆 Готово к использованию!

  • Демонстрация: python unified_bot.py
  • Продакшн: python webhook_bot.py
  • Мониторинг: команды /status, /stats
  • Документация: полные инструкции
  • Docker: готовые контейнеры
  • Масштабирование: webhook + системный сервис

🎯 Результат: Полнофункциональная система для демонстрации коллегам с возможностью быстрого перехода в продакшн!

📄 Лицензия

MIT License - используйте свободно для любых целей.

🤝 Вклад в проект

Приветствуются pull requests и issues! Создавайте форки и предлагайте улучшения.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

telegram_mcp_bot-1.0.0.tar.gz (339.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

telegram_mcp_bot-1.0.0-py3-none-any.whl (28.0 kB view details)

Uploaded Python 3

File details

Details for the file telegram_mcp_bot-1.0.0.tar.gz.

File metadata

  • Download URL: telegram_mcp_bot-1.0.0.tar.gz
  • Upload date:
  • Size: 339.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.17

File hashes

Hashes for telegram_mcp_bot-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e4ada42d80231914fa9b50e35c73f3ef6726cc1ab3d18d0e2df5e1b7da04d858
MD5 8e590004ff9b7393da48d93ab10ce3f8
BLAKE2b-256 5ec285efc02f9a7f0e294b4657306beb375276ab8859b8eb653f7a928fb7d41e

See more details on using hashes here.

File details

Details for the file telegram_mcp_bot-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for telegram_mcp_bot-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 60fc7f031341d25ba34a2345f4b19e12243332aba23e22849ffc2ada87a4aa6d
MD5 b964873511182b22d5c7ac52b1a648f2
BLAKE2b-256 af48d906a0fe1bde5e004ece1030373088896c2ce90373c090dad0ae76ec8825

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page