diff --git a/telethon/events/__init__.py b/telethon/events/__init__.py index 4ff0699d..7614dbfe 100644 --- a/telethon/events/__init__.py +++ b/telethon/events/__init__.py @@ -1,4 +1,4 @@ -from .common import Raw +from .raw import Raw from .chataction import ChatAction from .messagedeleted import MessageDeleted from .messageedited import MessageEdited diff --git a/telethon/events/common.py b/telethon/events/common.py index 3b52380a..a5dfc7e7 100644 --- a/telethon/events/common.py +++ b/telethon/events/common.py @@ -209,17 +209,6 @@ class EventCommon(abc.ABC): return d -class Raw(EventBuilder): - """ - Represents a raw event. The event is the update itself. - """ - def resolve(self, client): - pass - - def build(self, update): - return update - - def name_inner_event(cls): """Decorator to rename cls.Event 'Event' as 'cls.Event'""" if hasattr(cls, 'Event'): diff --git a/telethon/events/raw.py b/telethon/events/raw.py new file mode 100644 index 00000000..5972d45c --- /dev/null +++ b/telethon/events/raw.py @@ -0,0 +1,30 @@ +from .common import EventBuilder +from .. import utils + + +class Raw(EventBuilder): + """ + Represents a raw event. The event is the update itself. + + Args: + types (`list` | `tuple` | `type`, optional): + The type or types that the :tl:`Update` instance must be. + Equivalent to ``if not isinstance(update, types): return``. + """ + def __init__(self, types=None): + super().__init__() + if not types: + self.types = None + elif not utils.is_list_like(types): + assert isinstance(types, type) + self.types = types + else: + assert all(isinstance(x, type) for x in types) + self.types = tuple(types) + + def resolve(self, client): + pass + + def build(self, update): + if not self.types or isinstance(update, self.types): + return update