73 Commits

Author SHA1 Message Date
deadzilla
cc6ed5c183 Добавить команду !morning (погода + новости) и console команду morning 2026-05-26 19:47:56 +05:00
deadzilla
bc8b664d7d refactor: вынести fetch_cat в utils, добавить повторный вывод списка команд 2026-05-26 18:56:11 +05:00
deadzilla
25a8e77fb0 fix: использовать requests.Session для переиспользования соединений (ISSUE #8) 2026-05-26 18:17:17 +05:00
deadzilla
4656495417 fix: улучшить on_command_error — логирование деталей и нейтральное сообщение пользователю 2026-05-26 18:08:46 +05:00
deadzilla
55a07e2a3c fix: вынести импорт datetime на уровень модуля (ISSUE #4) 2026-05-26 17:55:28 +05:00
deadzilla
7bfbfa8075 docs: добавить правила согласования коммитов и русского языка сообщений в AGENTS.md 2026-05-26 14:03:04 +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
e1a0f6d2b6 refactor: вынести логику погоды в utils/pogoda.py (проблема 3)
- Создать utils/pogoda.py с общими функциями:
  - fetch_weather, fetch_open_meteo, wmo_to_russian, translate_weather, pressure_to_mmhg
- Обновить commands/pogoda.py: убрать дубликаты, импортировать из utils
- Обновить console_commands/pogoda.py: убрать дубликаты, импортировать из utils
- Сделать console_commands/pogoda.py async (требует fetch_weather)
- Обновить AGENTS.md и ISSUES.md (проблема 7 решена)
2026-05-26 12:32:15 +05:00
deadzilla
3dfb7a0405 chore: обновить .gitignore и удалить __pycache__ из репозитория
Добавлены паттерны:
- __pycache__/, *.py[cod], *.pyo - Python кэш
- venv/, env/, .venv/ - виртуальные окружения
- .env - переменные окружения
- *.log, *.bak, *.tmp, *.cache - временные файлы
- Thumbs.db, .DS_Store - кэш ОС
- .vscode/, .idea/ - IDE

Удалены из git:
- commands/__pycache__/__init__.cpython-314.pyc
- commands/__pycache__/pogoda.cpython-314.pyc
2026-05-26 11:54:26 +05:00
deadzilla
b0dc63234d Revert "chore: добавить Python cache и venv в .gitignore"
This reverts commit 747a7d3ab5464aabf5108ea5d6a89a692b1779ee.
2026-05-26 10:54:47 +05:00
deadzilla
747a7d3ab5 chore: добавить Python cache и venv в .gitignore 2026-05-26 10:49:11 +05:00
deadzilla
bf166735a6 fix: исправить блокировку event loop и добавить retry задержку
- Добавить экспоненциальную задержку между попытками retry (1с, 2с, 4с) в pogoda.py
- Заменить time.sleep на await asyncio.sleep для неблокирующих ожиданий
- Обернуть requests.get в asyncio.to_thread для предотвращения блокировки event loop (news.py, cat.py, pogoda.py)
- Добавить правило AGENTS.md: не использовать эмодзи
- Добавить ISSUES.md с фиксацией проблем проекта
2026-05-26 10:24:26 +05:00
deadzilla
eb53a5ba81 docs: добавить README.md 2026-05-26 09:24:32 +05:00
deadzilla
347aa6ced7 feat: добавить команду !cat и консольную команду pogoda 2026-05-26 00:25:31 +05:00
deadzilla
78ad6fb3bb feat: обновить формат новостей (заголовок/дата+ссылка), добавить блок новостей с habr.com/ru/rss/hubs/artificial_intelligence/news/ 2026-05-25 23:58:54 +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
6553c9140f docs: обновить AGENTS.md с описанием архитектуры, API, конвертаций и безопасности 2026-05-25 00:24:56 +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
243f4b2312 chore: migrate pogoda to wttr.in, fix bot stop, add on_command_error
- Replace Open-Meteo API with wttr.in (no API key needed)
- Convert wind speed from km/h to m/s
- Add weather description translation (EN → RU)
- Add "FeelsLikeC" to pogoda output
- Fix console stop command using asyncio.run_coroutine_threadsafe
- Add on_command_error handler to suppress CommandNotFound logs
2026-05-24 23:13:53 +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