J.A.R.V.I.S-rust/resources/commands/unit_convert/temperature.lua
Bossiara13 84d3b57ddc feat: unit conversion + random generators packs (7 new commands)
Two pure-Lua packs that don't need network or LLM — pure offline utilities.

unit_convert (resources/commands/unit_convert/, 4 commands)
  - convert.length      "переведи 100 метров в футы" / "сколько 5 миль в км"
                        meters↔feet, km↔miles. Pluralises russian unit names.
  - convert.weight      "переведи 70 кг в фунты"
                        kg↔lbs.
  - convert.temperature "переведи 100 цельсий в фаренгейт" / "минус 40 в цельсий"
                        Handles negative numbers. C↔F formulas inline.
  - convert.speed       "переведи 100 км в час в мили в час"
                        km/h↔mph.
  - All round results to 1-2 decimal places, speak with proper Russian
    grammatical number (фут/фута/футов).

generators (resources/commands/generators/, 3 commands)
  - gen.coin       "подбрось монету" / "орёл или решка"
                   → "Орёл!" or "Решка!" (math.random with time+minute seed)
  - gen.password   "сгенерируй пароль 16 символов"
                   → cryptographically-ish 6..64-char password,
                   alphanumeric + !@#$%^&*-_=+, copies to clipboard,
                   SPEAKS LENGTH ONLY (never echoes the password).
                   Default 16 chars if no number in phrase.
  - gen.uuid       "сгенерируй uuid" / "юид"
                   → v4 UUID, copies to clipboard, speaks last 4 chars
                   (confirmation without 32-char monologue).

Tests: 112/112 pass (commands::tests auto-validates).
Pack count: 62 → 64.
2026-05-15 18:41:44 +03:00

21 lines
946 B
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Температура: Цельсий ↔ Фаренгейт
local phrase = (jarvis.context.phrase or ""):lower()
local n_str = phrase:match("(%-?[%d%.,]+)")
if not n_str then return jarvis.cmd.error("Не понял число.") end
local n = tonumber((n_str:gsub(",", ".")))
if not n then return jarvis.cmd.error("Не понял число.") end
local result, unit_out
if phrase:find("в фаренгейт") or phrase:find("to fahrenheit") then
result = n * 9.0 / 5.0 + 32.0
unit_out = "по Фаренгейту"
elseif phrase:find("в цельси") or phrase:find("to celsius") then
result = (n - 32.0) * 5.0 / 9.0
unit_out = "по Цельсию"
else
return jarvis.cmd.error("Скажите в чём перевести: в фаренгейт или в цельсий.")
end
local rounded = math.floor(result * 10 + 0.5) / 10
return jarvis.cmd.ok(string.format("%g градусов %s.", rounded, unit_out))