diff --git a/bot/commands/memory.py b/bot/commands/memory.py index 37d47b9..2bee0b3 100644 --- a/bot/commands/memory.py +++ b/bot/commands/memory.py @@ -2,6 +2,8 @@ import os from telegram.ext import ConversationHandler, CommandHandler, MessageHandler, filters, CallbackQueryHandler, CallbackContext from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update, InputMediaPhoto import models +from telegram.constants import ParseMode +# ACTION_CHOICE, DATE_ENTRY, ADD_CONTENT = range(3) MEMORY_CHOICE = range(1) @@ -74,13 +76,15 @@ 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( 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 ) return ConversationHandler.END diff --git a/bot/cronjob/random_memory.py b/bot/cronjob/random_memory.py index f7000e5..ed61e23 100644 --- a/bot/cronjob/random_memory.py +++ b/bot/cronjob/random_memory.py @@ -1,4 +1,5 @@ from datetime import time, timedelta, timezone, datetime, date +from telegram.constants import ParseMode import os from peewee import fn import logging @@ -48,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( @@ -56,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 7f8b341..6894243 100644 --- a/bot/models.py +++ b/bot/models.py @@ -1,5 +1,6 @@ from peewee import * from pathlib import Path +import re import os import datetime @@ -60,6 +61,25 @@ class JournalEntry(BaseModel): except ValueError: #fck windows return self.date.strftime('%a, %d. %b %Y') + @property + def spoiler_text(self) -> str: + """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: + group_to_replace = match[0] + new_text = new_text.replace(group_to_replace, f"{group_to_replace}") + return new_text + def set_db(db_path): db.initialize(SqliteDatabase(db_path))