discordBot/ISSUES.md

36 lines
3.3 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 — Задачи и баг-трекер
## Высокий приоритет
- [ ] **Эмодзи в embed-сообщениях**`utils/morning_runner.py` (строки 61, 118, 123): `🌅`, `✅`, `❌` нарушают правило AGENTS.md «Никогда не используй эмодзи"
- [ ] **f-string в logger**`bot.py` (строка 60): `f"Ошибка команды {cmd_name}: {error}"` — использовать `%`-формат для lazy evaluation
- [ ] **`import time` внутри `__init__`** — `bot.py` (строка 31): импорты должны быть на уровне модуля
## Средний приоритет
- [ ] **Type hints в production-коде** — 17 функций без аннотаций:
- `commands/`: `cat()`, `hp()`, `morning()`, `nw()`, `pg()`, `stats()`, `status()` — все методы Cog
- `utils/pogoda.py`: `fetch_weather()`, `fetch_open_meteo()`, `wmo_to_russian()`, `translate_weather()`, `format_weather_data_for_console()`, `format_weather_for_embed()`, `pressure_to_mmhg()`
- `utils/news.py`: `fetch_rss()`, `truncate_title()`, `format_articles()`
- `utils/morning_runner.py`: `run_morning()`, `start()`, `stop()`
- [ ] **`asyncio.iscoroutinefunction` deprecated** — 53 warnings при запуске тестов, функция удалена в Python 3.16; причина — discord.py использует deprecated API (решение: обновление discord.py или monkey-patch в `bot.py`)
- [ ] **Утечка корутины Scheduler в тестах**`RuntimeWarning: coroutine 'Scheduler._scheduler_loop' was never awaited` в `test_morning_runner.py` (строки 105, 137, 166 — моки не останавливают task)
- [ ] **Graceful shutdown (SIGTERM)** — нет обработки `SIGTERM`, бот завершается резко в Docker/K8s без закрытия handler-ов и cleanup
- [ ] **Пустой `__init__` в Morning**`commands/morning.py` (строка 13): `def __init__(self): pass` можно убрать
- [ ] **Global RateLimiter на модульном уровне**`utils/rate_limiter.py` (строки 70-75): экземпляры создаются при импорте, нельзя подменить в тестах
## Низкий приоритет
- [ ] **Type hints в тестах** — 144 функции `test_*()` без `-> None` (не влияет на работу, но зашумляет warnings)
- [ ] **`import` внутри функций в тестах** — 23 вхождения в `tests/` (приемлемо, но лучше вынести наверх)
- [ ] **Добавить pre-commit хуки** — lint (ruff), форматирование (black)
- [ ] **Интеграционные тесты** — сейчас только unit-тесты с моками
## Исправлено
- [x] ~~Проверка наличия `.env`~~`.env` в `.gitignore`, есть `.env.example`
- [x] ~~Команда `!msg` в BotRunner~~ — удалена из проекта
- [x] ~~Отсутствует `.gitignore`~~ — файл существует
- [x] ~~Отсутствует Dockerfile~~ — файл существует
- [x] ~~Отсутствует `.env.example`~~ — файл существует