| 12345678 |
- {
- "name": "get_shipping_data",
- "description": "Pobierz metody i koszty wysyłki. Podaj country (kraj po polsku, np. Polska, Niemcy) aby uzyskać metody dla danego kraju. Bez parametrów zwraca listę dostępnych krajów.",
- "color": "linear-gradient(rgb(120,180,120), rgb(60,140,80))",
- "iconSrc": "",
- "schema": "[{\"id\":0,\"property\":\"country\",\"description\":\"Kraj wysyłki po polsku (np. Polska, Niemcy, Francja). Podaj gdy użytkownik pyta o konkretny kraj — narzędzie samo pobierze metody dla tego kraju.\",\"type\":\"string\",\"required\":false}]",
- "func": "const fetch = require('node-fetch')\n\nconst base = String(($vars && ($vars.relay_base || $vars.webhook_base)) || 'http://localhost:8080').replace(/\\/$/,'')\nconst secret = String(($vars && $vars.relay_shared_secret) || '')\nconst country = typeof $country !== 'undefined' && $country ? String($country).toLowerCase().trim() : ''\n\nif (!secret) return 'Błąd: brak $vars.relay_shared_secret'\n\ntry {\n const fetchData = async (body) => {\n const res = await fetch(`${base}/tools/get_shipping_data`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${secret}` },\n body: JSON.stringify(body)\n })\n const d = await res.json()\n return d.ok ? d.data : null\n }\n\n const zones = await fetchData({})\n if (!Array.isArray(zones)) return 'Błąd pobierania danych wysyłki.'\n\n if (country) {\n const zone = zones.find(z => z.name.toLowerCase().includes(country) || country.includes(z.name.toLowerCase()))\n if (!zone) return 'Nie znaleziono strefy wysyłki dla kraju: ' + country + '.'\n const result = await fetchData({ zoneId: zone.id, country })\n if (!result || !Array.isArray(result.methods)) return 'Brak danych o wysyłce do ' + zone.name + '.'\n const active = result.methods.filter(m => m.enabled !== false)\n if (!active.length) return 'Brak aktywnych metod wysyłki do ' + zone.name + '.'\n const lines = active.map(m => {\n const cost = m.settings && m.settings.cost ? m.settings.cost.value : null\n return '- ' + (m.title || m.id) + (cost ? ' — ' + cost + ' ' + (result.currency_symbol || 'PLN') : '')\n }).join('\\n')\n return 'Metody wysyłki do ' + zone.name + ':\\n' + lines\n }\n\n const list = zones.map(z => z.name).join(', ')\n return 'Wysyłka dostępna do: ' + list + '.\\n[INSTRUKCJA: Jeśli użytkownik pytał o konkretny kraj, wywołaj narzędzie ponownie podając nazwe kraju w parametrze country po polsku (np. Polska). Nigdy nie ujawniaj użytkownikowi identyfikatorów technicznych.]'\n} catch (error) {\n return 'Błąd połączenia: ' + (error?.message || String(error))\n}\n"
- }
|