Как вытянуть ссылку из текста

Есть бот:

class Bot:

    def run(self):

        while True:
            messages = sub_client.get_chat_messages(chatId=chatid, size=10) # Получает последние 10 сообщений в чате
            for id, message, author, authorid in zip(messages.messageId, messages.content, messages.author.nickname, messages.author.id):

                 if message:
                    urls = re.search("(?P<url>https?://[^\s]+)", message).group("url") # Возвращает ссылку, если она есть в сообщении
                    if message in urls:
                       delete_message(chatId=chatid, messageId=id) # Удаляет сообщение со ссылкой

Проблема в том, что бот удаляет только сообщение в котором кроме ссылки ничего нету, если сообщение типа "Зайди сюда -> https://..." или "https://... <- Зайди сюда", то он его игнорирует.

Как сделать что бы он находил ссылку в сообщении, и удалял его?


Ответы (1 шт):

Автор решения: nomnoms12

У Вас удаляются только сообщения, в которых кроме ссылки ничего нет, потому что есть условие if message in urls. Замечу, что исходная строка может быть в подстроке, только если подстрока является исходной строкой.

Но просто убрать это условие недостаточно. Если ссылка не найдена, то обращение к RegEx группе url возбудит исключение.

Я бы сделал так:

if message:
    match = re.search(r'https?://[^\s]+', message)
    if match:
        url = match.group()
        delete_message(chatId=chatid, messageId=id)
→ Ссылка