From 2072b5f0ebbebbb958ee5b4ab9e6e6657567c425 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Wed, 24 Nov 2021 04:33:14 +0200 Subject: [PATCH] Extend MagicFilter with aiogram-specific operation --- aiogram/utils/magic_filter.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 aiogram/utils/magic_filter.py diff --git a/aiogram/utils/magic_filter.py b/aiogram/utils/magic_filter.py new file mode 100644 index 00000000..b5ec8408 --- /dev/null +++ b/aiogram/utils/magic_filter.py @@ -0,0 +1,20 @@ +from typing import Any + +from magic_filter import MagicFilter as _MagicFilter +from magic_filter.operations import BaseOperation + + +class AsFilterResultOperation(BaseOperation): + __slots__ = ("name",) + + def __init__(self, name: str) -> None: + self.name = name + + def resolve(self, value: Any, initial_value: Any) -> Any: + if value: + return {self.name: value} + + +class MagicFilter(_MagicFilter): + def as_(self, name: str) -> "MagicFilter": + return self._extend(AsFilterResultOperation(name=name))