# 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 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 [приоритет]` - Добавить ошибку в 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 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 с улучшениями меню и разделением чатов)*