mirror of
https://github.com/FerraSoft/bottohelp.git
synced 2026-08-06 21:55:03 +00:00
Подготовка к релизу
This commit is contained in:
@@ -4,24 +4,92 @@
|
||||
|
||||
## 📋 История версий
|
||||
|
||||
### Версия 1.5.0 (18 октября 2025) - Система модерации медиафайлов
|
||||
**Дата релиза:** 18.10.2025
|
||||
### Версия 1.8.1 (30 октября 2025) - Исправление приоритета конфигурации
|
||||
**Дата релиза:** 30.10.2025
|
||||
|
||||
#### 🆕 Новая система модерации медиафайлов
|
||||
- ✅ **Автоматическая модерация аудио и видео** - все загружаемые медиафайлы проходят модерацию
|
||||
- ✅ **Система уведомлений администраторов** - личные уведомления о новых медиафайлах для модерации
|
||||
- ✅ **Интеграция с планировщиком постов** - одобренные медиа автоматически планируются на публикацию
|
||||
- ✅ **Отсрочка публикации** - медиа публикуется через 8 часов после одобрения (настраиваемо)
|
||||
- ✅ **Транскрибация аудио** - автоматическое распознавание речи для модерации
|
||||
- ✅ **Интерфейс выбора действий** - администраторы могут одобрить, отклонить или запланировать медиа
|
||||
- ✅ **Автоматическое удаление** - оригинальные сообщения с медиа удаляются из чата
|
||||
- ✅ **Пересылка в группу модераторов** - медиа отправляется в специальную группу для рассмотрения
|
||||
#### 🔧 **Исправления критических ошибок**
|
||||
|
||||
#### 🔧 Улучшения системы
|
||||
- ✅ **Расширенная обработка медиа** - поддержка аудио, видео и документов
|
||||
- ✅ **Система метаданных** - сохранение информации о файлах (длительность, размер, транскрипция)
|
||||
- ✅ **Уведомления пользователей** - пользователи получают информацию об отклонении контента
|
||||
- ✅ **Гибкие настройки модерации** - выбор между немедленной публикацией и отсрочкой
|
||||
##### 🚨 **Исправлен приоритет переменных окружения над конфигурацией**
|
||||
- ✅ **Проблема:** Переменные окружения из `.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 некорректных данных
|
||||
- ✅ **Оптимизирована память** - эффективное использование ресурсов
|
||||
|
||||
#### Исправления ошибок
|
||||
- ✅ Исправлена ошибка с повторяющимся сообщением о "первом сообщении" при вводе суммы доната
|
||||
@@ -66,18 +134,25 @@
|
||||
- ⚡ **Обработка ошибок API** - таймауты, повторные попытки, детальные сообщения об ошибках
|
||||
- 💾 **Надежность базы данных** - валидация запросов, автоматический rollback транзакций
|
||||
- 🚫 **Предотвращение само-действий** - пользователи не могут модерировать сами себя
|
||||
- 🛡️ **Rate limiting** - защита от спама с дифференцированными лимитами по рангу:
|
||||
- Новые пользователи (Рядовой/Ефрейтор): 5 запросов/минуту
|
||||
- Обычные пользователи: 10 запросов/минуту
|
||||
- Администраторы: без ограничений
|
||||
|
||||
### Игровые элементы
|
||||
- 🎮 Мини-игры: Камень-ножницы-бумага, Крестики-нолики, Викторина, Морской бой
|
||||
- 🎯 Расширенные игры: 2048, Тетрис, Змейка
|
||||
- 🧠 Система достижений и начисления очков
|
||||
- Начисление дополнительных очков за участие в играх
|
||||
- 🎯 **Игры только в личных чатах** - для безопасности и удобства администраторов, игры доступны только в приватных беседах с ботом
|
||||
|
||||
### Администрирование чата
|
||||
- 👑 **Интеллектуальное меню администратора** - функции доступны только в личных чатах с ботом
|
||||
- ⚠️ Выдача предупреждений пользователям
|
||||
- 🔇 Временное заглушение (mute)
|
||||
- 🚫 Блокировка (ban) и кик пользователей
|
||||
- 📊 Просмотр рейтинга и информации о пользователях
|
||||
- 📋 **Управление несколькими чатами** - администраторы могут управлять несколькими группами через команду `/admin_chats`
|
||||
|
||||
### Посты по расписанию
|
||||
- ⏰ Планирование постов для автоматической публикации
|
||||
@@ -134,20 +209,37 @@ pip install -r requirements.txt
|
||||
- **NewsAPI Key**: Зарегистрируйтесь на [newsapi.org](https://newsapi.org/)
|
||||
- **OpenAI API Key**: Зарегистрируйтесь на [platform.openai.com](https://platform.openai.com/) для анализа ошибок ИИ
|
||||
|
||||
Обновите `config_local.py` с вашими ключами:
|
||||
#### ⚠️ **Важно: Порядок загрузки конфигурации**
|
||||
1. **Переменные окружения** (`.env` файл) имеют **высший приоритет**
|
||||
2. **config_local.py** загружается вторым и может быть переопределен переменными окружения
|
||||
3. **Рекомендация:** Используйте `.env` только для секретных ключей (токены, API ключи), а настройки ролей (`ADMIN_IDS`, `SUPER_ADMIN_IDS`) задавайте в `config_local.py`
|
||||
|
||||
```python
|
||||
BOT_TOKEN = "your_bot_token_here"
|
||||
OPENWEATHER_API_KEY = "your_weather_api_key_here"
|
||||
NEWS_API_KEY = "your_news_api_key_here"
|
||||
OPENAI_API_KEY = "your_openai_api_key_here"
|
||||
##### ❌ **Неверный пример (приведет к ошибке):**
|
||||
```bash
|
||||
# .env файл
|
||||
ADMIN_IDS=123456789
|
||||
|
||||
# Настройки уведомлений разработчика
|
||||
DEVELOPER_CHAT_ID = -1001234567890 # ID чата для уведомлений об ошибках
|
||||
# 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
|
||||
@@ -165,12 +257,15 @@ python bot.py
|
||||
- `/leaderboard` - Топ-10 участников
|
||||
- `/info` - Информация о вас
|
||||
|
||||
#### Администрирование (только в личных чатах)
|
||||
- `/admin_chats` - Показать список чатов, где вы администратор
|
||||
|
||||
#### Информация и сервисы
|
||||
- `/weather [город]` - Погода в городе
|
||||
- `/news` - Последние новости
|
||||
- `/translate [текст] [язык]` - Перевод текста
|
||||
|
||||
#### Игры
|
||||
#### Игры (только в личных чатах)
|
||||
- `/play_game` - Запустить мини-игру
|
||||
- Доступные игры: Камень-ножницы-бумага, Крестики-нолики, Викторина, Морской бой, 2048, Тетрис, Змейка
|
||||
|
||||
@@ -193,7 +288,7 @@ python bot.py
|
||||
#### Система отчетов об ошибках (только админы)
|
||||
- `/report_error <тип> <заголовок> [описание]` - Отправить отчет об ошибке
|
||||
- `/admin_errors [статус]` - Показать список ошибок с фильтрацией по статусу
|
||||
- `/analyze_error_ai <ID>` - Проанализировать конкретную ошибку с помощью ИИ
|
||||
- `/analyze_error_ai <ID]` - Проанализировать конкретную ошибку с помощью ИИ
|
||||
- `/process_all_errors_ai` - Обработать все новые ошибки с помощью ИИ
|
||||
- `/add_error_to_todo <ID> [приоритет]` - Добавить ошибку в TODO список
|
||||
- `/add_all_analyzed_to_todo` - Добавить все проанализированные ошибки в TODO список
|
||||
@@ -255,14 +350,29 @@ telegram_bot/
|
||||
├── 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/
|
||||
│ └── deploy.yml # CI/CD pipeline для GitHub Actions
|
||||
│ └── ci.yml # 🚀 CI/CD PIPELINE ДЛЯ АВТОМАТИЧЕСКОГО ТЕСТИРОВАНИЯ
|
||||
└── README.md # Полная документация
|
||||
```
|
||||
|
||||
@@ -320,16 +430,72 @@ python scheduler.py
|
||||
|
||||
## Тестирование системы
|
||||
|
||||
### Автоматическое тестирование системы отчетов об ошибках
|
||||
Проект включает комплексную систему тестирования для обеспечения качества и надежности:
|
||||
|
||||
Проект включает встроенный тестовый скрипт для проверки функциональности системы отчетов об ошибках:
|
||||
### 🚀 Автоматическое тестирование с 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
|
||||
- ✅ Создание и структура таблицы ошибок
|
||||
- ✅ Добавление и получение ошибок из базы данных
|
||||
@@ -340,7 +506,7 @@ python test_error_system.py
|
||||
- ✅ Проверка конфигурации
|
||||
|
||||
#### Результаты тестирования:
|
||||
Тестовый скрипт предоставляет подробный отчет о состоянии системы с градацией результатов:
|
||||
Система предоставляет подробный отчет с градацией результатов:
|
||||
- **SUCCESS** - тест пройден успешно
|
||||
- **ERROR** - критическая ошибка, требующая внимания
|
||||
- **WARNING** - некритическая проблема или рекомендация
|
||||
@@ -461,10 +627,86 @@ DEVELOPER_CHAT_ID=your_chat_id
|
||||
- Деплой на сервер при обновлении main ветки
|
||||
- Автоматическая настройка конфигурации
|
||||
|
||||
## 📊 Система мониторинга ошибок
|
||||
|
||||
Бот оснащен полнофункциональной системой мониторинга с логированием, метриками и алертами.
|
||||
|
||||
### ✅ Возможности мониторинга:
|
||||
|
||||
🔍 **Структурированное логирование**
|
||||
- JSON формат для легкого парсинга
|
||||
- Разные уровни логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||||
- Автоматическая ротация логов
|
||||
|
||||
📊 **Метрики Prometheus**
|
||||
- Время выполнения команд
|
||||
- Количество ошибок по типам
|
||||
- Активность пользователей
|
||||
- Производительность API
|
||||
|
||||
🛡️ **Мониторинг ошибок**
|
||||
- Автоматический захват всех исключений
|
||||
- Интеграция с Sentry или GlitchTip
|
||||
- Performance monitoring
|
||||
|
||||
🚨 **Система алертов**
|
||||
- Алерты при высокой частоте ошибок
|
||||
- Уведомления в Telegram
|
||||
- Настраиваемые правила и пороги
|
||||
|
||||
### 📁 Файлы мониторинга:
|
||||
|
||||
- `core/monitoring.py` - ядро системы мониторинга
|
||||
- `core/alerts.py` - менеджер алертов
|
||||
- `prometheus_server.py` - сервер метрик
|
||||
- `test_monitoring_integration.py` - интеграционные тесты
|
||||
- `MONITORING.md` - подробная документация
|
||||
- `README_MONITORING.md` - быстрый старт
|
||||
- `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
|
||||
|
||||
### 🎯 Результат:
|
||||
|
||||
Система мониторинга готова к использованию! Все ошибки, метрики и алерты настроены и протестированы. 📈
|
||||
|
||||
---
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT License - см. файл LICENSE для подробностей.
|
||||
|
||||
---
|
||||
|
||||
*Последнее обновление: 16 октября 2025 (добавлена версия 1.4.0 с критическими исправлениями и система отчетов об ошибках)*
|
||||
*Последнее обновление: 29 октября 2025 (версия 1.8.0 с улучшениями меню и разделением чатов)*
|
||||
Reference in New Issue
Block a user