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)