Extended MagicFilter with aiogram-specific operation (#759)

* Extend MagicFilter with aiogram-specific operation

* Added tests

* Added changes annotation and update docs
This commit is contained in:
Alex Root Junior 2021-11-24 06:00:37 +02:00 committed by GitHub
parent 092b3f06f2
commit d7be55bc58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 85 additions and 11 deletions

View file

@ -1,11 +1,10 @@
from magic_filter import MagicFilter
from .client import session
from .client.bot import Bot
from .dispatcher import filters, handler
from .dispatcher.dispatcher import Dispatcher
from .dispatcher.middlewares.base import BaseMiddleware
from .dispatcher.router import Router
from .utils.magic_filter import MagicFilter
from .utils.text_decorations import html_decoration as _html_decoration
from .utils.text_decorations import markdown_decoration as _markdown_decoration

View file

@ -0,0 +1,21 @@
from typing import Any
from magic_filter import MagicFilter as _MagicFilter
from magic_filter import MagicT as _MagicT
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: _MagicT, name: str) -> _MagicT:
return self._extend(AsFilterResultOperation(name=name))