mirror of
https://github.com/Mayuri-Chan/pyrofork.git
synced 2025-12-29 12:04:51 +00:00
pyrofork: Add topic filter
Signed-off-by: wulan17 <wulan17@nusantararom.org>
This commit is contained in:
parent
f84e1f6a5e
commit
40b679a878
1 changed files with 22 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue