127 Commits

Author SHA1 Message Date
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
deadzilla
d20957ac5f исправлено: добавлены noqa: E402 для импортов после monkey-patch в bot.py 2026-07-08 00:40:37 +05:00
deadzilla
4b61909ebc исправлено: убраны неиспользуемые импорты и переменные из tests/test_morning_runner.py 2026-07-08 00:40:08 +05:00
deadzilla
4e816d5998 исправлено: перемещён import contextlib в начало файла 2026-07-08 00:39:43 +05:00
deadzilla
b21237b042 исправлено: убран неиспользуемый import requests из tests/test_integration.py 2026-07-08 00:39:27 +05:00
deadzilla
0fa467d40e исправлено: переименована неоднозначная переменная l в line 2026-07-08 00:39:12 +05:00
deadzilla
a1b72ecbcf исправлено: убрана неиспользуемая переменная mock_fallback в test_fetch_open_meteo_ssl_error 2026-07-08 00:38:59 +05:00
deadzilla
00ec2eac0e исправлено: убран неиспользуемый import pytest из tests/test_fetch_rss.py 2026-07-08 00:38:16 +05:00
deadzilla
ab0039661a исправлено: убраны неиспользуемые импорты json и pytest из tests/test_fetch_cat.py 2026-07-08 00:37:35 +05:00
deadzilla
5a2ff483a1 исправлено: убраны неиспользуемые импорты pytest и patch из tests/test_commands_status.py 2026-07-08 00:37:16 +05:00
deadzilla
cd25d63f5b исправлено: убран неиспользуемый import pytest из tests/test_commands_stats.py 2026-07-08 00:37:04 +05:00
deadzilla
be0aa5211a исправлено: убран неиспользуемый import discord из commands/morning.py 2026-07-08 00:36:50 +05:00
deadzilla
02b6b10ea3 исправлено: убран неиспользуемый import discord из commands/help.py 2026-07-08 00:36:41 +05:00
deadzilla
dda5753f8c Обновление ISSUES.md: все задачи закрыты 2026-07-08 00:28:09 +05:00
deadzilla
a063abcd17 Добавлены интеграционные тесты: загрузка когов, команды !cat и !stats, утилиты (9 тестов, итого 239) 2026-07-08 00:27:56 +05:00
deadzilla
a5ea2086cd Исправление: добавил pre-commit хуки (ruff + ruff-format) 2026-07-08 00:17:01 +05:00
deadzilla
a9a2d40e5c Обновление ISSUES.md: отмечен исправленный LOW-приоритет 2026-07-08 00:15:47 +05:00
deadzilla
a8d2bdb579 Исправление: вынес import из тел функций тестов наверх модулей (35 вхождений) 2026-07-08 00:15:34 +05:00
deadzilla
beae42fdc8 Исправление: добавил -> None ко всем 140 test-функциям 2026-07-08 00:10:27 +05:00
deadzilla
ea40400a65 Обновление ISSUES.md: все MEDIUM задачи исправлены 2026-07-08 00:08:02 +05:00
deadzilla
ff2b9bb8d7 Исправление: factory-функции для RateLimiter (make_cat_limiter, make_weather_limiter и т.д.) 2026-07-08 00:07:55 +05:00
deadzilla
77c5f5a3a6 Исправление: graceful shutdown через on_shutdown + context manager (SIGTERM на Docker/K8s) 2026-07-08 00:05:47 +05:00
deadzilla
f6f5b96563 Исправление: убрал пустой __init__ из Morning cog 2026-07-07 23:33:51 +05:00
deadzilla
41102a9d3d Исправление: убрал утечку корутин Scheduler в тестах — mock _start_scheduler вместо create_task 2026-07-07 23:32:46 +05:00
deadzilla
faad12a0a6 Исправление: monkey-patch asyncio.iscoroutinefunction для устранения 53 deprecation warnings 2026-07-07 23:20:26 +05:00
deadzilla
65e01f0091 Исправление: добавил type hints ко всем 20 production-функциям 2026-07-07 23:17:25 +05:00
deadzilla
613dea55cf docs: обновил ISSUES.md — отметил исправленные HIGH-проблемы 2026-07-07 23:12:08 +05:00
deadzilla
57d7792755 Исправление: перенос import time из __init__ на уровень модуля 2026-07-07 23:11:38 +05:00
deadzilla
aa40f2b7ff Исправление: замена f-string на %-формат в logger.error 2026-07-07 23:10:21 +05:00
deadzilla
ec0cee6c68 Исправление: удаление эмодзи из сообщений и логов morning_runner 2026-07-07 23:08:58 +05:00
deadzilla
5a11fb2b5d Исправление: замена signal handler на on_shutdown (устранён race condition event loop) 2026-07-07 22:51:23 +05:00
deadzilla
07af928654 Исправление: обрезка embed-полей до лимитов Discord (description 4096, field 1024) 2026-07-07 22:47:56 +05:00
deadzilla
5a2f1630f6 Безопасность: замена xml.etree.ElementTree на defusedxml (защита от XXE-инъекций) 2026-07-07 22:46:02 +05:00
deadzilla
2d890bea98 docs: актуализировал README.md — тесты, зависимости, .env.example 2026-07-07 22:27:02 +05:00
deadzilla
d1c64a5a2b feat: форматирование времени ожидания в дни/часы/минуты/секунды 2026-07-07 22:19:04 +05:00
deadzilla
d62fac7718 Удалён файл CODE_REVIEW.md 2026-07-07 21:57:49 +05:00
deadzilla
6e2a092548 fix: H5 — 50 тестов asyncio.run() заменены на async def
- test_fetch_cat.py: 10 тестов (def → async def, asyncio.run → await)
- test_fetch_rss.py: 21 тест (def → async def, asyncio.run → await)
- test_fetch_weather.py: 19 тест (def → async def, asyncio.run → await)
- Удалён лишний import asyncio из тестовых файлов
- Больше не создаётся новый event loop на каждый тест
- RateLimiter (asyncio.Lock) теперь корректно работает в одном loop

230 тестов проходят.
2026-07-07 21:52:18 +05:00
deadzilla
e1ab1e3a61 fix: H4 — защита от дублирования cogs при reconnect в on_ready
- Добавлена проверка if self.bot.cogs: return перед добавлением cogs
- on_ready может сработать несколько раз при reconnect gateway
- Без защиты команды регистрировались бы заново каждый раз

230 тестов проходят.
2026-07-07 21:47:02 +05:00
deadzilla
ea0d50df4f fix: H3 — pressure_to_mmhg(0) возвращает 0.0 вместо '—'
- Заменён 'not mb' на 'mb is None or mb == ""' (0 — валидное значение)
- Обновлён тест test_pressure_zero: ожидание 0.0 вместо '—'

230 тестов проходят.
2026-07-07 21:44:48 +05:00