fix: добавить обработку ошибок в commands/morning.py
Если run_morning выбрасывает исключение, ошибка теперь перехватывается: логируется с exc_info, пользователю отправлено сообщение об ошибке. Тест обновлён — проверяется что исключение не пробрасывается наружу.
This commit is contained in:
parent
0f944eafe7
commit
78106e7b4c
@ -13,5 +13,10 @@ class Morning(commands.Cog):
|
||||
async def morning(self, ctx: commands.Context) -> None:
|
||||
"""Погода, лучшие статьи за сутки и котик"""
|
||||
logger.info("%s: !morning запущен", ctx.author)
|
||||
await run_morning(ctx.bot, ctx.channel)
|
||||
logger.info("%s: !morning завершен", ctx.author)
|
||||
try:
|
||||
await run_morning(ctx.bot, ctx.channel)
|
||||
except Exception:
|
||||
logger.error("%s: !morning ошибка", ctx.author, exc_info=True)
|
||||
await ctx.send("Ошибка при выполнении команды. Попробуйте позже.")
|
||||
else:
|
||||
logger.info("%s: !morning завершен", ctx.author)
|
||||
|
||||
@ -72,7 +72,7 @@ class TestMorningCommand:
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_morning_run_morning_raises(self) -> None:
|
||||
"""Ошибка в run_morning должна пробрасываться."""
|
||||
"""Ошибка в run_morning ловится, пользователю отправлено сообщение."""
|
||||
from commands.morning import Morning
|
||||
|
||||
cog = Morning()
|
||||
@ -80,5 +80,8 @@ class TestMorningCommand:
|
||||
|
||||
with patch("commands.morning.run_morning", new_callable=AsyncMock) as mock_run:
|
||||
mock_run.side_effect = Exception("api error")
|
||||
with pytest.raises(Exception, match="api error"):
|
||||
await cog.morning(cog, ctx)
|
||||
await cog.morning(cog, ctx)
|
||||
|
||||
ctx.send.assert_awaited_once()
|
||||
message = ctx.send.call_args[0][0]
|
||||
assert "Ошибка" in message
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user