pyrofork: Add topic filter

Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
KurimuzonAkuma 2024-05-04 23:24:17 +03:00 committed by wulan17
parent f84e1f6a5e
commit 40b679a878
No known key found for this signature in database
GPG key ID: 318CD6CD3A6AC0A5

View file

@ -1028,3 +1028,25 @@ class chat(Filter, set):
and message.from_user
and message.from_user.is_self
and not message.outgoing)))
# noinspection PyPep8Naming
class topic(Filter, set):
"""Filter messages coming from one or more topics.
You can use `set bound methods <https://docs.python.org/3/library/stdtypes.html#set>`_ to manipulate the
topics container.
Parameters:
topics (``int`` | ``list``):
Pass one or more topic ids to filter messages in specific topics.
Defaults to None (no topics).
"""
def __init__(self, topics: Union[int, List[int]] = None):
topics = [] if topics is None else topics if isinstance(topics, list) else [topics]
super().__init__(
t for t in topics
)
async def __call__(self, _, message: Message):
return message.topic and message.topic.id in self