diff --git a/src/api/util.py b/src/api/util.py index a861bbc..85d553f 100644 --- a/src/api/util.py +++ b/src/api/util.py @@ -40,8 +40,13 @@ def clean_link(link: str) -> str: def sanitize_to_markdown(text: str) -> str: - """Sanitizes given text to escape markdown formatting. It is used in values that will be visible on Discord in messages""" - return re.sub(r"([`_*~:<>{}@|\\])", "\\\\\\1", text).replace('//', "/\\/").replace('](', "]\\(") + """Sanitizes given text to escape markdown formatting. It is used in values that will be visible on Discord in messages""" + text = text.replace("\\", "\\\\").replace('//', '/\\/').replace("](", "]\\(") # replace escaping and links + text = re.sub(r"([`_*~:<>{}@|])", "\\\\\\1", text) # Escape common Markdown characters + text = re.sub(r"^(#+ )", '\\\\\\1', text, 0, re.MULTILINE) # Escape headers + text = re.sub(r"^(\s*)- ", '\\1\\\\- ', text, 0, re.MULTILINE) # Escape lists + text = re.sub(r"^(\s*\d+)\. ", "\\1\\\\. ", text, 0, re.MULTILINE) # Escape numbered lists + return text def sanitize_to_url(text: str) -> str: # TODO ) replaces needed?