fix(logging): write raw updates in production too

This commit is contained in:
admin committed 2026-10-29 22:23:59 +02:00
1 parent 57f4c6cb4f
commit d212e60eab
3 files changed
+19 -17

No files matched your search

+1 -1
View File
@@ -1 +1 @@
0.1.0+76
0.1.0+77
+8 -4
View File
@@ -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")
+10 -12
View File
@@ -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()