diff --git a/ISSUES.md b/ISSUES.md index 4a97c90..20d49e2 100644 --- a/ISSUES.md +++ b/ISSUES.md @@ -1,11 +1,5 @@ # ISSUES — Задачи и баг-трекер -## Высокий приоритет - -- [ ] **`run_morning` fallback может отправить дайджест в несколько каналов** — при неудаче в `_target_channel_id` перебирает `bot.get_all_channels()` и шлёт в первый доступный. Пользователь получит сообщение не там, где ожидает (`utils/morning_runner.py`, `_run_morning`) -- [ ] **`!nw`: последовательные вызовы API вместо параллельных** — `fetch_rss(RSS_URL_ARTICLES)` ждёт, затем `fetch_rss(RSS_URL_POSTS)`. В `!morning` используется `asyncio.gather()`. Привести `!nw` к тому же паттерну (`commands/news.py`) -- [ ] **`format_weather_data_for_console` выводит `None` в текст** — если API вернёт `null` для поля (`temp_C`, `FeelsLikeC`), `dict.get()` вернёт `None` и f-string покажет `"None°C"`. Добавить проверку на `None` (`utils/pogoda.py`) - ## Средний приоритет - [ ] **`_parse_date` хрупкий fallback** — `pub_date[:10].replace("-", ".")` для невалидной строки вернёт мусор (например `"invalid.da"`). Добавить валидацию формата (`utils/news.py`) @@ -48,3 +42,6 @@ - [x] **`format_weather_for_embed` отсутствует в коде** — заменено на `format_weather_for_message` в README.md (`README.md`) - [x] **`_WEATHER_MAPPING` не отсортирован по убыванию длины ключей** — отсортирован список по убыванию `len(key)`, добавлен комментарий (`utils/pogoda.py`) - [x] **Глобальные `requests.Session` не закрываются** — добавлена `close_all_sessions()` в `utils/__init__.py`, вызов из `_on_shutdown` в `bot.py` +- [x] **`run_morning` fallback может отправить дайджест в несколько каналов** — fallback перебирает каналы целевого сервера вместо `bot.get_all_channels()` (`utils/morning_runner.py`) +- [x] **`!nw`: последовательные вызовы API вместо параллельных** — заменено на `asyncio.gather()` (`commands/news.py`) +- [x] **`format_weather_data_for_console` выводит `None` в текст** — добавлена явная проверка `is None` для всех полей (`utils/pogoda.py`), обновлён тест (`tests/test_commands_pg.py`)