CommandHandler - ignore strings in entities and "/" followed by whitespace (#1020)

This commit is contained in:
Paul Larsen 2018-03-01 08:11:16 +00:00 committed by Noam Meltzer
parent f6332d45a8
commit b67ea7a691
3 changed files with 18 additions and 15 deletions

View file

@ -54,6 +54,7 @@ The following wonderful people contributed directly or indirectly to this projec
- `Oleg Sushchenko <https://github.com/feuillemorte>`_ - `Oleg Sushchenko <https://github.com/feuillemorte>`_
- `overquota <https://github.com/overquota>`_ - `overquota <https://github.com/overquota>`_
- `Patrick Hofmann <https://github.com/PH89>`_ - `Patrick Hofmann <https://github.com/PH89>`_
- `Paul Larsen <https://github.com/PaulSonOfLars>`_
- `Pieter Schutz <https://github.com/eldinnie>`_ - `Pieter Schutz <https://github.com/eldinnie>`_
- `Rahiel Kasim <https://github.com/rahiel>`_ - `Rahiel Kasim <https://github.com/rahiel>`_
- `Sascha <https://github.com/saschalalala>`_ - `Sascha <https://github.com/saschalalala>`_

View file

@ -134,9 +134,11 @@ class CommandHandler(Handler):
message = update.message or update.edited_message message = update.message or update.edited_message
if message.text and message.text.startswith('/') and len(message.text) > 1: if message.text and message.text.startswith('/') and len(message.text) > 1:
command = message.text[1:].split(None, 1)[0].split('@') first_word = message.text_html.split(None, 1)[0]
if len(first_word) > 1 and first_word.startswith('/'):
command = first_word[1:].split('@')
command.append( command.append(
message.bot.username) # in case the command was send without a username message.bot.username) # in case the command was sent without a username
if self.filters is None: if self.filters is None:
res = True res = True
@ -147,10 +149,7 @@ class CommandHandler(Handler):
return res and (command[0].lower() in self.command return res and (command[0].lower() in self.command
and command[1].lower() == message.bot.username.lower()) and command[1].lower() == message.bot.username.lower())
else:
return False
else:
return False return False
def handle_update(self, update, dispatcher): def handle_update(self, update, dispatcher):

View file

@ -190,6 +190,9 @@ class TestCommandHandler(object):
message.text = '/' message.text = '/'
assert not handler.check_update(Update(0, message)) assert not handler.check_update(Update(0, message))
message.text = '/ test'
assert not handler.check_update(Update(0, message))
def test_pass_user_or_chat_data(self, dp, message): def test_pass_user_or_chat_data(self, dp, message):
handler = CommandHandler('test', self.callback_data_1, pass_user_data=True) handler = CommandHandler('test', self.callback_data_1, pass_user_data=True)
dp.add_handler(handler) dp.add_handler(handler)