Support filtering events.Raw by update type

This commit is contained in:
Lonami Exo 2018-04-28 13:37:19 +02:00
parent 5c6ac18a52
commit ce7e5abb58
3 changed files with 31 additions and 12 deletions

View File

@ -1,4 +1,4 @@
from .common import Raw from .raw import Raw
from .chataction import ChatAction from .chataction import ChatAction
from .messagedeleted import MessageDeleted from .messagedeleted import MessageDeleted
from .messageedited import MessageEdited from .messageedited import MessageEdited

View File

@ -209,17 +209,6 @@ class EventCommon(abc.ABC):
return d 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): def name_inner_event(cls):
"""Decorator to rename cls.Event 'Event' as 'cls.Event'""" """Decorator to rename cls.Event 'Event' as 'cls.Event'"""
if hasattr(cls, 'Event'): if hasattr(cls, 'Event'):

30
telethon/events/raw.py Normal file
View File

@ -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