diff --git a/README.md b/README.md index 5b3360e..90f9576 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,6 @@ python bot.py |---------|----------| | `!pg` | Прогноз погоды для Магнитогорска | | `!nw` | Топ-5 статей и топ-5 новостей по AI с Habr | -| `!hp` | Список всех команд бота с описанием (автогенерация из `bot.commands`) | | `!morning` | Погода + топ-5 статей + топ-5 новостей + котик (утренний дайджест) | | `!cat` | Случайный котик | | `!status` | Статус бота: пинг к Discord gateway, uptime | @@ -52,7 +51,6 @@ commands/ # Discord команды (cogs) news.py # !nw — статьи + новости с Habr cat.py # !cat — случайный котик morning.py # !morning — утренний дайджест (обёртка над utils.morning_runner) - help.py # !hp — список команд (автогенерация из bot.commands) status.py # !status — статус бота: пинг, uptime stats.py # !stats — серверы, каналы, пользователи utils/ # Утилиты (API-клиенты, конвертации) @@ -72,15 +70,18 @@ tests/ # pytest-тесты test_commands_pg.py # Pg cog test_bot.py # инициализация бота test_morning_runner.py# тесты morning runner-а - test_help_discord.py # команда !hp — проверка формата вывода и контента test_logger.py # setup_logging — уровни, обработчики, формат test_commands_status.py # команда !status — embed и uptime test_commands_stats.py # команда !stats — подсчёт серверов и каналов + test_integration.py # интеграционные тесты (загрузка когов, поток команд) +conftest.py # monkey-patch asyncio.iscoroutinefunction (Python 3.14+ / discord.py 2.7.1) ISSUES.md # Задачи и баг-трекер проекта pytest.ini # Конфигурация pytest (asyncio_mode = auto) Dockerfile # Сборка образа бота (Python 3.14-slim, healthcheck) docker-compose.yml # Запуск бота в Docker .dockerignore # Исключения для Docker-контекста +.gitignore # Исключения для Git (venv, .env, логи, IDE) +.pre-commit-config.yaml # pre-commit хуки (ruff lint + ruff-format) ``` ### Добавление Discord команды @@ -107,12 +108,12 @@ python -m pytest tests/ -v | `test_commands_pg.py` | `Pg` cog, команда `!pg` | 13 | | `test_bot.py` | инициализация бота | 5 | | `test_morning_runner.py` | morning runner | 12 | -| `test_help_discord.py` | команда `!hp` | 2 | | `test_logger.py` | `setup_logging` (уровни, обработчики, формат) | 9 | | `test_rate_limiter.py` | `RateLimiter` (токен-бакет) | 5 | | `test_commands_status.py` | команда `!status` (embed, uptime) | 6 | | `test_commands_stats.py` | команда `!stats` (серверы, каналы) | 5 | -**Итого: 154 теста.** +| `test_integration.py` | загрузка когов, поток команд (моки API) | 9 | +**Итого: 161 тест.** ## Запуск в Docker @@ -133,6 +134,8 @@ DISCORD_TOKEN=ваш_токен docker-compose up - База: `python:3.14-slim` - Healthcheck: проверка каждые 30 сек (старт-период 60 сек) - Версия Python настраивается через `ARG PYTHON_VERSION` +- Часовой пояс: `TZ=Asia/Yekaterinburg` (в docker-compose.yml) +- Установлены `tzdata` и `procps` для healthcheck и корректных дат ## API и внешние сервисы @@ -214,13 +217,16 @@ DISCORD_TOKEN=ваш_токен docker-compose up discord.py>=2.3.2 python-dotenv>=1.0.0 requests>=2.31.0 +defusedxml>=0.7.0 ``` ### Development (`requirements-dev.txt`) ```txt +pre-commit>=3.5.0 pytest>=7.4.0 pytest-asyncio>=0.21.0 +ruff>=0.8.0 ``` ## Безопасность