From f417a9abbc2d48ae6d7150b77c5cc869a11939f1 Mon Sep 17 00:00:00 2001 From: deadzilla Date: Thu, 9 Jul 2026 12:53:48 +0500 Subject: [PATCH] =?UTF-8?q?=D0=90=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20README.md:=20=D1=83=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D0=BB=20=D0=BD=D0=B5=D1=81=D1=83=D1=89=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B8=D0=B5=20!hp/help.py/test?= =?UTF-8?q?=5Fhelp=5Fdiscord,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20test=5Fintegration,=20conftest,=20.gitignore,=20.pre-commit-?= =?UTF-8?q?config.yaml,=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D1=81=D1=87=D1=91=D1=82=D1=87=D0=B8=D0=BA=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20(154=20=E2=86=92=20161)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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 ``` ## Безопасность