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)