# ISSUES — Задачи и баг-трекер ## Средний приоритет - [ ] **Добавить тесты для `console_commands/`** — есть `logs`, `reload`, `trigger_morning`, `help`. Не хватает: `pogoda`, `news`, `morning`, `cat`, `status`, `stats` - [ ] **Проверка наличия `.env`** — есть проверка DISCORD_TOKEN в `_validate_config()`, но нет проверки существования самого файла `.env` (без файла бот падает с непонятной ошибкой) - [ ] **Graceful shutdown (SIGTERM/SIGINT)** — нет обработчиков сигналов, бот завершается резко без закрытия handler-ов и cleanup - [ ] **`asyncio.iscoroutinefunction` deprecated** — 35 warnings, функция удалена в Python 3.16; заменить на `inspect.iscoroutinefunction` (решение: обновление discord.py или monkey-patch в `bot.py`) - [ ] **Утечка корутины в тестах** — `RuntimeWarning: coroutine 'trigger_morning.._run' was never awaited` в `test_trigger_morning.py` ## Консольные команды ### Низкий приоритет - [ ] **`memory`** — текущее потребление памяти процесса - [ ] **`health`** — проверка доступности внешних API (wttr.in, TheCatAPI, Habr) - [ ] **`debug `** — переключить verbose-режим бота ## Низкий приоритет - [ ] **Добавить pre-commit хуки** — lint (flake8/ruff), форматирование (black) - [ ] **Добавить type hints** повсеместно — не все функции имеют аннотации (отсутствуют в `utils/pogoda.py`, `utils/news.py`, присутствуют в `utils/cat.py`, `utils/morning_runner.py`) - [ ] **Интеграционные тесты** — сейчас только unit-тесты с моками ## Замечания - [ ] В тестовых файлах используется `asyncio.run()` внутри синхронных тестов (50 вхождений: `test_fetch_cat.py` — 10, `test_fetch_rss.py` — 21, `test_fetch_weather.py` — 19) — конфликт с `pytest-asyncio` event loop, рекомендуется `async def` тесты