2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-29 05:18:10 +00:00

Add ability to add/remove users from the user filter.

Use .users to access the inner set of users
This commit is contained in:
Dan 2018-09-14 14:37:04 +02:00
parent 05b3be1e88
commit b893698f1e

View File

@ -237,23 +237,27 @@ class Filters:
return create("Regex", f, p=re.compile(pattern, flags)) return create("Regex", f, p=re.compile(pattern, flags))
@staticmethod @staticmethod
def user(user: int or str or list): def user(users: int or str or list = None):
"""Filter messages coming from specific users. """Filter messages coming from one or more specific users.
Args: Args:
user (``int`` | ``str`` | ``list``): users (``int`` | ``str`` | ``list``):
The user or list of user IDs (int) or usernames (str) the filter should look for. Pass one or more user ids/usernames to filter the users.
The argument passed will be stored as a python set in the *.users* field of the filter instance.
To add or remove users dynamically, simply manipulate the inner set.
Defaults to None (empty set).
""" """
return create( return create(
"User", "User",
lambda _, m: bool(m.from_user lambda _, m: bool(m.from_user
and (m.from_user.id in _.u and (m.from_user.id in _.users
or (m.from_user.username or (m.from_user.username
and m.from_user.username.lower() in _.u))), and m.from_user.username.lower() in _.users))),
u=( users=(
{user.lower().strip("@") if type(user) is str else user} set() if users is None
if not isinstance(user, list) else {users.lower().strip("@") if type(users) is str else users}
else {i.lower().strip("@") if type(i) is str else i for i in user} if not isinstance(users, list)
else {i.lower().strip("@") if type(i) is str else i for i in users}
) )
) )