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("<", "<").replace(">", ">").replace("&", "&") - 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("<", "<").replace(">", ">").replace("&", "&") + 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