11 Commits

Author SHA1 Message Date
deadzilla
6e31a7e6ff fix: Docker container exit on startup
- bot.py: добавить проверку sys.stdin.isatty() для консольного ввода
  - В Docker stdin не является терминалом, input() падал с EOFError
  - Консольный режим теперь запускается только в интерактивном терминале
- Dockerfile: добавить console_commands/, убрать копирование .env,
  использовать переменные docker-compose
2026-05-31 20:23:23 +05:00
deadzilla
66d188c1cd Добавить планировщик утреннего дайджеста
- utils/morning_runner.py: Scheduler + run_morning()
- bot.py: автоматический запуск планировщика при старте
- commands/morning.py: использовать run_morning() вместо дублирования
- .env.example: добавить MORNING_TIME=07:00
- AGENTS.md: обновить документацию
- tests/test_morning_runner.py: 10 тестов для Scheduler
2026-05-29 17:48:26 +05:00
deadzilla
bc8b664d7d refactor: вынести fetch_cat в utils, добавить повторный вывод списка команд 2026-05-26 18:56:11 +05:00
deadzilla
4656495417 fix: улучшить on_command_error — логирование деталей и нейтральное сообщение пользователю 2026-05-26 18:08:46 +05:00
deadzilla
4a40f705d4 fix: resolve issue #3 (deduplication) and fix coroutine handling
- Create utils/news.py with shared RSS parsing and formatting logic
- Refactor commands/news.py and console_commands/news.py to use utils/news.py
- Fix bot.py to handle async console commands (news, pogoda)
- Fix utils/pogoda.py to fall back to Open-Meteo on requests.RequestException
- Mark issue #3 as resolved in ISSUES.md
2026-05-26 13:58:35 +05:00
deadzilla
4db31e8b56 feat: вывести список команд после загрузки бота
- Добавить bot_ready = threading.Event() для синхронизации
- Переместить bot_ready.set() после цикла загрузки команд
- Добавить bot_ready.wait() в console_input()
- Меню появляется только после 'Бот вошёл' и 'Загружен: ...'
2026-05-25 21:57:59 +05:00
deadzilla
6fe8334311 feat: добавить команду !news для AI-новостей с Habr
- Парсинг RSS через ElementTree (RSS 2.0 / Atom)
- Данные: title, dc:creator, guid isPermaLink, pubDate, category
- Формат: заголовок до 60 символов, дата дд.мм.гггг, теги
- Ссылки без https://, кликабельные
- Консольная команда: !news
2026-05-25 12:04:44 +05:00
deadzilla
db2ac21b41 fix: исправить дублирование кода, добавить retry и fallback для погоды
- Убран дублирующийся on_command_error и импорт CommandNotFound
- stop.py: добавлены аргументы stop_event, bot + обработка ошибок
- console_commands интегрирован в console_input()
- pogoda.py: retry (3 попытки), fallback на Open-Meteo при SSL-ошибках
- pogoda.py: безопасная обработка wind_kmh и давления
- pogoda.py: сортировка translate-словаря по длине ключа
- Добавлен _wmo_to_russian() для WMO weather code
2026-05-25 00:07:20 +05:00
deadzilla
5dc6c54bf6 chore: migrate pogoda to wttr.in, fix bot stop, add on_command_error 2026-05-24 22:55:49 +05:00
deadzilla
89f17d53d8 Refactor: add commands/, console_commands/, !pogoda command 2026-05-24 15:27:29 +05:00
deadzilla
83fc714b8e Initial commit: Discord bot with !msg command 2026-05-24 13:35:12 +05:00