local lang = jarvis.context.language local phrase = (jarvis.context.phrase or ""):lower() local triggers = { "выбери из", "выбери", "решай за меня", "выбрать", "pick from", "choose from", "decide between", "обери з", "вибери" } local rest = phrase for _, t in ipairs(triggers) do local s, e = string.find(rest, t, 1, true) if s == 1 then rest = rest:sub(e + 1) break end end rest = rest:gsub("^%s+", ""):gsub("%s+$", "") local separators = { " или ", " or ", ", ", " либо ", " чи " } local options = nil for _, sep in ipairs(separators) do local pattern = sep:gsub("([%-%.%+%[%]%(%)%$%^%%%?%*])", "%%%1") if rest:find(pattern) then options = {} for token in (rest .. sep):gmatch("(.-)" .. pattern) do token = token:gsub("^%s+", ""):gsub("%s+$", "") if token ~= "" then table.insert(options, token) end end break end end if not options or #options < 2 then jarvis.system.notify("Choice", lang == "ru" and "Скажи: выбери из X или Y или Z" or "Say: pick from X or Y or Z") jarvis.audio.play_error() return { chain = false } end math.randomseed(os.time() + math.floor(jarvis.context.time.second * 7919)) local pick = options[math.random(1, #options)] jarvis.system.notify(lang == "ru" and "Выбираю" or "Choice", pick) jarvis.speak((lang == "ru" and "Я выбираю " or "I pick ") .. pick, { lang = lang }) jarvis.audio.play_ok() return { chain = false }