From 0d3b0c4e43bd8495da57c7eb2c4fe7bca00d5890 Mon Sep 17 00:00:00 2001 From: Mykola Solodukha Date: Fri, 16 Oct 2020 20:00:19 +0300 Subject: [PATCH] :sparkles: Ability to update `data` dict from middlewares returns --- aiogram/dispatcher/handler.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/aiogram/dispatcher/handler.py b/aiogram/dispatcher/handler.py index 38219012..a1831c50 100644 --- a/aiogram/dispatcher/handler.py +++ b/aiogram/dispatcher/handler.py @@ -98,7 +98,11 @@ class Handler: if self.middleware_key: try: - await self.dispatcher.middleware.trigger(f"pre_process_{self.middleware_key}", args + (data,)) + data.update( + await self.dispatcher.middleware.trigger( + f"pre_process_{self.middleware_key}", args + (data,) + ) or {} + ) except CancelHandler: # Allow to cancel current event return results @@ -112,7 +116,11 @@ class Handler: ctx_token = current_handler.set(handler_obj.handler) try: if self.middleware_key: - await self.dispatcher.middleware.trigger(f"process_{self.middleware_key}", args + (data,)) + data.update( + await self.dispatcher.middleware.trigger( + f"process_{self.middleware_key}", args + (data,) + ) or {} + ) partial_data = _check_spec(handler_obj.spec, data) response = await handler_obj.handler(*args, **partial_data) if response is not None: