discordBot/ISSUES.md

57 lines
3.4 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.

# 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` блок