165 Commits

Author SHA1 Message Date
deadzilla
0d98d31e61 ISSUES.md: задача Dockerfile+tests отмечена как отклонена (Docker — production) 2026-07-14 22:54:47 +05:00
deadzilla
60e7faca5f Откат: тесты и pytest удалены из Dockerfile (Docker — production-окружение) 2026-07-14 22:53:57 +05:00
deadzilla
f45beef888 ISSUES.md: отмечены все 5 задач низкого приоритета как выполненные 2026-07-14 22:51:10 +05:00
deadzilla
cd014b171f rate_limiter: добавлен комментарий, поясняющий дизайн глобальных синглтонов и factory-функций 2026-07-14 22:50:45 +05:00
deadzilla
d85f28f042 Удалены избыточные проверки ctx в on_command_error (ctx всегда передан discord.py) 2026-07-14 22:48:30 +05:00
deadzilla
bb9e50fb05 Убраны приватные атрибуты с объекта discord.py Bot: START_TIME вынесен на уровень модуля, _scheduler удалён (не использовался) 2026-07-14 22:46:57 +05:00
deadzilla
5a65be97d9 Dockerfile: добавлено копирование tests/ и установка pytest для отладки в контейнере 2026-07-14 22:43:19 +05:00
deadzilla
29313530f3 Удалены избыточные @pytest.mark.asyncio (asyncio_mode = auto в pytest.ini) 2026-07-14 22:41:10 +05:00
deadzilla
003bd0552f Отмечены все 4 задачи среднего уровня как выполненные в ISSUES.md 2026-07-14 22:27:59 +05:00
deadzilla
3888c3cd01 fetch_cat() передаёт x-api-key при наличии CAT_API_KEY в окружении 2026-07-14 22:27:30 +05:00
deadzilla
0d5d8dbe7b Удалён лишний __init__ в Pg; API_URL_WEATHER используется напрямую 2026-07-14 22:23:38 +05:00
deadzilla
bb9f291623 Scheduler.__init__ больше не создаёт task синхронно; start() стал async-методом 2026-07-14 22:20:45 +05:00
deadzilla
66b16e95f4 Вынесен импорт fromstring из fetch_rss на уровень модуля 2026-07-14 22:15:14 +05:00
deadzilla
d4b457f94e docs: помечены закрытые критические задачи в ISSUES.md 2026-07-14 22:04:38 +05:00
deadzilla
3bea7abaea fix: translate_weather() проверяет точное совпадение перед substring
Точное совпадение (case-insensitive) теперь имеет приоритет над
substring-matching, что исключает ложные совпадения вида
'Heavy rain' внутри 'Heavy rain shower'.
2026-07-14 22:03:18 +05:00
deadzilla
0c6e10a482 fix: setup_logging() вызывается до первого logger.info()
Первый лог-сообщение '=== Запуск Discord бота ===' больше не теряется,
так как логгер настроен до его вывода.
2026-07-14 22:03:13 +05:00
deadzilla
9b04bc0c93 fix: setup_logging() больше не создаёт дублирующиеся handlers
Добавлен root.handlers.clear() перед добавлением новых хендлеров.
Решает проблему накопления StreamHandler/RotatingFileHandler при
повторных вызовах setup_logging().
2026-07-14 22:03:08 +05:00
deadzilla
250452ad60 Добавлены открытые задачи после кодревью (12 issue) 2026-07-12 23:39:56 +05:00
deadzilla
90547df975 docs: обновлён ISSUES.md — все задачи (средний + низкий) перенесены в исправленные 2026-07-12 00:18:43 +05:00
deadzilla
1ab3205333 fix: format_articles(None) возвращает graceful fallback вместо TypeError 2026-07-12 00:11:54 +05:00
deadzilla
f825be866b chore: удалена закомментированная устаревшая строка теста pressure_to_mmhg(0) 2026-07-12 00:09:21 +05:00
deadzilla
fb42a90bec fix: requirements.txt использует ~= (compatible release) вместо >= для предсказуемости версий 2026-07-12 00:08:49 +05:00
deadzilla
3982d26c95 fix: Dockerfile копирует conftest.py для запуска тестов в контейнере 2026-07-12 00:08:29 +05:00
deadzilla
5eb4184d63 refactor: RateLimiter принимает _time_func для детерминированных тестов без зависимости от реального времени 2026-07-12 00:08:13 +05:00
deadzilla
3a2c388adf refactor: вынесен monkey-patch asyncio.iscoroutinefunction в utils/compat.py 2026-07-12 00:05:46 +05:00
deadzilla
88ed1a6aa1 docs: обновлён ISSUES.md — 5 задач среднего приоритета перенесены в исправленные 2026-07-12 00:04:10 +05:00
deadzilla
6b0a6cd8a6 refactor: pressure_to_mmhg заменяет Any на float | int | str | None 2026-07-12 00:03:39 +05:00
deadzilla
d94b9c16ab fix: translate_weather обрезает пробелы перед проверкой на пустоту 2026-07-12 00:02:13 +05:00
deadzilla
efee713301 fix: TextHelpCommand показывает standalone-команды (без cog) если они не hidden 2026-07-11 23:59:41 +05:00
deadzilla
49cb1a430b perf: wmo_to_russian использует модульную константу _WMO_MAPPING вместо создания dict при каждом вызове 2026-07-11 23:56:54 +05:00
deadzilla
b22b02d65e fix: _parse_date валидирует формат даты через regex вместо возврата мусора 2026-07-11 23:55:18 +05:00
deadzilla
e957446063 docs: обновлён ISSUES.md — 3 задачи высокого приоритета перенесены в исправленные 2026-07-11 23:50:40 +05:00
deadzilla
048b9a3a91 fix: format_weather_data_for_console заменяет None на эм-дэш вместо вывода 'None' в текст 2026-07-11 23:50:05 +05:00
deadzilla
bc37362959 fix: !nw использует asyncio.gather() для параллельной загрузки RSS вместо последовательной 2026-07-11 23:47:00 +05:00
deadzilla
27eaa677fd fix: fallback morning-дайджеста перебирает каналы целевого сервера вместо всех серверов 2026-07-11 23:45:25 +05:00
deadzilla
e2289e5092 docs: обновлён ISSUES.md — 3 критические задачи перенесены в исправленные 2026-07-11 23:31:27 +05:00
deadzilla
c5c6a51cd2 fix: добавлено закрытие requests.Session при graceful shutdown бота 2026-07-11 23:30:55 +05:00
deadzilla
1fa6deaf67 fix: отсортирован _WEATHER_MAPPING по убыванию длины ключей для корректного substring-matching 2026-07-11 23:27:17 +05:00
deadzilla
b5cbeecb61 docs: заменён format_weather_for_embed на format_weather_for_message в README 2026-07-11 23:23:19 +05:00
deadzilla
cef53197b1 feat: !morning — заменить embed на plain text, кот отдельным сообщением
- Переименован format_weather_for_embed -> format_weather_for_message
- Убран markdown жирный (**text**) из заголовков погоды и статей
- Утренний дайджест отправляется как обычное текстовое сообщение
- Котик отправляется отдельным сообщением перед дайджестом
- Truncation через truncate_message (лимит 2000 символов)
- Обновлены тесты: проверка 2 send() вместо embed
2026-07-09 13:28:39 +05:00
deadzilla
2197a0052d Обновлён README.md: добавлены truncate_message, truncate_embed_text, truncate_embed_field в документацию utils/news.py и тесты 2026-07-09 13:15:03 +05:00
deadzilla
bc843abc63 Добавлены тесты для Cat, News, Morning когов, TextHelpCommand и truncate-функций (282 теста, все проходят) 2026-07-09 13:07:09 +05:00
deadzilla
f417a9abbc Актуализация README.md: убрал несуществующие !hp/help.py/test_help_discord, добавил test_integration, conftest, .gitignore, .pre-commit-config.yaml, обновил зависимости и счётчик тестов (154 → 161) 2026-07-09 12:53:48 +05:00
deadzilla
7cef202c8f refactor(news): Embed → plain text для команды !nw 2026-07-09 12:32:15 +05:00
deadzilla
8d346943da Замена embed-вывода !help на простой текст 2026-07-09 10:17:33 +05:00
deadzilla
d0a4f45e68 feat: удалить команду !hp вместе с тестами 2026-07-09 09:35:49 +05:00
deadzilla
48ed9aa07b fix: !hp теперь показывает правильные описания команд
Проблема: cmd.__doc__ возвращал docstring класса Command из discord.py
(одинаковый для всех команд), а не docstring callback-функции.

Решение:
- Использовать cmd.help вместо cmd.__doc__ для получения описания
- Скрыть !hp из списка через hidden=True
- Пропускать hidden-команды и команды без описания
- Обновить тесты под новый интерфейс
2026-07-09 09:18:48 +05:00
deadzilla
a8e9be09c7 Добавлен tzdata и установлен часовой пояс Asia/Yekaterinburg для корректной работы планировщика 2026-07-09 00:14:49 +05:00
deadzilla
b98c696498 Исправлена версия defusedxml: 7.0.0 -> 0.7.0 (версии 7.0.0 не существует) 2026-07-09 00:07:01 +05:00
deadzilla
7ade3147cf форматирование: применён ruff format ко всем файлам проекта (21 файл) 2026-07-08 00:44:22 +05:00