diff --git a/ISSUES.md b/ISSUES.md new file mode 100644 index 0000000..045b9b2 --- /dev/null +++ b/ISSUES.md @@ -0,0 +1,41 @@ +# ISSUES — Задачи и баг-трекер + +## Баги + +- [ ] `on_command_error`: проверка `ctx.interaction` может падать — при текстовых командах (`command_prefix`) `ctx.interaction` может быть `None` +- [ ] `commands/help.py`: список команд хардкодится вручную — при добавлении новой команды `!hp` покажет устаревший список +- [ ] `console_commands/pogoda.py`: хардкодит URL `wttr.in`, дублируя логику из `utils/pogoda.py` +- [ ] `utils/pogoda.py` + `utils/cat.py`: нет отдельного модуля `utils/__init__.py` с публичным API — импорты разбросаны + +--- + +## Задачи к реализации + +### Высокий приоритет + +- [ ] **Заменить все `print()` на `logging`** — в `utils/pogoda.py`, `utils/morning_runner.py`, `console_commands/`, `bot.py` +- [ ] **Автоматическая генерация `!hp`** — собирать список команд из `bot.commands` вместо хардкода +- [ ] **Убрать дублирование `commands/` и `console_commands/`** — вынести общую логику в `utils/`, оставить тонкие обёртки +- [ ] **Валидация конфигурации** — проверить формат `MORNING_TIME` (`ЧЧ:ММ`) и наличие `MORNING_CHANNEL_ID` при запуске + +### Средний приоритет + +- [ ] **Инкапсулировать глобальные переменные** — `stop_event`, `bot_ready`, `scheduler` завернуть в класс `BotRunner` +- [ ] **Добавить rate-limiting** для API-вызовов (TheCatAPI, wttr.in, Habr RSS) +- [ ] **Настроить логирование** — уровни, формат, вывод в файл/консоль +- [ ] **Добавить тесты для `console_commands/`** — есть только `test_help_console.py`, нужны `test_pogoda_console.py`, `test_news_console.py`, `test_morning_console.py` +- [ ] **Проверка наличия `.env`** — добавить явную проверку с информативным сообщением + +### Низкий приоритет + +- [ ] **Улучшить Dockerfile** — multi-stage сборка, healthcheck +- [ ] **Добавить pre-commit хуки** — lint (flake8/ruff), форматирование (black) +- [ ] **Добавить type hints** повсеместно — не все функции имеют аннотации +- [ ] **Интеграционные тесты** — сейчас только unit-тесты с моками + +--- + +## Замечания + +- [ ] `README.md` ссылается на `AGENTS.md` как основной документ проекта, но AGENTS.md — инструкции для AI-ассистента +- [ ] В тестовых файлах используется `asyncio.run()` внутри синхронных тестов — может конфликтовать с event loop