# Tasks — список задач проекта > Состояние на: 2026-05-26 --- ## 🔴 Критические ### 1. Фикс `posts is None` → `TypeError` в `!news` - [ ] `commands/news.py`: добавить проверку `if posts is None` **до** вызова `format_articles(posts, ...)` - [ ] `commands/news.py`: аналогично проверить `if articles is None` перед `format_articles(articles, ...)` - [ ] `commands/morning.py`: проверить все 3 вызова `format_articles()` — `articles`, `posts`, и убедиться, что `None` не проходит ### 2. Убрать эмодзи из `console_commands/cat.py` - [ ] Заменить `print("🐱 тут должен быть котик")` на `print("Заглушка: тут должен быть котик")` --- ## 🟡 Средние ### 3. Убрать пустой embed в `!morning` при всех ошибках - [ ] `commands/morning.py`: добавить fallback-сообщение в `description_lines`, если все API вернули `None` - [ ] Проверить, что `embed.description` никогда не пустой ### 4. Заменить ручную загрузку Cogs на `bot.load_extension()` - [ ] `bot.py`: заменить цикл `for cog_class in ALL_COMMANDS: await bot.add_cog(cog)` на `bot.load_extension()` - [ ] Обновить `commands/__init__.py` — добавить метаданные для порядка загрузки - [ ] Протестировать, что все Cogs загружаются корректно ### 5. Оптимизировать `translate_weather()` — O(n) линейный поиск - [ ] `utils/pogoda.py`: отсортировать ключи `mapping` по длине (убывание) - [ ] Использовать `any(key.lower() in text.lower() for key in sorted_keys)` для приоритета точных совпадений - [ ] Или заменить на `re` с регулярным выражением ### 6. Вынести `self.api_url` в константу класса - [ ] `commands/pogoda.py`: заменить `self.api_url = ...` на `API_URL = "..."` на уровне класса - [ ] `commands/morning.py`: аналогично - [ ] `console_commands/pogoda.py`: вынести URL в `utils/pogoda.py` как константу --- ## 🟢 Малые улучшения ### 7. Добавить `__all__` в `__init__.py` - [ ] `commands/__init__.py`: `__all__ = ["ALL_COMMANDS"]` - [ ] `console_commands/__init__.py`: `__all__ = ["ALL_CONSOLE_COMMANDS"]` - [ ] `utils/__init__.py`: добавить `__all__` с основными функциями ### 8. Убрать дублирование парсинга погоды в console_commands - [ ] `console_commands/pogoda.py`: вынести форматирование результата в `utils/pogoda.py` как `format_weather_data()` - [ ] `console_commands/morning.py`: использовать `format_weather_data()` вместо inline-парсинга - [ ] `commands/morning.py`: использовать `format_weather_data()` вместо inline-парсинга ### 9. Добавить `raise_exception=True` в `bot.run()` - [ ] `bot.py`: добавить `raise_exception=True` для видимого падения при ошибках токена/сети - [ ] Добавить логирование в `KeyboardInterrupt` блок