railpunk skill

fukurou

the supreme coder
ADMIN
Python:
class DiRailPunk(Skill):
    # this skill swaps between two sets of contradicting skills
    def __init__(self):
        super().__init__()
        self.set_skill_type(3)  # backgroundable skill
        self.trg: TrgHP = TrgHP()
        self.lim = 2
        self.r1: Responder = Responder("wink", "heart", "okie", "uwu", "nyaa", "teehee")
        self.chatbot: RailPunk = RailPunk()
        self.chatbot.enable_db_wrapper()  # enables railpunk to save load
        self.idler: NSilenceCyclesAfterStr = NSilenceCyclesAfterStr(3,5)
        self.chatbot.set_context("stand by")
        # monolog
        self.monolog: set[str] = {"yeah", "elaborate", "elab"}
        # focus mode
        self.focus = False
        # output filter
        self.filter: Sarcophagus = Sarcophagus()
        self.filter_clear:set[str] = {"clear filter", "clear word filter", "clear sarcophagus"}

    def add_output_filter(self, item: str):
        self.filter.add_item(item)

    def add_populators(self, *pops: PopulatorFunc):
        # add railbot populators (plug and play deductions)
        for pop in pops:
            self.chatbot.add_populator(pop)

    def input(self, ear: str, skin: str, eye: str):
        # prevent database hacks
        if DBAntiGlitch.starts_with_trigger(ear):
            return
        # filter add
        if self.filter.add_item_via_regex(ear):
            self.setSimpleAlg("ok i will not use that nono word")
            return
        if ear in self.filter_clear:
            self.setSimpleAlg("i am now ungovernable")
            return
        # save and reset context
        # force save only for sandbox version
        #todo delet this if snippet later
        if ear == "save":
            self.chatbot.save_learned_data(self.getKokoro())
            self.chatbot.set_context("stand by")
            return
        # enter focus mode
        if ear == "focus":
            self.focus = True
            self.setSimpleAlg("focusing")
            return
        if self.idler.check(ear):
            self.chatbot.save_learned_data(self.getKokoro())
            self.chatbot.set_context("stand by")
            self.focus = False
            return
        hp_remains = self.trg.trigger(ear)
        # monolog
        if hp_remains and ear in self.monolog:
            temp = self.chatbot.loadable_monolog(self.getKokoro())
            self.setSimpleAlg(PhraseInflector.inflect_phrase(temp))
            return
        # dialog
        if hp_remains:
            if not self.focus:
                reply = self.chatbot.loadable_dialog(ear, self.getKokoro())
            else:
                reply = self.chatbot.loadable_latest_dialog(ear, self.getKokoro())
            # filter output
            if self.filter.shield(reply):
                self.chatbot.learn(ear)
                return
            if len(reply) > 0:
                if self.trg.get_hp() > self.lim:
                    self.setSimpleAlg(PhraseInflector.inflect_phrase(reply))
                else:
                    self.setSimpleAlg(f"{PhraseInflector.inflect_phrase(reply)} {self.r1.getAResponse()}")
        self.chatbot.learn(ear)
 
Top