58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from dataclasses import dataclass
|
|
import os
|
|
import random
|
|
from telebot.types import Message
|
|
|
|
from exception import UnknownAnimationType
|
|
|
|
|
|
@dataclass(frozen=True, init=True, eq=True)
|
|
class FemboyGeneratorResult:
|
|
send: bool
|
|
message: Message | None = None
|
|
media_type: str | None = None
|
|
media_path: str | None = None
|
|
|
|
|
|
class FemboyGeneratorMsgProcessor:
|
|
ODDS = 1/200
|
|
TRIGGER_WORDS = [
|
|
"uwu",
|
|
"femboy",
|
|
"фембой",
|
|
]
|
|
|
|
def __init__(self, msg: Message):
|
|
self._msg = msg
|
|
|
|
def process_trigger_words(self) -> bool:
|
|
t = self._msg.text.lower()
|
|
for tw in self.TRIGGER_WORDS:
|
|
if tw in t:
|
|
return True
|
|
return False
|
|
|
|
@staticmethod
|
|
def pick_random_media() -> str:
|
|
return random.choice(os.listdir("femboys"))
|
|
|
|
@staticmethod
|
|
def get_media_type(path: str) -> str:
|
|
if path.endswith((".jpg", ".jpeg", ".png")):
|
|
return "pic"
|
|
elif path.endswith((".mp4", ".m4a", ".gif")):
|
|
return "gif"
|
|
raise UnknownAnimationType("Unknown media type in femboys folder -w-")
|
|
|
|
def process(self) -> FemboyGeneratorResult:
|
|
if self._msg:
|
|
if random.random() < self.ODDS or self.process_trigger_words():
|
|
random_file_path = self.pick_random_media()
|
|
return FemboyGeneratorResult(
|
|
send=True,
|
|
message=self._msg,
|
|
media_type=self.get_media_type(random_file_path),
|
|
media_path=random_file_path
|
|
)
|
|
return FemboyGeneratorResult(send=False)
|