old ver:
Python:
class DiAlarmer(Skill):
def __init__(self):
super().__init__()
self.off: Responder = Responder("shut up", "stop")
self._cron: Cron = Cron("", 3, 3)
self.msg_extra: str = ""
self.default_alarm: str = "beep beep beep"
self._alarm_armed: bool = False
self.alarm_active: bool = False
@override
def setKokoro(self, kokoro: Kokoro):
self._kokoro = kokoro
alarm_time: str = self._kokoro.grimoireMemento.load("dialarmer")
if alarm_time != "null":
self._cron.setStartTime(alarm_time)
self._alarm_armed = True
def setCron(self, cron):
self._cron = cron
def set_default_alarm(self, alarm: str):
if alarm and not any(c in alarm for c in ";<>/\\*&^$%#"):
self.default_alarm = alarm
return self
def input(self, ear, skin, eye):
# Turn off alarm
if self.alarm_active and self.off.responsesContainsStr(ear):
self.setSimpleAlg("alarm is now off")
self.alarm_active = False
self._cron.turnOff()
self.msg_extra = ""
return
if ear == "cancel alarm":
self._kokoro.grimoireMemento.save("dialarmer", "")
self.setSimpleAlg("alarm has been canceled")
self._alarm_armed = False
self._cron.turnOff()
self.msg_extra = ""
return
match ear:
case "pasta alarm":
self._cron.setStartTime(TimeUtils.timeInXMinutes(13))
self.setSimpleAlg(f"alarm set to 13 minutes from now")
self.msg_extra = "your pasta is ready"
self._alarm_armed = True
case "hummus alarm":
self._cron.setStartTime(TimeUtils.timeInXMinutes(60))
self.setSimpleAlg(f"alarm set to an hour from now")
self.msg_extra = "your hummus has been cooking for an hour"
self._alarm_armed = True
case "hot water alarm":
self._cron.setStartTime(TimeUtils.timeInXMinutes(5))
self.setSimpleAlg(f"alarm set to 5 minutes from now")
self.msg_extra = "your water are boiling"
self._alarm_armed = True
case _:
temp = RegexUtil.extractRegex(r"(?<=set alarm to\s)([0-9]{1,2}:[0-9]{1,2})", ear)
if not len(temp) == 0:
self._cron.setStartTime(temp)
self.setSimpleAlg(f"alarm set to {temp}")
self.msg_extra = ""
self._alarm_armed = True
self._cron.setStartTime(temp)
self._kokoro.grimoireMemento.save("dialarmer",temp)
return
if self._cron.triggerWithoutRenewal():
self.alarm_active = True
if len(self.msg_extra) > 0:
self.setSimpleAlg(self.default_alarm,self.msg_extra)
else:
self.setSimpleAlg(self.default_alarm)
def skillNotes(self, param: str) -> str:
if param == "notes":
return "alarm clock skill"
elif param == "triggers":
return "set alarm to 9:40. shut up to stop and cancel snooze"
return "alarm clock skill"