> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streame.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# Variablen

> Mache Custom-Commands dynamisch mit Platzhaltern für User, Zufallszahlen und mehr.

## Was sind Variablen?

Variablen sind Platzhalter, die du in den **Antwort-Text** eines [Custom-Commands](/chatbot/commands) einbauen kannst. Sobald jemand den Command im Chat aufruft, ersetzt der Bot die Platzhalter durch die passenden Werte — z.B. den Namen des Users, eine Zufallszahl oder einen zufällig ausgewählten Wert aus einer Liste.

So wird aus einem Command mit fester Antwort einer, der bei jedem Aufruf etwas anderes ausgibt.

**Beispiel**

| Antwort-Text im Command                 | Output im Chat                              |
| --------------------------------------- | ------------------------------------------- |
| `Hallo, schön dass du da bist!`         | `Hallo, schön dass du da bist!`             |
| `Hallo $(user), schön dass du da bist!` | `Hallo WhyScarface, schön dass du da bist!` |

***

## Grundregeln zur Schreibweise

Variablen haben immer die Form `$(name)` — ein Dollarzeichen, eine öffnende Klammer, der Name der Variable (bei manchen mit Zusätzen) und eine schließende Klammer.

* **Kleinschreibung** — Variablen müssen genau so geschrieben werden wie in dieser Dokumentation (z.B. `$(user)`, nicht `$(User)` oder `$(USER)`).
* **Beliebig oft kombinieren** — du kannst so viele Variablen pro Antwort verwenden wie du willst.
* **Fehler brechen den Command nicht ab** — ungültige Variablen werden still durch **nichts** (leeren Text) ersetzt (siehe [Fehlerverhalten](#was-passiert-bei-fehlern)).

***

## Verfügbare Variablen

<CardGroup cols={2}>
  <Card title="$(user)" icon="user" href="/chatbot/variables/user">
    Username des Aufrufers.
  </Card>

  <Card title="$(touser)" icon="at" href="/chatbot/variables/touser">
    Der hinter dem Command genannte User — sonst der Aufrufer.
  </Card>

  <Card title="$(random)" icon="dice" href="/chatbot/variables/random">
    Eine Zufallszahl, optional mit Bereich.
  </Card>

  <Card title="$(pick)" icon="hand-pointer" href="/chatbot/variables/pick">
    Wählt zufällig einen Wert aus einer Liste.
  </Card>

  <Card title="$(repeat)" icon="repeat" href="/chatbot/variables/repeat">
    Wiederholt einen Text N-mal.
  </Card>

  <Card title="$(clip)" icon="scissors" href="/chatbot/variables/clip">
    Erstellt einen Twitch-Clip und fügt die URL ein.
  </Card>
</CardGroup>

***

## Variablen kombinieren

Variablen lassen sich frei mischen — du kannst so viele in einer Antwort verwenden wie du möchtest.

| Antwort-Text                                                         | Output (Beispiel)                                                       |
| -------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| `$(user) würfelt $(random 1-100) und wählt $(pick Pizza\|Sushi)`     | `WhyScarface würfelt 73 und wählt Sushi`                                |
| `GG $(repeat 5 !) $(user) WP`                                        | `GG ! ! ! ! ! WhyScarface WP`                                           |
| `$(user), $(pick Glück\|Pech)! Du bekommst $(random -10-10) Punkte.` | `WhyScarface, Glück! Du bekommst 7 Punkte.`                             |
| `$(touser), du bekommst $(random 1-100) Punkte!`                     | `@streame_gg, du bekommst 73 Punkte!`                                   |
| `$(user) hat einen Clip gemacht: $(clip)`                            | `WhyScarface hat einen Clip gemacht: https://clips.twitch.tv/AbcDef123` |

***

## Was passiert bei Fehlern?

Wenn eine Variable falsch geschrieben ist, **bricht der Command nicht ab** — der fehlerhafte Teil wird einfach durch **nichts** (leeren Text) ersetzt. Der Rest der Antwort bleibt erhalten.

| Eingabe                                      | Output im Chat |
| -------------------------------------------- | -------------- |
| `Test $(randdom)` (Tippfehler)               | `Test `        |
| `Test $(random ohne klammer` (Klammer fehlt) | `Test `        |
| `Test $(pick)` (ohne Auswahl)                | `Test `        |

<Tip>
  Es erscheint **niemals** ein nacktes `$(...)` im Chat. Wenn du also siehst, dass eine Stelle in der Bot-Antwort leer ist, weißt du sofort: dort ist eine Variable, die nicht aufgelöst werden konnte — und du kannst den Command anpassen.
</Tip>

***

## Einschränkungen

* **Keine Verschachtelung möglich.** Konstrukte wie `$(pick $(user)|hans)` oder `$($(user))` funktionieren nicht und können zu unerwarteten Ausgaben führen (z.B. nur eine schließende Klammer im Chat). Schreibe Variablen immer nacheinander, nie ineinander verschachtelt.
* **Keine Quotes nötig.** Anführungszeichen werden nicht unterstützt — sie sind aber auch nicht nötig, da Trennzeichen (`|`, `,`) klar definiert sind.
* **Maximale Nachrichtenlänge: 500 Zeichen.** Twitch limitiert Chat-Nachrichten auf 500 Zeichen. Längere Outputs werden automatisch gekürzt.
