diff --git a/pyrogram/client/ext/utils.py b/pyrogram/client/ext/utils.py index bc908165..6fc2552a 100644 --- a/pyrogram/client/ext/utils.py +++ b/pyrogram/client/ext/utils.py @@ -606,6 +606,7 @@ def parse_messages( forward_from_message_id=forward_from_message_id, forward_signature=forward_signature, forward_date=forward_date, + mentioned=message.mentioned, edit_date=message.edit_date, media_group_id=message.grouped_id, photo=photo, diff --git a/pyrogram/client/filters/filters.py b/pyrogram/client/filters/filters.py index aeb730a7..ff06b327 100644 --- a/pyrogram/client/filters/filters.py +++ b/pyrogram/client/filters/filters.py @@ -168,6 +168,9 @@ class Filters: dan = create("Dan", lambda _, m: bool(m.from_user and m.from_user.id == 23122162)) + mentioned = create("Mentioned", lambda _, m: bool(m.mentioned)) + """Filter messages containing mentions""" + @staticmethod def command(command: str or list, prefix: str or list = "/", @@ -281,15 +284,16 @@ class Filters: Args: chats (``int`` | ``str`` | ``list``): Pass one or more chat ids/usernames to filter chats. + For your personal cloud (Saved Messages) you can simply use “me” or “self”. Defaults to None (no chats). """ def __init__(self, chats: int or str or list = None): chats = [] if chats is None else chats if type(chats) is list else [chats] super().__init__( - {i.lower().strip("@") if type(i) is str else i for i in chats} + {"me" if i in ["me", "self"] else i.lower().strip("@") if type(i) is str else i for i in chats} if type(chats) is list else - {chats.lower().strip("@") if type(chats) is str else chats} + {"me" if chats in ["me", "self"] else chats.lower().strip("@") if type(chats) is str else chats} ) def __call__(self, message): @@ -297,7 +301,10 @@ class Filters: message.chat and (message.chat.id in self or (message.chat.username - and message.chat.username.lower() in self)) + and message.chat.username.lower() in self) + or ("me" in self and message.from_user + and message.from_user.is_self + and not message.outgoing)) ) service = create( diff --git a/pyrogram/client/types/messages_and_media/message.py b/pyrogram/client/types/messages_and_media/message.py index 86bb57bc..d224a9c6 100644 --- a/pyrogram/client/types/messages_and_media/message.py +++ b/pyrogram/client/types/messages_and_media/message.py @@ -55,6 +55,9 @@ class Message(Object): For replies, the original message. Note that the Message object in this field will not contain further reply_to_message fields even if it itself is a reply. + mentioned (``bool``, *optional*): + The message contains a mention. + edit_date (``int``, *optional*): Date the message was last edited in Unix time. @@ -206,6 +209,7 @@ class Message(Object): forward_signature: str = None, forward_date: int = None, reply_to_message=None, + mentioned=None, edit_date: int = None, media_group_id: str = None, author_signature: str = None, @@ -253,6 +257,7 @@ class Message(Object): self.forward_signature = forward_signature # flags.4?string self.forward_date = forward_date # flags.5?int self.reply_to_message = reply_to_message # flags.6?Message + self.mentioned = mentioned self.edit_date = edit_date # flags.7?int self.media_group_id = media_group_id # flags.8?string self.author_signature = author_signature # flags.9?string