Как вытянуть ссылку из текста
Есть бот:
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)