From c9254a3e88aa2fcdf684ed1d60f48fbaf143098f Mon Sep 17 00:00:00 2001 From: Remy Moll Date: Sat, 18 Nov 2023 12:32:20 +0100 Subject: [PATCH] memories are now redacted --- bot/commands/memory.py | 3 ++- bot/cronjob/random_memory.py | 6 ++++-- bot/models.py | 17 ++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) 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", "
").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"{match}") + group_to_replace = match[0] + new_text = new_text.replace(group_to_replace, f"{group_to_replace}") return new_text