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)
|
|
|