discordBot/ISSUES.md
deadzilla 91f34625a8 feat: команды !status и !stats
Добавлены Discord-команды:
  - !status — пинг к gateway, uptime, статус (embed)
  - !stats — серверы, каналы, пользователи (embed)

Добавлены консольные команды:
  - status — статус бота в терминале
  - stats — статистика серверов в терминале

Тесты:
  - test_commands_status.py (6 тестов)
  - test_commands_stats.py (4 теста)
  - всего: 233 теста

Обновления:
  - README.md — новые команды в таблицах и архитектуре
  - ISSUES.md — высокий приоритет закрыт
  - admin.py — hint на !status и !stats
2026-06-12 16:19:21 +05:00

2.5 KiB
Raw Blame History

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

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

  • Добавить 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 — добавить явную проверку с информативным сообщением

Консольные команды

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

  • status — онлайн-статус бота, пинг к Discord gateway, uptime
  • stats — кол-во серверов, каналов, пользователей

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

  • reload — горячая перезагрузка cogs без остановки бота
  • logs — последние строки лога (tail -20)
  • trigger morning — ручной запуск morning-дайджеста в канал

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

  • memory — текущее потребление памяти процесса
  • health — проверка доступности внешних API (wttr.in, TheCatAPI, Habr)
  • debug <on|off> — переключить verbose-режим бота

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

  • Добавить 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)