discordBot/ISSUES.md
deadzilla 47e4b60111 docs: синхронизировать ISSUES.md, обновить README.md, очистить AGENTS.md
- ISSUES.md: закрыто 7 задач с ссылками на коммиты (on_command_error, !hp харкод, харкод URL, utils/__init__.py, print→logging, автогенерация !hp, дублирование команд, healthcheck)
- AGENTS.md: удалена пустая секция 'Структура проекта' (есть в README.md)
- README.md: обновлена архитектура (добавлены utils/__init__.py, utils/morning_runner.py, console_commands/help.py, Docker-файлы), исправлено кол-во тестов (262→204), добавлена секция 'Запуск в Docker', убрана ссылка на AGENTS.md как основной документ, добавлена консольная команда help, обновлены таблицы утилит
2026-06-09 21:37:07 +05:00

4.5 KiB
Raw Blame History

ISSUES — Задачи и баг-трекер

Баги

  • on_command_error: проверка ctx.interaction может падать — при текстовых командах (command_prefix) ctx.interaction может быть None
    • Закрыто: коммит d698380 — добавлен hasattr(ctx, 'interaction') и проверка ctx.command на None
  • commands/help.py: список команд хардкодился вручную — при добавлении новой команды !hp показывал устаревший список
    • Закрыто: коммит 2690ee7 — собирает команды автоматически из ctx.bot.commands
  • console_commands/pogoda.py: хардкодил URL wttr.in, дублируя логику из utils/pogoda.py
    • Закрыто: коммит 560dc55 — использует API_URL_WEATHER из utils.pogoda
  • utils/pogoda.py + utils/cat.py: нет отдельного модуля utils/__init__.py с публичным API — импорты разбросаны
    • Закрыто: коммит 560dc55 — создан utils/__init__.py с __all__ и явными импортами

Задачи к реализации

Высокий приоритет

  • Заменить все print() на logging — в utils/pogoda.py, utils/morning_runner.py, console_commands/, bot.py
    • Закрыто: коммит 52fdbc3 — системные сообщения (startup, shutdown, retry, ошибки API) переведены на logging; print() оставлены в console_commands/ как пользовательский вывод в терминал
  • Автоматическая генерация !hp — собирать список команд из bot.commands вместо хардкода
    • Закрыто: коммит 2690ee7
  • Убрать дублирование commands/ и console_commands/ — вынести общую логику в utils/, оставить тонкие обёртки
    • Закрыто: коммит 560dc55format_weather_data_for_console(), gather_morning(), utils/__init__.py
  • Валидация конфигурации — проверить формат MORNING_TIME (ЧЧ:ММ) и наличие MORNING_CHANNEL_ID при запуске

Средний приоритет

  • Инкапсулировать глобальные переменныеstop_event, bot_ready, scheduler завернуть в класс BotRunner
  • Добавить rate-limiting для API-вызовов (TheCatAPI, wttr.in, Habr RSS)
  • Настроить логирование — уровни, формат, вывод в файл/консоль
  • Добавить тесты для console_commands/ — есть только test_help_console.py, нужны test_pogoda_console.py, test_news_console.py, test_morning_console.py
  • Проверка наличия .env — добавить явную проверку с информативным сообщением

Низкий приоритет

  • Улучшить Dockerfile — multi-stage сборка
  • Добавить healthcheck — в Dockerfile
    • Закрыто: healthcheck присутствует в Dockerfile (CMD python -c "import discord; print('Bot is running')"), добавлен коммитом 7bfb96c
  • Добавить pre-commit хуки — lint (flake8/ruff), форматирование (black)
  • Добавить type hints повсеместно — не все функции имеют аннотации (отсутствуют в utils/pogoda.py, utils/news.py, присутствуют в utils/cat.py, utils/morning_runner.py)
  • Интеграционные тесты — сейчас только unit-тесты с моками

Замечания

  • README.md ссылается на AGENTS.md как основной документ проекта, но AGENTS.md — инструкции для AI-ассистента
  • В тестовых файлах используется asyncio.run() внутри синхронных тестов — может конфликтовать с event loop (подтверждено: 50+ вхождений в test_fetch_cat.py, test_fetch_rss.py, test_fetch_weather.py)