Files
bottohelp/README.md
T

717 lines
43 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Telegram Bot
Многофункциональный Telegram бот на Python с системой ранжирования пользователей, играми и интеграцией с внешними API.
## 📋 История версий
### Версия 1.8.1 (30 октября 2025) - Исправление приоритета конфигурации
**Дата релиза:** 30.10.2025
#### 🔧 **Исправления критических ошибок**
##### 🚨 **Исправлен приоритет переменных окружения над конфигурацией**
-**Проблема:** Переменные окружения из `.env` файла имели более высокий приоритет, чем настройки в `config_local.py`
-**Причина:** `load_dotenv()` в `new_bot.py` загружал переменные окружения (например, `ADMIN_IDS=123456789`), которые переопределяли значения из `config_local.py` (где `SUPER_ADMIN_IDS = [123456789]`)
-**Решение:** Документировано поведение приоритета конфигураций для предотвращения подобных ошибок в будущем
-**Результат:** Пользователь 123456789 теперь корректно определяется как SUPER_ADMIN вместо ADMIN
##### 📚 **Обновлена документация**
-**Добавлено предупреждение о приоритете конфигураций** в раздел "Установка и настройка"
-**Рекомендация:** Использовать `.env` только для секретных ключей, а роли пользователей задавать в `config_local.py`
-**Пример корректного использования** переменных окружения
---
### Версия 1.8.0 (29 октября 2025) - Улучшение меню и разделение чатов
**Дата релиза:** 29.10.2025
#### 🔐 **Улучшения безопасности и разделения доступа**
-**Ограничение меню администратора только в личных чатах** - кнопки "👑 Администрирование" и "⚙️ Триггеры" показываются только в личных чатах (`chat_type == "private"`)
-**Ограничение игр только в личных чатах** - в групповых чатах меню игр показывает сообщение с кнопкой для перехода в личный чат с ботом
-**Обновлена логика построения меню** - все компоненты системы маршрутизации теперь учитывают тип чата
#### 🎮 **Новые функции администрирования**
-**Добавлена команда `/admin_chats`** - показывает список чатов, где пользователь является администратором с указанием уровня прав
-**Интеллектуальное меню в зависимости от контекста** - разные меню для личных и групповых чатов
-**Улучшенная система маршрутизации** - передача `chat_type` в контексте для правильного построения меню
#### 📊 **Протестированные изменения**
-**Тесты форматирования меню** - все проходят успешно для разных типов чатов
-**Тестирование логики создания меню** - проверена корректная работа в личных и групповых чатах
-**Валидация команд администрирования** - протестирована новая команда `/admin_chats`
#### 🔧 **Технические улучшения**
-**Обновлен `telegram_bot/utils/formatters.py`** - логика ограничения меню в зависимости от типа чата
-**Обновлен `telegram_bot/handlers/admin_handlers.py`** - добавлена команда `/admin_chats`
-**Обновлен `telegram_bot/core/menu_manager.py`** - передача `chat_type` в контексте
-**Обновлен `telegram_bot/core/unified_router.py`** - определение типа чата
-**Обновлен `telegram_bot/handlers/user_handlers.py`** - передача типа чата при построении меню
#### 🎯 **Результат работы:**
Теперь меню по вызову команд работает корректно:
- **Личный чат с ботом**: администратор видит меню администрирования и триггеры, игры доступны
- **Групповой чат**: меню администрирования скрыто, игры перенаправляют в личный чат
- **Пользователь**: не видит административных функций, игры доступны только в личном чате
Команда `/admin_chats` позволяет администраторам управлять несколькими чатами, выбирая конкретный для модерации.
---
### Версия 1.7.0 (21 октября 2025) - Исправление базы данных и тесты целостности
**Дата релиза:** 21.10.2025
#### 🚀 Критические исправления базы данных и архитектуры
-**Исправлена схема базы данных** - все таблицы согласно DatabaseSchema теперь создаются корректно
-**Добавлена автоматическая инициализация** - недостающие таблицы создаются при запуске приложения
-**Исправлены зависимости между таблицами** - корректные внешние ключи и ограничения целостности
-**Тесты целостности базы данных** - полная проверка схемы, ограничений и связей между таблицами
-**Исправлен импорт KeyboardFormatter** - правильное разделение между MessageFormatter и KeyboardFormatter
#### ⭐ Предыдущие улучшения форматтеров (версия 1.6.0)
-**Исправлено HTML экранирование** - правильная обработка специальных символов (&, <, >, ", ')
-**Полная реализация MessageFormatter** - все методы теперь возвращают правильно отформатированные сообщения с эмодзи
-**Улучшенная таблица лидеров** - добавлены медали (🥇🥈🥉) для топ-3 пользователей
-**Исправлены клавиатуры** - добавлены все недостающие кнопки согласно тестам
-**Оптимизированная производительность** - замеры показывают высокую скорость обработки
#### 🔧 Система автоматического тестирования и CI/CD
-**GitHub Actions workflow** - автоматическое тестирование при каждом коммите
-**Тесты производительности** - проверка скорости критических функций
-**Тестирование безопасности** - сканирование уязвимостей с bandit и safety
-**Автоматическая сборка** - непрерывная интеграция для контроля качества
#### 📊 Тесты производительности
-**Форматирование сообщений** - замеры времени обработки пользовательских данных
-**Таблица лидеров** - оптимизация для больших списков пользователей (1000+)
-**HTML экранирование** - проверка скорости обработки специальных символов
-**Создание клавиатур** - тестирование скорости генерации интерфейсов
#### 🎯 Улучшения стабильности
-**Исправлены синтаксические ошибки** - все форматтеры компилируются без ошибок
-**Улучшена обработка ошибок** - graceful handling некорректных данных
-**Оптимизирована память** - эффективное использование ресурсов
#### Исправления ошибок
- ✅ Исправлена ошибка с повторяющимся сообщением о "первом сообщении" при вводе суммы доната
- ✅ Исправлена проблема с кодировкой Unicode символов при запуске бота на Windows
- ✅ Исправлена система донатов - теперь корректно работает кнопка "Другая сумма"
#### ✨ Новые функции
- ✅ Добавлена команда `/donate` для поддержки проекта
- ✅ Добавлена информация о донатах в справку `/help`
- ✅ Улучшена система достижений - достижения разблокируются только один раз
#### 🔧 Технические улучшения
- ✅ Оптимизирована логика проверки достижений в базе данных
- ✅ Добавлена проверка существующих достижений перед разблокировкой
- ✅ Улучшена обработка ошибок в системе донатов
- ✅ Создан тестовый скрипт для проверки корректности рангов
- ✅ Добавлена защита от само-действий в командах модерации
### Версия 1.3.0 (Предыдущая версия)
- ✅ Исправления ошибок донатной системы и кодировки Unicode
- ✅ Улучшения системы достижений
### Версия 1.2.0 (Предыдущая версия)
- 🚀 Добавлены расширенные игры: 2048, Тетрис, Змейка
- 🎯 Улучшена система достижений
- 📅 Расширенная система планировщика постов
## Функции
### Основные возможности
- ✅ Отвечать на сообщения пользователей предопределенными ответами
- ✅ Обрабатывать инлайновые запросы и команды
- ✅ Система ранжирования пользователей за участие в чате (хранение в SQLite)
- ✅ Приветствие новых пользователей при добавлении в группу с правилами группы
- ✅ Автоматическое удаление приветственных сообщений через 2 минуты
- ✅ Интеграция донатов в приветственные сообщения
-**Автореакции** - автоматическая реакция 🤝 на сообщения с "+" для повышения вовлеченности
### Безопасность и надежность
- 🔒 **Валидация входящих данных** - все команды проверяют корректность параметров
- 🛡️ **Защита от злоупотреблений** - ограничения на длину текстов, ID пользователей
-**Обработка ошибок API** - таймауты, повторные попытки, детальные сообщения об ошибках
- 💾 **Надежность базы данных** - валидация запросов, автоматический rollback транзакций
- 🚫 **Предотвращение само-действий** - пользователи не могут модерировать сами себя
- 🛡️ **Rate limiting** - защита от спама с дифференцированными лимитами по рангу:
- Новые пользователи (Рядовой/Ефрейтор): 5 запросов/минуту
- Обычные пользователи: 10 запросов/минуту
- Администраторы: без ограничений
### Игровые элементы
- 🎮 Мини-игры: Камень-ножницы-бумага, Крестики-нолики, Викторина, Морской бой
- 🎯 Расширенные игры: 2048, Тетрис, Змейка
- 🧠 Система достижений и начисления очков
- Начисление дополнительных очков за участие в играх
- 🎯 **Игры только в личных чатах** - для безопасности и удобства администраторов, игры доступны только в приватных беседах с ботом
### Администрирование чата
- 👑 **Интеллектуальное меню администратора** - функции доступны только в личных чатах с ботом
- ⚠️ Выдача предупреждений пользователям
- 🔇 Временное заглушение (mute)
- 🚫 Блокировка (ban) и кик пользователей
- 📊 Просмотр рейтинга и информации о пользователях
- 📋 **Управление несколькими чатами** - администраторы могут управлять несколькими группами через команду `/admin_chats`
### Посты по расписанию
- ⏰ Планирование постов для автоматической публикации
- 📅 Гибкие форматы времени (абсолютное и относительное)
- 🖼 Поддержка изображений в постах
- 👥 Управление постами (только администраторы)
- 💾 Хранение всех постов в базе данных
### Интеграция с API
- 🌤️ Получение погоды (OpenWeatherMap)
- 📰 Последние новости (NewsAPI)
- 🌐 Перевод текста (Google Translate) - базовая реализация
### Система приветствий и донатов
- 🎉 Автоматическое приветствие новых пользователей с правилами группы
- ⏰ Автоматическое удаление приветственных сообщений через 2 минуты
- 👥 Обработка нескольких пользователей (удаление старого, создание нового приветствия)
- 💰 Интеграция кнопок донатов прямо в приветственные сообщения
- 🎯 Быстрый доступ к помощи через приветственные кнопки
### 🤝 Интерактивные функции пользователей
- 👍 **Автореакции** - автоматическая реакция 🤝 на сообщения содержащие "+"
- 🔄 **Отзывчивость** - бот реагирует на положительные сообщения пользователей
- 📈 **Вовлеченность** - повышение активности в чате через интерактивные элементы
### Система отчетов об ошибках и ИИ-анализа
- 🚨 **Отчеты об ошибках** - администраторы могут отправлять отчеты об ошибках бота
- 📊 **Управление ошибками** - просмотр, фильтрация и управление списком ошибок
- 🤖 **ИИ-анализ** - автоматический анализ ошибок с помощью OpenAI GPT
- 📝 **Интеграция с TODO** - автоматическое добавление обработанных ошибок в список задач разработки
- 🔔 **Уведомления разработчика** - мгновенные уведомления о новых ошибках и их статусе
- 🧠 **Автоматизированная обработка** - пакетная обработка ошибок ИИ и добавление в план разработки
- 🧪 **Тестирование системы** - встроенный тестовый скрипт для проверки функциональности
## Установка и настройка
### 1. Клонирование репозитория
```bash
git clone <repository-url>
cd telegram_bot
```
### 2. Установка зависимостей
```bash
pip install -r requirements.txt
```
### 3. Настройка базы данных
База данных SQLite настраивается автоматически при первом запуске бота. Файл базы данных `telegram_bot.db` создается в корневой директории проекта.
### 4. Получение токенов API
- **Telegram Bot Token**: Получите от [@BotFather](https://t.me/botfather)
- **OpenWeatherMap API Key**: Зарегистрируйтесь на [openweathermap.org](https://openweathermap.org/api)
- **NewsAPI Key**: Зарегистрируйтесь на [newsapi.org](https://newsapi.org/)
- **OpenAI API Key**: Зарегистрируйтесь на [platform.openai.com](https://platform.openai.com/) для анализа ошибок ИИ
#### ⚠️ **Важно: Порядок загрузки конфигурации**
1. **Переменные окружения** (`.env` файл) имеют **высший приоритет**
2. **config_local.py** загружается вторым и может быть переопределен переменными окружения
3. **Рекомендация:** Используйте `.env` только для секретных ключей (токены, API ключи), а настройки ролей (`ADMIN_IDS`, `SUPER_ADMIN_IDS`) задавайте в `config_local.py`
##### ❌ **Неверный пример (приведет к ошибке):**
```bash
# .env файл
ADMIN_IDS=123456789
# config_local.py
SUPER_ADMIN_IDS = [123456789] # Будет переопределено на пустой список!
```
##### ✅ **Правильный пример:**
```bash
# .env файл (только секреты)
BOT_TOKEN="your_bot_token_here"
OPENWEATHER_API_KEY="your_weather_api_key_here"
OPENAI_API_KEY="your_openai_api_key_here"
# config_local.py (настройки ролей)
ADMIN_IDS = [] # Обычные администраторы
SUPER_ADMIN_IDS = [123456789] # Супер-администраторы
DEVELOPER_CHAT_ID = 123456789
ENABLE_DEVELOPER_NOTIFICATIONS = True
ENABLE_AI_ERROR_PROCESSING = True
```
Обновите `config_local.py` с вашими настройками ролей и `config_template.py` с секретными ключами:
### 5. Запуск бота
```bash
python bot.py
```
## Использование
### Команды бота
#### Основные команды
- `/start` - Начать работу с ботом
- `/help` - Показать справку
- `/rank` - Ваш текущий рейтинг
- `/ranks_info` - Информация о системе рангов
- `/leaderboard` - Топ-10 участников
- `/info` - Информация о вас
#### Администрирование (только в личных чатах)
- `/admin_chats` - Показать список чатов, где вы администратор
#### Информация и сервисы
- `/weather [город]` - Погода в городе
- `/news` - Последние новости
- `/translate [текст] [язык]` - Перевод текста
#### Игры (только в личных чатах)
- `/play_game` - Запустить мини-игру
- Доступные игры: Камень-ножницы-бумага, Крестики-нолики, Викторина, Морской бой, 2048, Тетрис, Змейка
#### Посты по расписанию (только админы)
- `/schedule_post [время] [текст]` - Запланировать пост
- `/list_posts` - Показать запланированные посты
- `/delete_post [ID]` - Удалить пост по расписанию
- `/publish_now [ID]` - Опубликовать пост немедленно
#### Модерация (только админы)
- `/warn [пользователь] [причина]` - Выдать предупреждение
- `/mute [пользователь] [время]` - Заглушить пользователя
- `/unmute [пользователь]` - Снять заглушку
- `/ban [пользователь] [причина]` - Забанить пользователя
- `/unban [пользователь]` - Разбанить пользователя
- `/kick [пользователь] [причина]` - Кикнуть пользователя
- `/promote [пользователь]` - Повысить до модератора
- `/demote [пользователь]` - Понизить с модератора
#### Система отчетов об ошибках (только админы)
- `/report_error <тип> <заголовок> [описание]` - Отправить отчет об ошибке
- `/admin_errors [статус]` - Показать список ошибок с фильтрацией по статусу
- `/analyze_error_ai <ID]` - Проанализировать конкретную ошибку с помощью ИИ
- `/process_all_errors_ai` - Обработать все новые ошибки с помощью ИИ
- `/add_error_to_todo <ID> [приоритет]` - Добавить ошибку в TODO список
- `/add_all_analyzed_to_todo` - Добавить все проанализированные ошибки в TODO список
#### Типы ошибок для команды /report_error:
- **bug** - ошибка в работе бота (приоритет: medium)
- **crash** - критическая ошибка/падение (приоритет: critical)
- **feature** - предложение новой функции (приоритет: low)
- **ui** - проблема интерфейса (приоритет: medium)
- **security** - проблема безопасности (приоритет: high)
- **improvement** - предложение улучшения (приоритет: low)
- **other** - другое (приоритет: medium)
#### Интерактивные функции пользователей
- **Автореакции** - бот автоматически ставит 🤝 на сообщения содержащие "+"
- **Отзывчивость** - повышение вовлеченности пользователей через интерактивные элементы
### Система ранжирования
- За каждое сообщение начисляется 1 очко
- За выигрыш в мини-игре начисляются дополнительные очки
- Военная иерархия званий от Рядового до Маршала
- Рейтинг сохраняется в SQLite базе данных
- Начисление очков за вступление в группу
- Система достижений с разблокировкой значков
### Посты по расписанию
- Планирование публикации постов в указанное время
- Гибкие форматы времени: абсолютное (2024-01-15 14:30) и относительное (+2h, +30m)
- Поддержка изображений в постах
- Автоматическая публикация через планировщик
- Управление постами только администраторами чата
- Все посты сохраняются в базе данных с историей публикаций
### Автоматическая система приветствий
- Приветствие новых пользователей с подробными правилами группы
- Автоматическое удаление приветствий через 2 минуты для чистоты чата
- Интеллектуальная обработка нескольких пользователей одновременно
- Интеграция донатов и быстрого доступа к помощи в приветственных сообщениях
#### Примеры использования планировщика:
```
/schedule_post +1h Добро пожаловать в наш чат!
/schedule_post 2024-01-15 09:00 Ежедневное утреннее приветствие
/schedule_post +30m Важное объявление для всех участников
```
## Структура проекта
```
telegram_bot/
├── bot.py # Основной файл бота с системой ошибок и ИИ
├── config.py # Конфигурация (токены, настройки БД)
├── config_local.py # Локальная конфигурация с токенами и ключами API
├── config_template.py # Шаблон для настройки API ключей
├── database_sqlite.py # Работа с SQLite базой данных (+ таблица errors)
├── database.py # Базовые функции работы с БД
├── scheduler.py # Планировщик постов по расписанию
├── migrate_ranks.py # Миграция системы рангов
├── messages.py # Текстовые сообщения и константы бота
├── requirements.txt # Зависимости Python (+ openai)
├── test_error_system.py # Тестовый скрипт для проверки системы ошибок
├── test_rate_limiter.py # 🛡️ Тесты rate limiter с поддержкой ранговой системы
├── TODO.md # Список задач разработки с интеграцией ошибок
├── .gitignore # Игнорируемые файлы для Git
├── Dockerfile # Конфигурация для Docker развертывания
├── docker-compose.yml # Оркестрация контейнеров
├── core/
│ ├── rate_limiter.py # 🛡️ Rate limiter с дифференцированными лимитами по рангу
│ ├── permissions.py # Система ролей и разрешений
│ ├── exceptions.py # Кастомные исключения
│ └── ...
├── utils/
│ ├── formatters.py # 🔧 ФОРМАТТЕРЫ СООБЩЕНИЙ И КЛАВИАТУР (исправлены и оптимизированы)
│ ├── __init__.py
│ ├── validators.py
│ └── helpers.py
├── test_utils/
│ └── test_formatters.py # Тесты форматтеров (исправлены)
├── test_performance/
│ └── test_critical_functions.py # Тесты производительности критических функций
├── .github/
│ ├── README.md # Краткое описание для GitHub
│ └── workflows/
│ └── ci.yml # 🚀 CI/CD PIPELINE ДЛЯ АВТОМАТИЧЕСКОГО ТЕСТИРОВАНИЯ
└── README.md # Полная документация
```
### База данных
База данных содержит следующие таблицы:
- **users** - информация о пользователях, рейтинги и достижения
- **warnings** - предупреждения пользователей
- **games** - игровые сессии
- **scheduled_posts** - запланированные посты
- **achievements** - достижения пользователей
- **donations** - история донатов
- **errors** - система отчетов об ошибках и их анализ
#### Структура таблицы errors:
- **error_id** - уникальный идентификатор ошибки (PRIMARY KEY)
- **admin_id** - ID администратора, отправившего отчет
- **error_type** - тип ошибки (bug, feature, crash, ui, security, etc.)
- **title** - краткое название ошибки
- **description** - подробное описание проблемы
- **status** - статус обработки (new, in_progress, resolved, rejected)
- **priority** - приоритет (low, medium, high, critical)
- **created_at** - время создания отчета
- **updated_at** - время последнего обновления
- **ai_analysis** - результат анализа ИИ (если выполнен)
- **todo_added** - флаг добавления в TODO список
- **resolved_at** - время решения (если решена)
### 5. Запуск планировщика постов
Для работы постов по расписанию запустите планировщик в отдельном терминале:
```bash
python scheduler.py
```
Рекомендуется запускать бота и планировщик одновременно для полной функциональности.
## Технологии
- **Python 3.10+**
- **python-telegram-bot** - библиотека для работы с Telegram API
- **sqlite3** - встроенная поддержка SQLite базы данных
- **requests** - HTTP запросы для API
- **asyncio** - асинхронное программирование
- **openai** - интеграция с OpenAI API для анализа ошибок
- **SQLite** - база данных для хранения рейтинга, постов и отчетов об ошибках
## Разработка
### Добавление новых функций
1. Добавьте логику в соответствующие методы класса `TelegramBot`
2. Обновите базу данных при необходимости (методы в `database.py`)
3. Добавьте новые команды в `setup_handlers()`
### Тестирование
Запустите бота локально и протестируйте все функции в тестовом чате.
## Тестирование системы
Проект включает комплексную систему тестирования для обеспечения качества и надежности:
### 🚀 Автоматическое тестирование с CI/CD
**GitHub Actions workflow** обеспечивает непрерывную интеграцию:
```bash
# Автоматический запуск при каждом коммите
# Тестирование функциональности
# Проверка безопасности (bandit, safety)
# Тесты производительности критических функций
# Валидация базы данных и конфигурации
```
### 🧪 Тесты форматтеров (исправлены и оптимизированы)
```bash
cd telegram_bot
python -m pytest test_utils/test_formatters.py -v
```
**Что тестируется:**
- ✅ Корректность форматирования всех типов сообщений
- ✅ Правильность HTML экранирования специальных символов
- ✅ Создание всех видов клавиатур согласно спецификациям
- ✅ Работа метода медалей в таблице лидеров
- ✅ Производительность критических функций
### 🔍 Тесты целостности базы данных
```bash
cd telegram_bot
python -m pytest test_integration/test_commands.py::TestCommandsIntegration::test_database_schema_integrity -v
python -m pytest test_integration/test_commands.py::TestCommandsIntegration::test_database_table_constraints -v
python -m pytest test_integration/test_commands.py::TestCommandsIntegration::test_database_relationships_integrity -v
```
**Что тестируется:**
- ✅ Наличие всех таблиц согласно DatabaseSchema
- ✅ Корректность структуры таблиц (колонки, типы данных)
- ✅ Внешние ключи и ограничения целостности
- ✅ Связи между таблицами (JOIN запросы)
- ✅ Ограничения PRIMARY KEY и UNIQUE
- ✅ Каскадные операции обновления данных
### 📊 Тесты производительности
```bash
cd telegram_bot
python test_performance/test_critical_functions.py
```
**Показатели производительности:**
- ✅ Форматирование пользовательской информации: < 1мс на операцию
- ✅ Таблица лидеров (1000 пользователей): < 10мс на операцию
- ✅ HTML экранирование: < 0.1мс на операцию
- ✅ Создание клавиатур: < 1мс на клавиатуру
- ✅ Усечение текста: < 0.01мс на операцию
### 🔧 Тесты системы отчетов об ошибках
```bash
python test_error_system.py
```
**Что тестирует:**
- ✅ Подключение к базе данных SQLite
- ✅ Создание и структура таблицы ошибок
- ✅ Добавление и получение ошибок из базы данных
- ✅ Работа системы фильтрации ошибок
- ✅ Интеграция с ИИ (проверка наличия методов)
- ✅ Работа интеграции с TODO файлом
- ✅ Система уведомлений разработчика
- ✅ Проверка конфигурации
#### Результаты тестирования:
Система предоставляет подробный отчет с градацией результатов:
- **SUCCESS** - тест пройден успешно
- **ERROR** - критическая ошибка, требующая внимания
- **WARNING** - некритическая проблема или рекомендация
### Примеры использования системы
#### Пример 1: Отправка отчета об ошибке
```
Администратор: /report_error bug Не работает команда /weather Бот не показывает погоду при запросе команды
Бот: Отчет успешно отправлен! ID ошибки: 1
Разработчик: Получает уведомление в настроенном чате
```
#### Пример 2: Анализ ошибки ИИ
```
Администратор: /analyze_error_ai 1
Бот: Начинаю анализ ошибки #1 с помощью ИИ...
[Через некоторое время]
Бот: Анализ завершен! Предоставляет структурированный анализ с рекомендациями
```
#### Пример 3: Добавление в план разработки
```
Администратор: /add_error_to_todo 1 high
Бот: Ошибка #1 успешно добавлена в TODO список в раздел высокого приоритета
```
#### Пример 4: Автореакция на положительные сообщения
```
Пользователь: Отличная работа! +
Бот: 🤝 (автоматически ставит реакцию рукопожатия)
```
## 🚀 Развертывание
### Локальное развертывание
#### Обычный запуск
```bash
# 1. Клонируйте репозиторий
git clone <repository-url>
cd telegram_bot
# 2. Установите зависимости
pip install -r requirements.txt
# 3. Настройте API ключи
cp config_template.py config_local.py
# Отредактируйте config_local.py
# 4. Запустите бота
python bot.py
# 5. В другом терминале запустите планировщик
python scheduler.py
```
#### Запуск с Docker
```bash
# 1. Соберите образ
docker build -t telegram-bot .
# 2. Создайте config_local.py с ключами API
# 3. Запустите бота
docker run -v $(pwd)/data:/app/data -v $(pwd)/config_local.py:/app/config_local.py telegram-bot
# Или с docker-compose
docker-compose up -d
```
### Развертывание на сервере
#### Рекомендации для продакшена:
- Используйте виртуальное окружение Python
- Настройте supervisor или systemd для автозапуска
- Используйте reverse proxy (nginx) для безопасности
- Настройте логирование и мониторинг
- Регулярно создавайте резервные копии базы данных
#### Пример конфигурации systemd:
```ini
[Unit]
Description=Telegram Bot
After=network.target
[Service]
Type=simple
User=bot
WorkingDirectory=/path/to/telegram_bot
ExecStart=/path/to/venv/bin/python bot.py
Restart=always
Environment=PYTHONPATH=/path/to/telegram_bot
[Install]
WantedBy=multi-user.target
```
### GitHub Actions (CI/CD)
Проект включает готовые workflows для автоматического тестирования и развертывания:
```bash
# Настройте секреты в репозитории:
# Settings > Secrets and variables > Actions
BOT_TOKEN=your_bot_token
OPENAI_API_KEY=your_openai_key
DEVELOPER_CHAT_ID=your_chat_id
```
#### Автоматическое тестирование:
- Проверка кода при каждом коммите
- Тестирование системы отчетов об ошибках
- Валидация базы данных и конфигурации
#### Автоматическое развертывание:
- Сборка Docker образа
- Деплой на сервер при обновлении main ветки
- Автоматическая настройка конфигурации
## 📊 Система мониторинга ошибок
Бот оснащен полнофункциональной системой мониторинга с логированием, метриками и алертами.
### ✅ Возможности мониторинга:
🔍 **Структурированное логирование**
- JSON формат для легкого парсинга
- Разные уровни логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
- Автоматическая ротация логов
📊 **Метрики Prometheus**
- Время выполнения команд
- Количество ошибок по типам
- Активность пользователей
- Производительность API
🛡️ **Мониторинг ошибок**
- Автоматический захват всех исключений
- Интеграция с Sentry или GlitchTip
- Performance monitoring
🚨 **Система алертов**
- Алерты при высокой частоте ошибок
- Уведомления в Telegram
- Настраиваемые правила и пороги
### 📁 Файлы мониторинга:
- `metrics/monitoring.py` - ядро системы мониторинга
- `metrics/alerts.py` - менеджер алертов
- `metrics/prometheus_server.py` - сервер метрик
- `metrics/test_monitoring_integration.py` - интеграционные тесты
- `metrics/MONITORING.md` - подробная документация
- `metrics/README_MONITORING.md` - быстрый старт
- `metrics/GLITCHTIP_SETUP.md` - настройка GlitchTip
- `WEBHOOK_ALERTS.md` - webhook для алертов
### 🚀 Быстрый старт мониторинга:
1. **Установите зависимости:**
```bash
pip install prometheus_client sentry-sdk flask
```
2. **Настройте конфигурацию:**
```python
# config_local.py
ENABLE_SENTRY = True
SENTRY_DSN = "http://localhost:8000/api/1/project/your-project/dsn/"
PROMETHEUS_PORT = 8000
ENABLE_DEVELOPER_NOTIFICATIONS = True
DEVELOPER_CHAT_ID = 123456789
```
3. **Запустите GlitchTip:**
```bash
docker-compose up -d # из GLITCHTIP_SETUP.md
```
4. **Запустите бота:**
```bash
python new_bot.py
```
5. **Проверьте метрики:**
- Prometheus: http://localhost:8000/metrics
- GlitchTip: http://localhost:8000
- Логи: bot.log
### 📚 Документация:
- Все файлы метрик в папке `metrics/`
- Основная документация: `metrics/MONITORING.md`
- Быстрый старт: `metrics/README_MONITORING.md`
### 🎯 Результат:
Система мониторинга готова к использованию! Все ошибки, метрики и алерты настроены и протестированы. 📈
---
## Лицензия
MIT License - см. файл [LICENSE](LICENSE) для подробностей.
---
*Последнее обновление: 29 октября 2025 (версия 1.8.0 с улучшениями меню и разделением чатов)*