Add self_destruction filter

This commit is contained in:
KurimuzonAkuma 2024-07-05 18:45:27 +03:00
parent a177af39fb
commit 1e0f5f85b3

View File

@ -18,7 +18,7 @@
import inspect import inspect
import re import re
from typing import Callable, Union, List, Pattern from typing import Callable, Union, List, Pattern, Optional
import pyrogram import pyrogram
from pyrogram import enums from pyrogram import enums
@ -261,6 +261,16 @@ caption = create(caption_filter)
# endregion # endregion
# region self_destruction_filter
async def self_destruction_filter(_, __, m: Message):
return bool(m.media and getattr(getattr(m, m.media.value, None), "ttl_seconds", None))
self_destruction = create(self_destruction_filter)
"""Filter self-destruction media messages."""
# endregion
# region audio_filter # region audio_filter
async def audio_filter(_, __, m: Message): async def audio_filter(_, __, m: Message):
@ -971,7 +981,7 @@ def regex(pattern: Union[str, Pattern], flags: int = 0):
elif isinstance(update, InlineQuery): elif isinstance(update, InlineQuery):
value = update.query value = update.query
elif isinstance(update, PreCheckoutQuery): elif isinstance(update, PreCheckoutQuery):
value = update.payload value = update.invoice_payload
else: else:
raise ValueError(f"Regex filter doesn't work with {type(update)}") raise ValueError(f"Regex filter doesn't work with {type(update)}")
@ -1001,7 +1011,7 @@ class user(Filter, set):
Defaults to None (no users). Defaults to None (no users).
""" """
def __init__(self, users: Union[int, str, List[Union[int, str]]] = None): def __init__(self, users: Optional[Union[int, str, List[Union[int, str]]]] = None):
users = [] if users is None else users if isinstance(users, list) else [users] users = [] if users is None else users if isinstance(users, list) else [users]
super().__init__( super().__init__(
@ -1033,7 +1043,7 @@ class chat(Filter, set):
Defaults to None (no chats). Defaults to None (no chats).
""" """
def __init__(self, chats: Union[int, str, List[Union[int, str]]] = None): def __init__(self, chats: Optional[Union[int, str, List[Union[int, str]]]] = None):
chats = [] if chats is None else chats if isinstance(chats, list) else [chats] chats = [] if chats is None else chats if isinstance(chats, list) else [chats]
super().__init__( super().__init__(
@ -1066,7 +1076,7 @@ class topic(Filter, set):
Defaults to None (no topics). Defaults to None (no topics).
""" """
def __init__(self, topics: Union[int, List[int]] = None): def __init__(self, topics: Optional[Union[int, List[int]]] = None):
topics = [] if topics is None else topics if isinstance(topics, list) else [topics] topics = [] if topics is None else topics if isinstance(topics, list) else [topics]
super().__init__( super().__init__(