# ISSUES — Задачи и баг-трекер ## Исправлено - [x] ~~Эмодзи в embed-сообщениях~~ — удалены `🌅`, `✅`, `❌` из `utils/morning_runner.py` - [x] ~~f-string в logger~~ — замена на `%`-формат в `bot.py` - [x] ~~`import time` внутри `__init__`~~ — перенесён на уровень модуля в `bot.py` - [x] ~~Проверка наличия `.env`~~ — `.env` в `.gitignore`, есть `.env.example` - [x] ~~Команда `!msg` в BotRunner~~ — удалена из проекта - [x] ~~Отсутствует `.gitignore`~~ — файл существует - [x] ~~Отсутствует Dockerfile~~ — файл существует - [x] ~~Отсутствует `.env.example`~~ — файл существует ## Средний приоритет - [x] **Type hints в production-коде** — добавлены аннотации ко всем 20 функциям - [x] **`asyncio.iscoroutinefunction` deprecated** — monkey-patch в `bot.py` + `conftest.py` - [x] **Утечка корутины Scheduler в тестах** — mock `_start_scheduler` вместо `asyncio.create_task` - [x] **Graceful shutdown (SIGTERM)** — уже реализован через `on_shutdown` listener + `async with self.bot` - [x] **Пустой `__init__` в Morning** — удалён - [x] **Global RateLimiter на модульном уровне** — добавлены factory-функции `make_*_limiter()` ## Низкий приоритет - [x] **Type hints в тестах** — добавлены `-> None` ко всем 140 test-функциям - [x] **`import` внутри функций в тестах** — вынесены наверх модулей (35 вхождений) - [x] **Добавить pre-commit хуки** — `.pre-commit-config.yaml` (ruff + ruff-format), `requirements-dev.txt` - [x] **Интеграционные тесты** — 9 тестов загрузок когов, команд и утилит