local lang = jarvis.context.language local ps = [[ $lan = (Get-NetIPAddress -AddressFamily IPv4 -ErrorAction SilentlyContinue | Where-Object { $_.PrefixOrigin -eq 'Dhcp' -or $_.PrefixOrigin -eq 'Manual' } | Where-Object { $_.IPAddress -notmatch '^127\.' -and $_.IPAddress -notmatch '^169\.254\.' } | Select-Object -First 1).IPAddress if (-not $lan) { $lan = '(none)' } $wan = try { (Invoke-RestMethod -Uri 'https://api.ipify.org?format=json' -TimeoutSec 5).ip } catch { 'unavailable' } Write-Output ('LAN ' + $lan + ' WAN ' + $wan) ]] local res = jarvis.system.exec(string.format('powershell -NoProfile -Command "%s"', ps:gsub('"', '\\"'))) local out = (res.stdout or ""):gsub("[\r\n]+$", "") if out == "" then jarvis.audio.play_error() return { chain = false } end jarvis.system.notify("IP", out) local say = out:gsub("LAN", lang == "ru" and "Локальный" or "LAN"):gsub("WAN", lang == "ru" and ". Внешний" or ". WAN") jarvis.speak(say, { lang = lang }) jarvis.audio.play_ok() return { chain = false }