🐍 python upgraded spit xp farm skill for chatbot gamification

python

fukurou

the supreme coder
ADMIN
Python:
class DiEmoV2(Skill):
    def __init__(self):
        super().__init__()
        self.xp = 0
        self.reseter: TrgEveryNMinutes = TrgEveryNMinutes(10)
        self.lim = 3
        self.no_mood: Responder = Responder("bored", "meh", "neutral")
        self.yes_mood: Responder = Responder("good", "i feel good", "okay", "great")
        self.pain = False
        self.prep: Responder = Responder("open your mouth", "get ready", "ready", "dispensing reward")
        self.prize: Responder = Responder("hawk tuah", "patui", "pa-tuy", "drools", "tfu")

        # Anti-spam tracking
        self.last_message_hash = None
        self.last_message_time = 0
    @staticmethod
    def _get_message_hash(text: str) -> str:
        normalized = text.lower().strip()
        return hashlib.md5(normalized.encode()).hexdigest()[:8]
    @staticmethod
    def _has_syllables(text: str) -> bool:
        vowels = re.findall(r'[aeiouy]', text.lower())
        return len(vowels) > 0

    def reward(self):
        self.setSimpleAlg(self.prep.getAResponse(), self.prize.getAResponse())

    def input(self, ear: str, skin: str, eye: str):
        if skin == "pain":
            self.pain = True
            self.setSimpleAlg("ouch")
            return
        if self.reseter.trigger():
            self.xp = max(0, self.xp - 2)
            self.pain = False
        if ear == "reward me" and not self.pain:
            if self.xp > 3:
                self.xp -= 3
                self.reward()
            else:
                self.setSimpleAlg(f"Need {4 - self.xp} more messages first")
            return
        if ear == "how are you":
            if self.pain:
                self.setSimpleAlg("sad")
            elif self.xp < 3:
                self.setSimpleAlg(self.no_mood.getAResponse())
            else:
                self.setSimpleAlg(self.yes_mood.getAResponse())
            return

        # Distinct message + syllable check before XP gain
        current_hash = self._get_message_hash(ear)
        current_time = time.time()

        is_distinct = (current_hash != self.last_message_hash) or (current_time - self.last_message_time) >= 30
        has_syllables = self._has_syllables(ear)

        if is_distinct and has_syllables and len(ear) > 4:
            self.xp += 1
            self.last_message_hash = current_hash
            self.last_message_time = current_time
 

fukurou

the supreme coder
ADMIN
Python:
class DiEmoV2(Skill):
    def __init__(self):
        super().__init__()
        self.xp = 0
        self.reseter: TrgEveryNMinutes = TrgEveryNMinutes(10)
        self.lim = 3
        self.no_mood: Responder = Responder("bored", "meh", "neutral")
        self.yes_mood: Responder = Responder("good", "i feel good", "okay", "great")
        self.pain = False
        self.prep: Responder = Responder("open your mouth", "get ready", "ready", "dispensing reward")
        self.prize: Responder = Responder("hawk tuah", "patui", "pa-tuy", "drools", "tfu")
        self.reward_trigs: set[str] = {"reward me", "spit into my mouth", "spit in my mouth"}

        # Anti-spam tracking
        self.last_message_hash = None
        self.last_message_time = 0
    @staticmethod
    def _get_message_hash(text: str) -> str:
        normalized = text.lower().strip()
        return hashlib.md5(normalized.encode()).hexdigest()[:8]
    @staticmethod
    def _has_syllables(text: str) -> bool:
        vowels = re.findall(r'[aeiouy]', text.lower())
        return len(vowels) > 0

    def reward(self):
        self.setSimpleAlg(self.prep.getAResponse(), self.prize.getAResponse())

    def input(self, ear: str, skin: str, eye: str):
        if skin == "pain":
            self.pain = True
            self.setSimpleAlg("ouch")
            return
        if self.reseter.trigger():
            self.xp = max(0, self.xp - 2)
            self.pain = False
        if ear in self.reward_trigs and not self.pain:
            if self.xp > 3:
                self.xp -= 3
                self.reward()
            else:
                self.setSimpleAlg(f"Need {4 - self.xp} more messages first")
            return
        if ear == "how are you":
            if self.pain:
                self.setSimpleAlg("sad")
            elif self.xp < 3:
                self.setSimpleAlg(self.no_mood.getAResponse())
            else:
                self.setSimpleAlg(self.yes_mood.getAResponse())
            return

        # Distinct message + syllable check before XP gain
        current_hash = self._get_message_hash(ear)
        current_time = time.time()

        is_distinct = (current_hash != self.last_message_hash) or (current_time - self.last_message_time) >= 30
        has_syllables = self._has_syllables(ear)

        if is_distinct and has_syllables and len(ear) > 4:
            self.xp += 1
            self.last_message_hash = current_hash
            self.last_message_time = current_time
 
Top