From d212e60eabb6aa8d080c4ff1cbddb86b2fbe1bd2 Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 29 Oct 2026 22:23:59 +0200 Subject: [PATCH] fix(logging): write raw updates in production too --- VERSION | 2 +- bot.py | 12 ++++++++---- tests/test_raw_updates.py | 22 ++++++++++------------ 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/VERSION b/VERSION index 3fa4ee1..4070802 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0+76 +0.1.0+77 diff --git a/bot.py b/bot.py index d5bede1..72dbf44 100644 --- a/bot.py +++ b/bot.py @@ -255,8 +255,11 @@ def is_development_environment() -> bool: def configure_raw_update_logging(dispatcher: Dispatcher) -> bool: - if not is_development_environment(): - return False + """Persist incoming updates for diagnostics in every deploy environment. + + Групповые события (администрирование и поддержка) видно только через + мидлваре — без него прод-бот остаётся «чёрным ящиком». + """ dispatcher.update.outer_middleware(RawUpdateMiddleware()) return True @@ -1660,8 +1663,9 @@ async def main() -> None: analytics.init_db() payments.init_payments_table() await asyncio.to_thread(support.init_support_table) - if is_development_environment(): - await asyncio.to_thread(init_raw_updates_db) + # Инициализируем БД сырых апдейтов в любом окружении: в проде она нужна, + # чтобы видеть события из групп администрирования и поддержки. + await asyncio.to_thread(init_raw_updates_db) token = os.environ.get("BOT_TOKEN", "").strip() if not token: raise RuntimeError("BOT_TOKEN is required") diff --git a/tests/test_raw_updates.py b/tests/test_raw_updates.py index 25aa08f..a8a4c67 100644 --- a/tests/test_raw_updates.py +++ b/tests/test_raw_updates.py @@ -92,15 +92,13 @@ class RawUpdateMiddlewareTests(unittest.IsolatedAsyncioTestCase): class RawUpdateModeTests(unittest.TestCase): - def test_middleware_is_registered_only_for_development(self): - dispatcher = Dispatcher() - with patch.object(bot, "DEPLOY_ENV", "production"), patch.object( - dispatcher.update, "outer_middleware" - ) as register: - self.assertFalse(bot.configure_raw_update_logging(dispatcher)) - register.assert_not_called() - with patch.object(bot, "DEPLOY_ENV", "development"), patch.object( - dispatcher.update, "outer_middleware" - ) as register: - self.assertTrue(bot.configure_raw_update_logging(dispatcher)) - register.assert_called_once() + def test_middleware_is_registered_in_every_environment(self): + """Прод-бот тоже пишет сырые апдейты: групповые события видны только так.""" + for deploy_env in ("production", "development"): + with self.subTest(deploy_env=deploy_env): + dispatcher = Dispatcher() + with patch.object(bot, "DEPLOY_ENV", deploy_env), patch.object( + dispatcher.update, "outer_middleware" + ) as register: + self.assertTrue(bot.configure_raw_update_logging(dispatcher)) + register.assert_called_once()