Zum Inhalt

Pattern: Get User Info for Target

!cmd @bob — User-Lookup für den Erwähnten. Setzt %targetUser%, %targetUserName% etc.

Pfad: Twitch → User → Get User Info for Target Doku: https://docs.streamer.bot/api/sub-actions/twitch/user/get-user-info-for-target

Feld

Feld Bedeutung
User Login Login des Users (ohne @). Variable wie %input0% oder eigenes Argument

Sonst nichts. Sub-Action macht den API-Call und füllt jede Menge Argumente.

Output-Variablen

Variable Inhalt
%targetUser% Display Name (mit Caps)
%targetUserName% Login (lowercase)
%targetUserId% Twitch User-ID
%targetUserType% "affiliate" / "partner" / leer
%targetIsAffiliate% bool
%targetIsPartner% bool
%targetIsModerator% bool
%targetIsVip% bool
%targetIsSubscribed% bool
%targetSubscriptionTier% 1000/2000/3000 (T1/T2/T3)
%targetChannelTitle% Aktueller Stream-Titel
%targetDescription% Channel-Beschreibung
%game% Aktuelles Game/Category
%gameId% Game-ID
%accountAge% Account-Alter in Sekunden
%createdAt% Account-Erstelldatum
%addTargetResult% bool — ob Lookup erfolgreich

Problem: %input0% enthält das @

Wenn User !iq @bob tippt, ist %input0% = @bob. Twitch-API will den Login OHNE @.

Lösung: Inline-Function $replace:

Feld Wert
User Login $replace(%input0%, @, )$

Klein, aber wichtig.

Problem: User tippt !iq ohne Target

%input0% ist leer. Get User Info for Target schlägt fehl. Lösung: Fallback auf den Sender.

Variante 1: If/Else davor

1. If/Else: %input0% Is Null or Empty
   ├─ Set Argument: targetLogin = %userName%
   └─ Break    (Nein, kein Break — Action soll weiterlaufen!)
2. If/Else: %input0% Is Null or Empty NEGIEREN — geht nicht direkt
   ...

Schwierig weil If/Else nur Then-Pfad hat. Bessere Lösung:

Variante 2: Set Argument mit Default zuerst

1. Set Argument: targetLogin = %userName%           (Default = Sender)
2. If/Else: %input0% Is Null or Empty NICHT erfüllt
   → Wie machen? Streamer.bot bietet Operations-Toggle nicht.

Streamer.bot v1.0.4 hat tatsächlich kein "negiertes Is Null or Empty". Aber: nutze Is Null or Empty und kombiniere mit Set Argument im Standard-Branch.

Sauberste Lösung:

1. Set Argument: targetLogin = $replace(%input0%, @, )$
2. If/Else: %targetLogin% Is Null or Empty
   ├─ Set Argument: targetLogin = %userName%
3. Get User Info for Target (User Login = %targetLogin%)

Schritt 1 setzt zuerst den Default mit Replace. Wenn %input0% leer war, ist targetLogin jetzt auch leer. Schritt 2 prüft das und überschreibt mit %userName%. Schritt 3 nutzt das Ergebnis.

Komplettes Pattern: Target mit Fallback

Action-Tree für jeden Target-Command:

[Cmd] !x
├── 1. Set Argument: targetLogin = $replace(%input0%, @, )$
├── 2. If/Else: %targetLogin% Is Null or Empty
│   └─ Set Argument: targetLogin = %userName%
├── 3. Get User Info for Target (User Login = %targetLogin%)
├── 4. If/Else: %addTargetResult% Equals false
│   ├─ Send Message: "@%user% den User gibt's nicht"
│   └─ Break
└── 5. Send Message: "...%targetUser%..."

Schritt 4 fängt den Fall ab dass der Login nicht existiert (Tippfehler).

Tipp: Sender als Target gewollt

Wenn der Command für sich selbst gedacht ist (z.B. !iq ohne @) ist userName als Fallback OK. Wenn der Command IMMER ein Target braucht (z.B. !hug @bob):

2. If/Else: %targetLogin% Is Null or Empty
   ├─ Send Message: "@%user% nutze !hug @username"
   └─ Break

Statt Fallback → Hilfetext + Break.

Häufige Fallen

  • %input0% mit @ an Sub-Action gegeben → addTargetResult=false. Immer $replace(%input0%, @, )$ verwenden
  • Get User Info NACH Send Message — die Variablen sind dann noch leer. Reihenfolge: Lookup, dann Antwort
  • Self-Target Spam — wenn %input0% leer und Fallback auf Sender → User triggert für sich selbst. Bewusste Entscheidung treffen

Verwendung in Commands