75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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)
 | 
						|
         |