mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-14 05:26:36 +03:00
Add ChatType filter
This commit is contained in:
parent
604d95a807
commit
0e586abefe
|
@ -1,5 +1,6 @@
|
||||||
from typing import Callable, Sequence, Tuple, Union
|
from typing import Callable, Literal, Sequence, Tuple, Union
|
||||||
|
|
||||||
|
from ...types import Channel, Group, User
|
||||||
from ..event import Event
|
from ..event import Event
|
||||||
|
|
||||||
Filter = Callable[[Event], bool]
|
Filter = Callable[[Event], bool]
|
||||||
|
@ -51,3 +52,40 @@ class Senders:
|
||||||
sender = getattr(event, "sender", None)
|
sender = getattr(event, "sender", None)
|
||||||
id = getattr(sender, "id", None)
|
id = getattr(sender, "id", None)
|
||||||
return id in self._senders
|
return id in self._senders
|
||||||
|
|
||||||
|
|
||||||
|
class ChatType:
|
||||||
|
"""
|
||||||
|
Filter by chat type, either ``'user'``, ``'group'`` or ``'broadcast'``.
|
||||||
|
"""
|
||||||
|
|
||||||
|
__slots__ = ("_type",)
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
type: Union[Literal["user"], Literal["group"], Literal["broadcast"]],
|
||||||
|
) -> None:
|
||||||
|
if type == "user":
|
||||||
|
self._type: Union[User, Group, Channel] = User
|
||||||
|
elif type == "group":
|
||||||
|
self._type = Group
|
||||||
|
elif type == "broadcast":
|
||||||
|
self._type = Channel
|
||||||
|
else:
|
||||||
|
raise TypeError(f"unrecognised chat type: {type}")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def type(self) -> Union[Literal["user"], Literal["group"], Literal["broadcast"]]:
|
||||||
|
"""
|
||||||
|
The chat type this filter is filtering on.
|
||||||
|
"""
|
||||||
|
if self._type == User:
|
||||||
|
return "user"
|
||||||
|
elif self._type == Group:
|
||||||
|
return "group"
|
||||||
|
elif self._type == Channel:
|
||||||
|
return "broadcast"
|
||||||
|
|
||||||
|
def __call__(self, event: Event) -> bool:
|
||||||
|
sender = getattr(event, "chat", None)
|
||||||
|
return isinstance(sender, self._type)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user