From fc8fcb25312378ba6ad848430e9cd92b08e3c6d8 Mon Sep 17 00:00:00 2001 From: k0te1ch Date: Sat, 15 Aug 2026 17:39:03 +0300 Subject: [PATCH] fix(bot): log handler and middleware failures instead of printing them A failed pinned-message delete and a failed metrics write both reported themselves with print(), so in the container they landed on stdout untagged instead of in the loguru sink the rest of the bot uses. Both now log a warning with {e!r} so the exception type survives. cli.py keeps its prints (click entry point, that's user output) but no longer drops the alembic error text it caught. --- app/bot/cli.py | 2 +- app/bot/handlers/bot_handler.py | 3 ++- app/bot/middlewares/base/metrics_middleware.py | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/bot/cli.py b/app/bot/cli.py index 1ae5172..33bbfc4 100644 --- a/app/bot/cli.py +++ b/app/bot/cli.py @@ -129,7 +129,7 @@ def makemigrations(message, sync): ) print("Alembic revision") except CommandError as err: - print("Alembic Command Error") + print(f"Alembic Command Error: {err}") if str(err) == "Target database is not up to date.": print('Run "python main.py migrate"') diff --git a/app/bot/handlers/bot_handler.py b/app/bot/handlers/bot_handler.py index 2043398..8113706 100644 --- a/app/bot/handlers/bot_handler.py +++ b/app/bot/handlers/bot_handler.py @@ -1,6 +1,7 @@ import os from aiogram import F, Router, types +from loguru import logger router = Router(name=os.path.splitext(os.path.basename(__file__))[0]) # router.message.filter(IsPrivate, IsAdmin) @@ -15,4 +16,4 @@ async def delete_pinned_service_message(message: types.Message, bot): try: await bot.delete_message(chat_id=message.chat.id, message_id=message.message_id) except Exception as e: - print(f"Failed to delete pinned service message: {e}") + logger.warning(f"Failed to delete pinned service message: {e!r}") diff --git a/app/bot/middlewares/base/metrics_middleware.py b/app/bot/middlewares/base/metrics_middleware.py index 8555ef0..7b45330 100644 --- a/app/bot/middlewares/base/metrics_middleware.py +++ b/app/bot/middlewares/base/metrics_middleware.py @@ -6,6 +6,7 @@ from aiogram import BaseMiddleware from aiogram.types import TelegramObject +from loguru import logger class MetricsMiddleware(BaseMiddleware): @@ -36,7 +37,7 @@ def _save_metrics(self) -> None: with self.metrics_path.open("w", encoding="utf-8") as f: json.dump(self.call_counts, f, indent=4, ensure_ascii=False) except Exception as e: - print(f"[MetricsMiddleware] Error saving metrics: {e}") + logger.warning(f"[MetricsMiddleware] Error saving metrics: {e!r}") def get_metrics(self) -> dict[str, int]: return dict(self.call_counts)