Skip to content

Commit c6721a7

Browse files
authored
Fix CallbackQueryHandler Not Handling Non-String Data Correctly With Regex Patterns (python-telegram-bot#3252)
1 parent fdfbcdf commit c6721a7

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

telegram/ext/_callbackqueryhandler.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def check_update(self, update: object) -> Optional[Union[bool, object]]:
130130
:obj:`bool`
131131
132132
"""
133+
# pylint: disable=too-many-return-statements
133134
if isinstance(update, Update) and update.callback_query:
134135
callback_data = update.callback_query.data
135136
if self.pattern:
@@ -139,6 +140,8 @@ def check_update(self, update: object) -> Optional[Union[bool, object]]:
139140
return isinstance(callback_data, self.pattern)
140141
if callable(self.pattern):
141142
return self.pattern(callback_data)
143+
if not isinstance(callback_data, str):
144+
return False
142145
match = re.match(self.pattern, callback_data)
143146
if match:
144147
return match

tests/test_callbackqueryhandler.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
Update,
3333
User,
3434
)
35-
from telegram.ext import CallbackContext, CallbackQueryHandler, JobQueue
35+
from telegram.ext import CallbackContext, CallbackQueryHandler, InvalidCallbackData, JobQueue
3636

3737
message = Message(1, None, Chat(1, ""), from_user=User(1, "", False), text="Text")
3838

@@ -136,6 +136,11 @@ def test_with_pattern(self, callback_query):
136136
callback_query.callback_query.game_short_name = "this is a short game name"
137137
assert not handler.check_update(callback_query)
138138

139+
callback_query.callback_query.data = object()
140+
assert not handler.check_update(callback_query)
141+
callback_query.callback_query.data = InvalidCallbackData()
142+
assert not handler.check_update(callback_query)
143+
139144
def test_with_callable_pattern(self, callback_query):
140145
class CallbackData:
141146
pass

0 commit comments

Comments
 (0)