import os from pathlib import Path from telegram.ext import ConversationHandler, CommandHandler, MessageHandler, filters, CallbackQueryHandler from telegram import InlineKeyboardButton, InlineKeyboardMarkup 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) pass 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] # TODO: choose video for smiley reaction 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)