32 lines
1.4 KiB
Lua
32 lines
1.4 KiB
Lua
|
|
-- "Цитата дня" — random quote.
|
|||
|
|
-- Source: zenquotes.io (free, no key, returns JSON array)
|
|||
|
|
local data = jarvis.http.json("https://zenquotes.io/api/random")
|
|||
|
|
if not data or type(data) ~= "table" or #data == 0 then
|
|||
|
|
-- Fallback to LLM if API fails
|
|||
|
|
local llm_quote = jarvis.llm({
|
|||
|
|
{ role = "system", content = "Выдай одну короткую мотивирующую цитату. По-русски. Без вступлений." },
|
|||
|
|
{ role = "user", content = "Цитата дня." }
|
|||
|
|
}, { max_tokens = 100, temperature = 0.9 })
|
|||
|
|
if llm_quote and llm_quote ~= "" then
|
|||
|
|
return jarvis.cmd.ok(llm_quote)
|
|||
|
|
end
|
|||
|
|
return jarvis.cmd.error("Не получилось получить цитату.")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local q = data[1]
|
|||
|
|
local quote_en = q.q or ""
|
|||
|
|
local author = q.a or "Аноним"
|
|||
|
|
if quote_en == "" then
|
|||
|
|
return jarvis.cmd.error("Пустая цитата.")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- Translate to Russian via LLM (the API returns English).
|
|||
|
|
local translated = jarvis.llm({
|
|||
|
|
{ role = "system", content = "Переведи английскую цитату на русский. Без вступлений. Только перевод." },
|
|||
|
|
{ role = "user", content = quote_en }
|
|||
|
|
}, { max_tokens = 200, temperature = 0.2 })
|
|||
|
|
|
|||
|
|
local text = (translated and translated ~= "") and translated or quote_en
|
|||
|
|
|
|||
|
|
return jarvis.cmd.ok(text .. " — " .. author .. ".")
|