discordBot/ISSUES.md
deadzilla 47e4b60111 docs: синхронизировать ISSUES.md, обновить README.md, очистить AGENTS.md
- ISSUES.md: закрыто 7 задач с ссылками на коммиты (on_command_error, !hp харкод, харкод URL, utils/__init__.py, print→logging, автогенерация !hp, дублирование команд, healthcheck)
- AGENTS.md: удалена пустая секция 'Структура проекта' (есть в README.md)
- README.md: обновлена архитектура (добавлены utils/__init__.py, utils/morning_runner.py, console_commands/help.py, Docker-файлы), исправлено кол-во тестов (262→204), добавлена секция 'Запуск в Docker', убрана ссылка на AGENTS.md как основной документ, добавлена консольная команда help, обновлены таблицы утилит
2026-06-09 21:37:07 +05:00

51 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ISSUES — Задачи и баг-трекер
## Баги
- [x] `on_command_error`: проверка `ctx.interaction` может падать — при текстовых командах (`command_prefix`) `ctx.interaction` может быть `None`
- **Закрыто:** коммит `d698380` — добавлен `hasattr(ctx, 'interaction')` и проверка `ctx.command` на `None`
- [x] `commands/help.py`: список команд хардкодился вручную — при добавлении новой команды `!hp` показывал устаревший список
- **Закрыто:** коммит `2690ee7` — собирает команды автоматически из `ctx.bot.commands`
- [x] `console_commands/pogoda.py`: хардкодил URL `wttr.in`, дублируя логику из `utils/pogoda.py`
- **Закрыто:** коммит `560dc55` — использует `API_URL_WEATHER` из `utils.pogoda`
- [x] `utils/pogoda.py` + `utils/cat.py`: нет отдельного модуля `utils/__init__.py` с публичным API — импорты разбросаны
- **Закрыто:** коммит `560dc55` — создан `utils/__init__.py` с `__all__` и явными импортами
---
## Задачи к реализации
### Высокий приоритет
- [x] **Заменить все `print()` на `logging`** — в `utils/pogoda.py`, `utils/morning_runner.py`, `console_commands/`, `bot.py`
- **Закрыто:** коммит `52fdbc3` — системные сообщения (startup, shutdown, retry, ошибки API) переведены на `logging`; `print()` оставлены в `console_commands/` как пользовательский вывод в терминал
- [x] **Автоматическая генерация `!hp`** — собирать список команд из `bot.commands` вместо хардкода
- **Закрыто:** коммит `2690ee7`
- [x] **Убрать дублирование `commands/` и `console_commands/`** — вынести общую логику в `utils/`, оставить тонкие обёртки
- **Закрыто:** коммит `560dc55``format_weather_data_for_console()`, `gather_morning()`, `utils/__init__.py`
- [ ] **Валидация конфигурации** — проверить формат `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 сборка
- [x] **Добавить healthcheck** — в Dockerfile
- **Закрыто:** healthcheck присутствует в Dockerfile (`CMD python -c "import discord; print('Bot is running')"`), добавлен коммитом `7bfb96c`
- [ ] **Добавить pre-commit хуки** — lint (flake8/ruff), форматирование (black)
- [ ] **Добавить type hints** повсеместно — не все функции имеют аннотации (отсутствуют в `utils/pogoda.py`, `utils/news.py`, присутствуют в `utils/cat.py`, `utils/morning_runner.py`)
- [ ] **Интеграционные тесты** — сейчас только unit-тесты с моками
---
## Замечания
- [ ] `README.md` ссылается на `AGENTS.md` как основной документ проекта, но AGENTS.md — инструкции для AI-ассистента
- [ ] В тестовых файлах используется `asyncio.run()` внутри синхронных тестов — может конфликтовать с event loop (подтверждено: 50+ вхождений в `test_fetch_cat.py`, `test_fetch_rss.py`, `test_fetch_weather.py`)