import os from pathlib import Path from telegram.ext import MessageHandler, filters from telegram import Update import re import random import time from .basehandler import BaseHandler MEDIA_DIR = Path(os.getenv("MEDIA_DIR")) TURTLE_VIDEO_LOCATION = MEDIA_DIR / "turtle_reactions" TURTLE_VIDEOS = list(TURTLE_VIDEO_LOCATION.glob("*.mp4")) class TurtleHandler(BaseHandler): def __init__(self): self.entry_string = "Variation of hallo" self.handler = MessageHandler( filters.Regex(r"[hH]([aA]+|[eE]+)[lL]{2,}[oOöÖ]+(le|chen)?") | # react to hello strings filters.Regex(b"\xF0\x9F\x90\xA2".decode("utf8")) | # react to turtle emoji filters.Regex(r"[sS](childkröte)|[tT](urtle)"), # react to turtle string self.entry_point ) async def entry_point(self, update: Update, context): await super().entry_point(update, context) msgtxt = update.message.text turtle_emoji = b"\xF0\x9F\x90\xA2".decode("utf8") if "hallo" in msgtxt: # react to hallo vid = TURTLE_VIDEOS[0] answertxt = "Hallo!" elif re.search("[eE][lL]{2,}[oO]", msgtxt): # react to hello vid = TURTLE_VIDEOS[2] answertxt = "Hello!" elif re.search("([aA]{4,}|[lL]{4,}|[oO]{4,}|[öÖ]{4,})", msgtxt): # react to stretched hello vid = TURTLE_VIDEOS[5] answertxt = "That's a lot of letters!" elif re.search(turtle_emoji, msgtxt): # react to turtle emoji vid=TURTLE_VIDEOS[0] answertxt="Turtle detected! Self-destruction mode activated..." elif re.search("[sS](childkröte)|[tT](urtle)", msgtxt): # react to turtle string vid=None answertxt=turtle_emoji else: vid = random.choice(TURTLE_VIDEOS[1:2]+TURTLE_VIDEOS[3:5]+TURTLE_VIDEOS[6:]) answertxt = "" if vid != None: if re.search(turtle_emoji, msgtxt): await update.message.reply_text(text=answertxt) time.sleep(1) await update.message.reply_text(text="3") time.sleep(1) await update.message.reply_text(text="2") time.sleep(1) await update.message.reply_text(text="1") time.sleep(1) await update.message.reply_video(video=vid, caption="Kaboom!") else: await update.message.reply_video(video=vid, caption=answertxt) else: await update.message.reply_text(text=answertxt)