diff --git a/bot/commands/memory.py b/bot/commands/memory.py
index 5bae67f..f9bcb02 100644
--- a/bot/commands/memory.py
+++ b/bot/commands/memory.py
@@ -76,7 +76,8 @@ class MemoryHandler(BaseHandler):
                 caption=
                     f"On {chosen_match.date_pretty}, "
                     f"{chosen_match.author} wrote: \n"
-                    f"{chosen_match.text}"
+                    f"{chosen_match.spoiler_text}",
+                parse_mode=ParseMode.HTML
                 )
         else:
             await query.edit_message_text(
diff --git a/bot/cronjob/random_memory.py b/bot/cronjob/random_memory.py
index a9db632..b0a397d 100644
--- a/bot/cronjob/random_memory.py
+++ b/bot/cronjob/random_memory.py
@@ -49,7 +49,8 @@ class RandomMemoryJob():
                 caption =
                     f"On {chosen_entry.date_pretty}, "
                     f"{chosen_entry.author} wrote: \n"
-                    f"{chosen_entry.text}"
+                    f"{chosen_entry.spoiler_text}",
+                parse_mode=ParseMode.HTML
                 )
         else:
             await self.bot.send_message(
@@ -57,6 +58,7 @@ class RandomMemoryJob():
                 text =
                     f"On {chosen_entry.date_pretty}, "
                     f"{chosen_entry.author} wrote: \n"
-                    f"{chosen_entry.text}"
+                    f"{chosen_entry.spoiler_text}",
+                parse_mode=ParseMode.HTML
             )
 
diff --git a/bot/models.py b/bot/models.py
index e485aa2..6894243 100644
--- a/bot/models.py
+++ b/bot/models.py
@@ -63,10 +63,21 @@ class JournalEntry(BaseModel):
 
     @property
     def spoiler_text(self) -> str:
-        new_text = self.text.replace("\n", "<br>").replace("<", "&lt;").replace(">", "&gt;").replace("&", "&amp;")
-        matches = re.findall(r"[A-Z](\s|\w)+\:\)(\w|\s)+\.", new_text)
+        """Returns the text with all the frisky details hidden away"""
+        new_text = self.text.replace("<", "&lt;").replace(">", "&gt;").replace("&", "&amp;")
+        pattern = re.compile(
+            "("
+            "(((?<=(\.|\!|\?)\s)[A-Z])|(^[A-Z]))" # beginning of a sentence
+            "([^\.\!\?])+" # any character being part of a sentence
+            "\:\)" # the smiley
+            "([^\.\!\?])*" # continuation of sentence
+            "(\.|\!|\?|\,|$)" # end of the sentence
+            ")"
+        )
+        matches = pattern.findall(new_text)
         for match in matches:
-            new_text = new_text.replace(match, f"<tg-spoiler>{match}</tg-spoiler>")
+            group_to_replace = match[0]
+            new_text = new_text.replace(group_to_replace, f"<tg-spoiler>{group_to_replace}</tg-spoiler>")
         return new_text