ИИ-бот для Telegram, который автоматически сохраняет сообщения из чатов и предоставляет интеллектуальный анализ, включая краткие изложения и извлечение задач. Построен на Python, LangChain с поддержкой локального и облачного хранения.
- Автоматическое логирование сообщений: Сохраняет все сообщения чата в оптимизированном JSON формате
- ИИ-анализ: Использует LangChain с пользовательскими ИИ-моделями для интеллектуальной обработки
- Краткие изложения чатов: Генерирует краткие изложения разговоров в чате на русском языке
- Извлечение задач: Автоматически выявляет и извлекает задачи, поручения и пункты действий
- Отслеживание отправителей: Захватывает информацию об отправителе и метаданные сообщений
- Поддержка множественных платформ: Работает с приватными чатами, публичными каналами и групповыми беседами
- Локальное хранение: Сохраняет данные в локальных JSON файлах, организованных по чатам и датам
- S3 хранение: Поддержка облачного хранения с AWS S3 или совместимыми с S3 сервисами
- Гибкая организация: Данные структурированы как
chat_id/DDMMYYYY.jsonдля легкого доступа
- Умные краткие изложения: ИИ-генерируемые краткие изложения чатов с основными темами и ключевыми моментами
- Управление задачами: Извлекает задачи с исполнителями, описаниями и сроками
- Осведомленность о контексте: Понимает контекст разговора и взаимосвязи
- Поддержка русского языка: Оптимизирован для обработки русского языка
- Конфигурация окружения: Гибкая настройка через переменные окружения
- Типобезопасность: Полная валидация моделей Pydantic и проверка типов
- Асинхронная обработка: Высокопроизводительная асинхронная обработка сообщений
- Статистика: Статистика сообщений и аналитика
- Поддержка Docker: Полная контейнеризация с Docker и Docker Compose
- Health Check: Встроенные эндпоинты для мониторинга состояния на порту 8080
- Python 3.10 или выше
- Токен Telegram-бота (получить у @BotFather)
- ИИ API ключ (для ИИ-функций)
- S3 учетные данные (опционально, для облачного хранения)
-
Клонировать репозиторий:
git clone <repository-url> cd evo-foundation-models-tg-bot-lab
-
Автоматическая настройка окружения:
# Создать виртуальное окружение и установить зависимости python setup.py venv # Или для разработки с дополнительными инструментами python setup.py dev
-
Активировать виртуальное окружение:
# Windows .venv\Scripts\activate # Linux/Mac source .venv/bin/activate
-
Настроить окружение:
cp env.example .env # Отредактировать .env с вашими учетными данными
python -m chat_bot.bot/summary- Генерировать ИИ-краткое изложение недавних сообщений чата/tasks- Извлекать и перечислять задачи из разговоров в чате
- Приватные чаты: Добавить бота как администратора
- Публичные каналы: Добавить бота как администратора
- Групповые чаты: Добавить бота как администратора
Необходимые разрешения бота:
- Читать сообщения
- Отправлять сообщения (для ответов на команды)
chat_logs/
├── chat_id_1/
│ ├── 12082025.json
│ ├── 13082025.json
│ └── ...
├── chat_id_2/
│ ├── 12082025.json
│ └── ...
└── ...
{
"messages": [
{
"timestamp": "2023-12-25T10:30:45.123456",
"message_id": 12345,
"sender_name": "Иван Иванов",
"text": "Привет, мир!"
}
]
}| Переменная | Обязательно | По умолчанию | Описание |
|---|---|---|---|
TELEGRAM_BOT_TOKEN |
Да | - | Токен бота Telegram от @BotFather |
AI_API_KEY |
Да | - | ИИ API ключ сервиса |
AI_MODEL |
Нет | t-tech/T-pro-it-2.0 |
ИИ модель для использования |
AI_BASE_URL |
Нет | https://foundation-models.api.cloud.ru/v1/ |
Базовый URL ИИ сервиса |
AI_TEMPERATURE |
Нет | 0.3 |
Температура генерации ИИ |
AI_MAX_TOKENS |
Нет | 500 |
Максимальное количество токенов для ответов ИИ |
USE_LOCAL_STORAGE |
Нет | false |
Принудительно использовать локальное хранение вместо S3 |
DATA_DIR |
Нет | chat_logs |
Локальная директория данных |
OBJECT_STORAGE_BUCKET_NAME |
Нет* | - | Имя S3 бакета (*обязательно если не используется локальное хранение) |
OBJECT_STORAGE_ACCESS_KEY_ID |
Нет* | - | AWS ключ доступа (*обязательно если не используется локальное хранение) |
OBJECT_STORAGE_SECRET_ACCESS_KEY |
Нет* | - | AWS секретный ключ (*обязательно если не используется локальное хранение) |
OBJECT_STORAGE_REGION |
Нет | us-east-1 |
AWS регион |
OBJECT_STORAGE_ENDPOINT_URL |
Нет | - | Пользовательский S3 URL эндпоинта |
OBJECT_STORAGE_ROOT_DIR |
Нет | chat_logs |
Корневая S3 директория |
docker build -t evo-foundation-models-tg-bot-lab .docker tag evo-foundation-models-tg-bot-lab <REGISTRY-NAME>.cr.cloud.ru/evo-foundation-models-tg-bot-lab:latest
docker push <REGISTRY-NAME>.cr.cloud.ru/evo-foundation-models-tg-bot-lab:latestЗамените на название вашего Artifact Registry
# Установить с зависимостями разработки
python setup.py dev
# Или вручную
pip install -e .[dev]Проект использует строгие стандарты качества кода:
# Форматирование кода
black .
isort .
# Линтинг кода
flake8 chat_bot/
pylint chat_bot/
# Проверка типов
mypy --strict chat_bot/chat_bot/
├── models/ # Pydantic модели данных
├── prompts/ # Шаблоны ИИ промптов
├── assistant.py # Реализация ИИ ассистента
├── bot.py # Основная логика бота
├── config.py # Управление конфигурацией
├── formatter.py # Форматирование сообщений
├── repository.py # Реализация S3 хранения
├── repository_local.py # Реализация локального хранения
└── repository_base.py # Базовый интерфейс репозитория
- Храните чувствительные токены в файле
.env(никогда не коммитьте в систему контроля версий) - Используйте непривилегированного пользователя в Docker контейнерах
- Реализуйте соответствующий контроль доступа для логов чатов
- Регулярные обновления безопасности для зависимостей
- Мониторинг разрешений бота в Telegram
-
Бот не отвечает:
- Проверьте правильность токена бота
- Убедитесь, что бот добавлен как администратор
- Проверьте разрешения бота в Telegram
-
ИИ функции не работают:
- Проверьте действительность ИИ API ключа
- Проверьте доступность ИИ сервиса
- Проверьте конфигурацию ИИ модели
-
Проблемы с хранением:
- Проверьте S3 учетные данные (если используется облачное хранение)
- Проверьте разрешения файлов для локального хранения
- Убедитесь в достаточном дисковом пространстве
-
Ошибки разрешений:
- Проверьте разрешения пользователя контейнера
- Проверьте разрешения монтирования томов
- Проверьте права доступа к файловой системе
# Запустить в интерактивном режиме
docker run -it --rm \
-e TELEGRAM_BOT_TOKEN=your_token \
-e AI_API_KEY=your_key \
telegram-chat-bot bashБот включает встроенный веб-сервер для проверок здоровья на порту 8080:
GET /- Информация о сервисеGET /health- Базовая проверка здоровьяGET /health/ready- Проверка готовности (для Kubernetes)GET /health/live- Проверка жизнеспособности (для Kubernetes)
# Проверить здоровье контейнера
docker inspect telegram-chat-bot | grep Health -A 10
# Проверить эндпоинт здоровья (с curl)
curl http://localhost:8080/health
# Проверить эндпоинт здоровья (с Python)
python -c "import urllib.request; print(urllib.request.urlopen('http://localhost:8080/health').read().decode())"
# Проверить готовность
curl http://localhost:8080/health/ready
# Получить информацию о сервисе
curl http://localhost:8080/Контейнер автоматически проверяет здоровье через HTTP запросы с использованием Python:
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8080/health')" || exit 1# Просмотр логов в реальном времени
docker-compose logs -f
# Или для ручного Docker
docker logs -f telegram-chat-bot- Форкните репозиторий
- Создайте ветку функции
- Внесите изменения
- Добавьте тесты, если применимо
- Убедитесь, что инструменты качества кода проходят
- Отправьте pull request
Этот проект лицензирован под MIT License.
Для проблем и вопросов:
- Проверьте раздел устранения неполадок
- Просмотрите логи для сообщений об ошибках
- Создайте issue с подробной информацией
- Включите детали окружения и логи ошибок