Fetch URL: HTTP-Requests an externe APIs
Ruft eine externe URL auf und parst die Antwort. Damit baust du API-Commands: Wetter, Witze, Übersetzungen, Pokémon-Daten und alles andere was eine öffentliche API anbietet.
Core Network Fetch URLDoku: docs.streamer.bot · Fetch URL
| Feld | Bedeutung | Empfehlung |
|---|---|---|
| URL | Die API-URL. Unterstützt %variablen% | z.B. https://api.example.com/data?q=%input0% |
| Method | HTTP-Methode: GET, POST, PUT, DELETE, PATCH | meist GET für Lese-Abfragen |
| Content Type | Body-Format bei POST/PUT: application/json, text/plain, etc. | application/json bei JSON-Body |
| Body | Request-Body (nur bei POST/PUT/PATCH) | JSON-String mit %variablen% |
| Headers | Zusätzliche HTTP-Header (Key-Value-Paare) | für API-Keys: Authorization: Bearer %apiKey% |
Output-Variablen
Abschnitt betitelt „Output-Variablen“Nach einem erfolgreichen Fetch stehen diese Variablen zur Verfügung:
| Variable | Inhalt |
|---|---|
Argument %fetchUrlStatusCode% HTTP Status-Code der Antwort. 200 = OK, 404 = Not Found, 500 = Server Error.
Variablen-Doku | HTTP Status-Code (200, 404, 500, …) |
Argument %fetchUrlIsSuccess% bool: true wenn Status 2xx, false bei Fehler.
Variablen-Doku | true wenn Status 2xx |
JSON-Parsing: Auto-Variablen
Abschnitt betitelt „JSON-Parsing: Auto-Variablen“Streamer.bot parst JSON-Antworten automatisch und legt die Werte als Variablen ab. Bei dieser API-Antwort:
{ "location": { "name": "Berlin" }, "current": { "temp_c": 22.5, "condition": { "text": "Sonnig" } }}Entstehen automatisch:
| Variable | Wert |
|---|---|
%fetchUrlResult.location.name% | Berlin |
%fetchUrlResult.current.temp_c% | 22.5 |
%fetchUrlResult.current.condition.text% | Sonnig |
Die Punkt-Notation folgt der JSON-Verschachtelung.
Arrays in JSON
Abschnitt betitelt „Arrays in JSON“Bei Arrays nutzt SB eckige Klammern mit Index:
{ "results": [ { "text": "Erster Witz" }, { "text": "Zweiter Witz" } ]}| Variable | Wert |
|---|---|
%fetchUrlResult.results[0].text% | Erster Witz |
%fetchUrlResult.results[1].text% | Zweiter Witz |
Beispiel: Einfacher API-Command
Abschnitt betitelt „Beispiel: Einfacher API-Command“[Cmd] !joke├── 1. Fetch URL│ URL: https://official-joke-api.appspot.com/random_joke│ Method: GET├── 2. If/Else: %fetchUrlIsSuccess% Equals false│ ├── Send Message: "@%user% API gerade nicht erreichbar."│ └── Break├── 3. Send Message: "%fetchUrlResult.setup% — %fetchUrlResult.punchline%"Beispiel: URL mit User-Input
Abschnitt betitelt „Beispiel: URL mit User-Input“[Cmd] !weather├── 1. If/Else: %input0% Is Null or Empty│ ├── Send Message: "@%user% Nutzung: !weather Berlin"│ └── Break├── 2. Fetch URL│ URL: https://wttr.in/%input0%?format=3│ Method: GET├── 3. Send Message: "@%user% %fetchUrlResult%"Beispiel: POST mit JSON-Body
Abschnitt betitelt „Beispiel: POST mit JSON-Body“├── Fetch URL│ URL: https://api.example.com/data│ Method: POST│ Content Type: application/json│ Body: {"username": "%userName%", "message": "%input0%"}Beispiel: API mit Header-Authentifizierung
Abschnitt betitelt „Beispiel: API mit Header-Authentifizierung“Manche APIs brauchen einen API-Key im Header:
├── Fetch URL│ URL: https://api.example.com/translate│ Method: GET│ Headers:│ X-Api-Key: (dein Key hier)Fehler-Handling-Pattern
Abschnitt betitelt „Fehler-Handling-Pattern“Immer nach einem Fetch den Erfolg prüfen:
├── Fetch URL: ...├── If/Else: %fetchUrlIsSuccess% Equals false│ ├── Send Message: "@%user% API gerade nicht erreichbar. Versuch's später."│ └── Break├── (normaler Ablauf mit API-Daten)Häufige Fallen
Abschnitt betitelt „Häufige Fallen“- API-URL falsch: Kein Ergebnis, aber auch kein Fehler im Chat. Status prüfen.
- JSON-Pfad falsch:
%fetchUrlResult.data.text%statt%fetchUrlResult.text%. Die Struktur der API-Antwort VORHER prüfen (Browser oder curl). - Rate Limiting: Viele APIs haben Limits (z.B. 60 Requests/Minute). Cooldown auf den Command setzen.
- HTTPS Pflicht: Manche APIs funktionieren nur über HTTPS.
http://kann geblockt werden. - Timeout: Wenn die API > 5 Sekunden braucht, gibt SB auf. Nichts was du konfigurieren kannst.
- Sonderzeichen im Input:
!weather New York→ Leerzeichen in URL.$urlEncode()$nutzen.
Verwendet in
Abschnitt betitelt „Verwendet in“- API-Commands Kategorie: alle 12 API-Commands nutzen Fetch URL
!weather: Wetter-API!translate: Übersetzungs-API!pokemon: PokéAPI