diff --git a/dailyreleases/main.py b/dailyreleases/main.py index fb0a243..7a502b3 100644 --- a/dailyreleases/main.py +++ b/dailyreleases/main.py @@ -333,7 +333,8 @@ class DailyReleasesBot(object): else: tags = " ({})".format(" ".join(rls["tags"])) if rls["tags"] else "" highlights = " **- {}**".format(", ".join(rls["highlights"])) if rls["highlights"] else "" - name = "[{}{}]({}){}".format(rls["game_name"], tags, rls["nfo_link"], highlights) + name = "[{}{}]({}){}".format(util.markdown_escape(rls["game_name"]), tags, rls["nfo_link"], + highlights) if rls["score"] == -1: reviews = "-" diff --git a/dailyreleases/util.py b/dailyreleases/util.py index 0f0e3fb..ce2423b 100644 --- a/dailyreleases/util.py +++ b/dailyreleases/util.py @@ -34,3 +34,12 @@ def case_insensitive_close_matches(word, possibilities, n=3, cutoff=0.6): possibilities = {sequence.lower(): sequence for sequence in possibilities} close_matches = difflib.get_close_matches(word.lower(), possibilities, n=n, cutoff=cutoff) return [possibilities[m] for m in close_matches] + + +def markdown_escape(text: str): + """ + Escape markdown. + """ + special = ("\\", "`", "*", "_", "{", "}", "[", "]", "(", ")", "#", "+", "-", ".", "!", "|") + table = {s: f"\\{s}" for s in special} + return text.translate(str.maketrans(table))