From 93a425f528d2496998cca0a158c1a6e76b474785 Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Sun, 6 Nov 2022 01:10:32 +0200 Subject: [PATCH] Added native support of MagicFilter --- aiogram/dispatcher/filters/filters.py | 9 +++++++-- aiogram/types/message.py | 2 ++ requirements.txt | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/aiogram/dispatcher/filters/filters.py b/aiogram/dispatcher/filters/filters.py index 47a4f22e..42a51f2d 100644 --- a/aiogram/dispatcher/filters/filters.py +++ b/aiogram/dispatcher/filters/filters.py @@ -2,6 +2,8 @@ import abc import inspect import typing +from magic_filter import MagicFilter + from ..handler import Handler, FilterObj @@ -25,6 +27,9 @@ def get_filter_spec(dispatcher, filter_: callable): if not callable(filter_): raise TypeError('Filter must be callable and/or awaitable!') + if isinstance(filter_, MagicFilter): + filter_ = filter_.resolve + spec = inspect.getfullargspec(filter_) if 'dispatcher' in spec: kwargs['dispatcher'] = dispatcher @@ -202,14 +207,14 @@ class BoundFilter(Filter): You need to implement ``__init__`` method with single argument related with key attribute and ``check`` method where you need to implement filter logic. """ - + key = None """Unique name of the filter argument. You need to override this attribute.""" required = False """If :obj:`True` this filter will be added to the all of the registered handlers""" default = None """Default value for configure required filters""" - + @classmethod def validate(cls, full_config: typing.Dict[str, typing.Any]) -> typing.Dict[str, typing.Any]: """ diff --git a/aiogram/types/message.py b/aiogram/types/message.py index 4cc319fa..08816377 100644 --- a/aiogram/types/message.py +++ b/aiogram/types/message.py @@ -324,6 +324,8 @@ class Message(base.TelegramObject): url += f"c/{self.chat.shifted_id}/" url += f"{self.message_id}" + if self.is_topic_message and self.message_thread_id: + url += f"?topic={self.message_thread_id}" return url def link(self, text, as_html=True) -> str: diff --git a/requirements.txt b/requirements.txt index 396e9526..5a935f47 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ aiohttp>=3.8.0,<3.9.0 Babel>=2.9.1,<2.10.0 certifi>=2021.10.8 +magic-filter>=1.0.9