- 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, обновлены таблицы утилит
4.5 KiB
4.5 KiB
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: хардкодил URLwttr.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/, оставить тонкие обёртки- Закрыто: коммит
560dc55—format_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
- Закрыто: healthcheck присутствует в Dockerfile (
- Добавить 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)