From 2e1adaaf317d11c2044e1792156bc124b8a54ae4 Mon Sep 17 00:00:00 2001 From: ks129 <45097959+ks129@users.noreply.github.com> Date: Sat, 7 Nov 2020 20:04:52 +0200 Subject: [PATCH] Parse URL and match domain name in filtering to avoid false positives --- bot/exts/filters/filtering.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bot/exts/filters/filtering.py b/bot/exts/filters/filtering.py index 208fc9e1f1..33c9a3466e 100644 --- a/bot/exts/filters/filtering.py +++ b/bot/exts/filters/filtering.py @@ -3,6 +3,7 @@ import re from datetime import datetime, timedelta from typing import Any, Dict, List, Mapping, NamedTuple, Optional, Union +from urllib import parse import dateutil import discord.errors @@ -444,8 +445,9 @@ async def _has_urls(self, text: str) -> bool: text = text.lower() domain_blacklist = self._get_filterlist_items("domain_name", allowed=False) - for url in domain_blacklist: - if url.lower() in text: + for url in URL_RE.findall(text): + parsed = parse.urlparse(url) + if parsed.netloc.lower() in domain_blacklist: return True return False