3.3 KiB
3.3 KiB
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()— все методы Cogutils/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.iscoroutinefunctiondeprecated — 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-тесты с моками
Исправлено
Проверка наличия—.env.envв.gitignore, есть.env.exampleКоманда— удалена из проекта!msgв BotRunnerОтсутствует— файл существует.gitignoreОтсутствует Dockerfile— файл существуетОтсутствует— файл существует.env.example