From 071ebcb4ef9e5a1f21d898c5c8ef22167b62254f Mon Sep 17 00:00:00 2001 From: Emilio Molinari Date: Wed, 21 Mar 2018 15:38:43 +0100 Subject: [PATCH 1/2] Changed events.NewMessage to accept a list of patterns instead of just 1 --- telethon/events/__init__.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/telethon/events/__init__.py b/telethon/events/__init__.py index a91665fb..c39c4784 100644 --- a/telethon/events/__init__.py +++ b/telethon/events/__init__.py @@ -236,11 +236,13 @@ class NewMessage(_EventBuilder): self.incoming = incoming self.outgoing = outgoing if isinstance(pattern, str): - self.pattern = re.compile(pattern).match - elif not pattern or callable(pattern): + self.pattern = [re.compile(pattern).match] + elif isinstance(pattern, (list, tuple)): self.pattern = pattern + elif not pattern or callable(pattern): + self.pattern = [pattern] elif hasattr(pattern, 'match') and callable(pattern.match): - self.pattern = pattern.match + self.pattern = [pattern.match] else: raise TypeError('Invalid pattern type given') @@ -300,8 +302,11 @@ class NewMessage(_EventBuilder): return if self.pattern: - match = self.pattern(event.message.message or '') - if not match: + for pattern in self.pattern: + match = pattern(event.message.message or '') + if match is not None: + break + else: return event.pattern_match = match From faf2142122b6fc6b2546fdfcf9685df6742be1f8 Mon Sep 17 00:00:00 2001 From: Emilio Molinari Date: Wed, 21 Mar 2018 16:59:31 +0100 Subject: [PATCH 2/2] Use utils.is_list_like and fixed None bug --- telethon/events/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/telethon/events/__init__.py b/telethon/events/__init__.py index c39c4784..4c8d8c9d 100644 --- a/telethon/events/__init__.py +++ b/telethon/events/__init__.py @@ -235,11 +235,11 @@ class NewMessage(_EventBuilder): super().__init__(chats=chats, blacklist_chats=blacklist_chats) self.incoming = incoming self.outgoing = outgoing - if isinstance(pattern, str): - self.pattern = [re.compile(pattern).match] - elif isinstance(pattern, (list, tuple)): + if pattern is None or utils.is_list_like(pattern): self.pattern = pattern - elif not pattern or callable(pattern): + elif isinstance(pattern, str): + self.pattern = [re.compile(pattern).match] + elif callable(pattern): self.pattern = [pattern] elif hasattr(pattern, 'match') and callable(pattern.match): self.pattern = [pattern.match]