Кажется, проблема в том, что вы сравниваете command
(строка) с urls
(список строк). Если вы хотите, чтобы сообщение отправлялось до тех пор, пока в команде хотя бы один URL-адрес был найден, вы можете изменить его на
def action(msg):
chat_id = msg['chat']['id']
command = msg['text']
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', command)
if urls:
telegram_bot.sendMessage(chat_id, "yes", parse_mode= 'Markdown')
Примечание. Если совпадений нет, urls
будет пустым списком. Логическое значение пустого списка в Python равно false, поэтому if urls
передается, только если urls
не является пустым списком (т. Е. Было хотя бы одно совпадение). Это эквивалентно высказыванию if len(urls) != 0:
.
Если вместо этого вы хотите, чтобы сообщение отправлялось только в том случае, если весь command
является URL-адресом, вы можете сделать
def action(msg):
chat_id = msg['chat']['id']
command = msg['text']
pattern = 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
if re.fullmatch(pattern, command):
telegram_bot.sendMessage(chat_id, "yes", parse_mode= 'Markdown')