63 lines
1.9 KiB
Lua
63 lines
1.9 KiB
Lua
|
|
-- "каждый день в 9:00 делай briefing" / "каждое утро в 8 напоминай зарядку"
|
|||
|
|
local phrase = (jarvis.context.phrase or ""):lower()
|
|||
|
|
|
|||
|
|
local body = jarvis.text.strip_trigger(phrase, {
|
|||
|
|
"каждое утро в",
|
|||
|
|
"каждый день в",
|
|||
|
|
"ежедневно в",
|
|||
|
|
"по утрам в",
|
|||
|
|
"every day at",
|
|||
|
|
"daily at",
|
|||
|
|
"щодня о",
|
|||
|
|
"кожен день о",
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
body = body:gsub("^[%s,:%.]+", ""):gsub("%s+$", "")
|
|||
|
|
|
|||
|
|
-- Parse "HH:MM <text>" or "HH <text>"
|
|||
|
|
local h, m, rest = body:match("^(%d%d?)%s*[:%-]%s*(%d%d?)%s*(.*)$")
|
|||
|
|
if not h then
|
|||
|
|
h, rest = body:match("^(%d%d?)%s*(.*)$")
|
|||
|
|
m = "00"
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if not h then
|
|||
|
|
jarvis.speak("Не понял время.")
|
|||
|
|
jarvis.audio.play_error()
|
|||
|
|
return { chain = false }
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local hn = tonumber(h)
|
|||
|
|
local mn = tonumber(m) or 0
|
|||
|
|
if hn < 0 or hn > 23 or mn < 0 or mn > 59 then
|
|||
|
|
jarvis.speak("Время вне диапазона.")
|
|||
|
|
jarvis.audio.play_error()
|
|||
|
|
return { chain = false }
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local schedule = string.format("daily %02d:%02d", hn, mn)
|
|||
|
|
local text_body = (rest or ""):gsub("^напоминай%s+", "")
|
|||
|
|
:gsub("^напомни%s+", "")
|
|||
|
|
:gsub("^делай%s+", "")
|
|||
|
|
:gsub("^[%s,:%.]+", "")
|
|||
|
|
:gsub("%s+$", "")
|
|||
|
|
if text_body == "" then text_body = "Доброе утро." end
|
|||
|
|
|
|||
|
|
local ok, err = pcall(function()
|
|||
|
|
jarvis.scheduler.add({
|
|||
|
|
name = "Daily",
|
|||
|
|
schedule = schedule,
|
|||
|
|
action = { type = "speak", text = text_body }
|
|||
|
|
})
|
|||
|
|
end)
|
|||
|
|
if not ok then
|
|||
|
|
jarvis.log("warn", "scheduler.add: " .. tostring(err))
|
|||
|
|
jarvis.speak("Не получилось.")
|
|||
|
|
jarvis.audio.play_error()
|
|||
|
|
return { chain = false }
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
jarvis.speak(string.format("Каждый день в %02d:%02d.", hn, mn))
|
|||
|
|
jarvis.audio.play_ok()
|
|||
|
|
return { chain = false }
|