Skip to content

Commit 2ba7505

Browse files
Eldinnietsnoam
authored andcommitted
Fix TypeError exception in RegexHandler (python-telegram-bot#751)
fixes python-telegram-bot#750
1 parent 5ed06df commit 2ba7505

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

telegram/ext/regexhandler.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,11 +142,12 @@ def check_update(self, update):
142142
Returns:
143143
:obj:`bool`
144144
"""
145-
145+
if not isinstance(update, Update) and not update.effective_message:
146+
return False
146147
if any([(self.message_updates and update.message),
147148
(self.edited_updates and update.edited_message),
148-
(self.channel_post_updates and update.channel_post)]) and (
149-
isinstance(update, Update)):
149+
(self.channel_post_updates and update.channel_post)]) and \
150+
update.effective_message.text:
150151
match = re.match(self.pattern, update.effective_message.text)
151152
return bool(match)
152153
return False

tests/test_updater.py

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@
3434

3535
from future.builtins import bytes
3636

37-
from telegram.utils.request import Request as Requester
38-
3937
try:
4038
# python2
4139
from urllib2 import urlopen, Request, HTTPError
@@ -47,12 +45,12 @@
4745
sys.path.append('.')
4846

4947
from telegram import (Update, Message, TelegramError, User, Chat, Bot,
50-
InlineQuery, CallbackQuery, ShippingQuery, PreCheckoutQuery)
48+
InlineQuery, CallbackQuery)
5149
from telegram.ext import *
5250
from telegram.ext.dispatcher import run_async
5351
from telegram.error import Unauthorized, InvalidToken
5452
from tests.base import BaseTest
55-
from threading import Lock, Thread, current_thread, Semaphore
53+
from threading import Lock, Thread, current_thread
5654

5755
# Enable logging
5856
root = logging.getLogger()
@@ -248,6 +246,23 @@ def test_addRemoveTelegramRegexHandler(self):
248246
sleep(.1)
249247
self.assertTrue(None is self.received_message)
250248

249+
def test_regex_handler_without_message(self):
250+
self._setup_updater('Test3')
251+
d = self.updater.dispatcher
252+
handler = RegexHandler(r'Te.*', self.telegramHandlerTest)
253+
d.add_handler(handler)
254+
255+
# message, no text
256+
m = Message(1, User(1, "testuser"), None, Chat(2, "private"), video="My_vid",
257+
caption="test ")
258+
d.process_update(Update(1, message=m))
259+
self.assertEqual(self.message_count, 0)
260+
261+
# no message
262+
c = InlineQuery(2, User(1, "testuser"), "my_query", offset=15)
263+
d.process_update(Update(2, inline_query=c))
264+
self.assertEqual(self.message_count, 0)
265+
251266
def test_addRemoveTelegramCommandHandler(self):
252267
self._setup_updater('', messages=0)
253268
d = self.updater.dispatcher
@@ -926,7 +941,6 @@ def test_noTokenOrBot(self):
926941

927942

928943
class MockBot(object):
929-
930944
def __init__(self,
931945
text,
932946
messages=1,
@@ -973,12 +987,12 @@ def delete_webhook(self):
973987
raise self.bootstrap_err
974988

975989
def get_updates(self,
976-
offset=None,
977-
limit=100,
978-
timeout=0,
979-
network_delay=None,
980-
read_latency=2.,
981-
allowed_updates=None):
990+
offset=None,
991+
limit=100,
992+
timeout=0,
993+
network_delay=None,
994+
read_latency=2.,
995+
allowed_updates=None):
982996

983997
if self.raise_error:
984998
raise TelegramError('Test Error 2')

0 commit comments

Comments
 (0)