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)