aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pydis_core/utils/regex.py6
-rw-r--r--tests/pydis_core/utils/test_regex.py5
2 files changed, 9 insertions, 2 deletions
diff --git a/pydis_core/utils/regex.py b/pydis_core/utils/regex.py
index ba6b9b01..26b1a547 100644
--- a/pydis_core/utils/regex.py
+++ b/pydis_core/utils/regex.py
@@ -3,14 +3,16 @@
import re
DISCORD_INVITE = re.compile(
- r"(https?:\/\/)?(www\.)?" # Optional http(s) and www.
+ r"(https?:\/\/)?(discord:\/*)?" # Optional protocols
+ r"(www\.)?" # Optional www
+ r"[@#]*" # Optional @ or # symbols
r"(\B|discord(app)?)" # Optional discord(app)
r"([.,]|dot)" # Various characters to cover dots
r"("
r"(gg|me)" # TLDs that embed within discord
r"|com(\/|slash|\\)invite" # Only match com/invite
r")"
- r"(/|slash|\\+)" # / or 'slash' or 1+ of \
+ r"(/|slash|\\+)" # / or 'slash' or 1+ of \
r"(?P<invite>\S+)", # the invite code itself
flags=re.IGNORECASE
)
diff --git a/tests/pydis_core/utils/test_regex.py b/tests/pydis_core/utils/test_regex.py
index 79c1d743..26fe23ea 100644
--- a/tests/pydis_core/utils/test_regex.py
+++ b/tests/pydis_core/utils/test_regex.py
@@ -49,6 +49,11 @@ class UtilsRegexTests(unittest.TestCase):
self.assertEqual(search_regex("https://discord.gg/python with whitespace"), "python")
self.assertEqual(search_regex(" https://discord.gg/python "), "python")
+ self.assertEqual(search_regex("discord:#@discordapp.com/invite/python"), "python")
+ self.assertEqual(search_regex("discord:/#@discordapp.com/invite/python"), "python")
+ self.assertEqual(search_regex("discord://#@discordapp.com/invite/python"), "python")
+ self.assertEqual(search_regex("discord://@#discordapp.com/invite/python"), "python")
+
def test_discord_invite_negatives(self):
"""Test the DISCORD_INVITE regex on a set of strings we would expect to not capture."""