Event + Command: !uptime¶
!uptime postet wie lange der Stream schon läuft. Funktioniert via einer Helper-Action die bei Stream-Start die Zeit in einen Global schreibt, plus dem Chat-Command der den Wert ausliest und Differenz zu jetzt rechnet.
Patterns: Stream Online Trigger + Global (Set/Get) + Inline Function
Trigger A: Twitch → Channel → Stream Online (Helper)
Trigger B: Twitch → Commands → Command Triggered (!uptime)
Schritt 1: Helper-Action für Stream-Start¶
Action: [Sys] Stream Start Tracker¶
Diese Action speichert den Stream-Start in einen persisted Global jedes Mal wenn der Stream beginnt.
Trigger¶
Triggers-Tab → + Add Trigger → Twitch → Channel → Stream Online.
Verfügbare Variablen:
| Variable | Inhalt |
|---|---|
%startedAt% |
Stream-Start als DateTime |
%game% |
Aktuelle Kategorie |
%gameId% |
Game-ID |
Sub-Action 1: Global (Set)¶
Pfad: Core → Globals → Global (Set)
| Feld | Wert |
|---|---|
| Variable Name | streamStartedAt |
| Value | %startedAt% |
| Mode | Value |
| Destination | Global |
| Persisted | Persisted |
Action-Tree¶
[Sys] Stream Start Tracker (Trigger: Stream Online)
└── 1. Global (Set): streamStartedAt = %startedAt% [Global, Persisted]
Diese Action ist "fire-and-forget" — sie postet nichts im Chat. Du siehst sie nur in den Streamer.bot Logs.
Schritt 2: !uptime Command-Action¶
Action: [Cmd] !uptime¶
Trigger¶
Twitch → Commands → Command Triggered → Command !uptime (musst du im Commands-Pane noch anlegen, siehe Command-Settings unten).
Sub-Action 1: Global (Get) — Stream-Start lesen¶
Pfad: Core → Globals → Global (Get)
| Feld | Wert |
|---|---|
| Variable Name | streamStartedAt |
| Default Value | (leer) |
| Source | Global |
| Persisted | Persisted |
| Variable Name (Destination) | streamStart |
Sub-Action 2: If/Else — kein Stream-Start bekannt¶
| Feld | Wert |
|---|---|
| Input | %streamStart% |
| Operation | Is Null or Empty |
Then-Branch:
Sub-Action 3 (im Then von 2): Send Message + Break¶
| Feld | Wert |
|---|---|
| Message | @%user% Stream-Start-Zeit ist nicht bekannt. Helper-Action evtl. nicht aktiv? |
Plus Core → Logic → Break.
Sub-Action 4: Send Message — mit Inline Function für Diff¶
| Feld | Wert |
|---|---|
| Message | 📺 Stream läuft seit $dateDiff(%streamStart%, $now()$, "h:mm")$. Start: $date(%streamStart%, HH:mm)$. |
| Send using bot account | aktiv |
Hinweis: Die Inline Functions $dateDiff()$, $date()$, $now()$ sind in Streamer.bot vorhanden. Die exakten Format-Strings (h:mm für "2:35", HH:mm für 24h-Format) folgen .NET DateTime/TimeSpan-Konventionen. Falls die Syntax bei deiner SB-Version abweicht, in der offiziellen Inline-Function-Doku nachsehen.
Einfachere Fallback-Variante ohne Diff¶
Wenn Inline-Function-Berechnung Probleme macht, einfach Start-Zeit anzeigen:
| Feld | Wert |
|---|---|
| Message | 📺 Stream startete heute um $date(%streamStart%, HH:mm)$ Uhr. |
Viewer rechnen selbst — pragmatisch und immer korrekt.
Action-Tree¶
[Cmd] !uptime
├── 1. Global (Get): streamStartedAt → %streamStart%
├── 2. If/Else: %streamStart% Is Null or Empty
│ ├── 3a. Send Message: "Stream-Start-Zeit nicht bekannt..."
│ └── 3b. Break
└── 4. Send Message: "📺 Stream läuft seit $dateDiff(...)$..."
Command-Einstellungen (für !uptime)¶
Im Commands-Pane:
| Feld | Wert |
|---|---|
| Name | !uptime — Stream-Dauer |
| Group | AzaCraft Standard |
| Commands | !uptime!live |
| Location | Start |
| Sources | Twitch Message |
| Global Cooldown | 10 |
| User Cooldown | 30 |
Verwendungsbeispiele¶
| Chat | Resultat (Beispiel bei 2h 35min Laufzeit) |
|---|---|
!uptime |
"📺 Stream läuft seit 2:35. Start: 19:00." |
!uptime (bevor Helper jemals lief) |
"@user Stream-Start-Zeit ist nicht bekannt..." |
Was passiert bei Restart von Streamer.bot?¶
Da der Global Persisted ist, überlebt er einen SB-Restart. Der Wert ist dann der Stream-Start des LETZTEN Streams, auch wenn aktuell offline. Pragmatisch ist das ok — bei Stream Online schreibt der Helper sofort den neuen Wert.
Erweiterung: Auch Offline-Hinweis¶
Vor Sub-Action 4 ein weiteres If/Else einfügen das prüft ob aktuell live (via Get Stream Info oder Add Broadcaster Information) — wenn nicht: "Stream ist gerade offline, letzter Stream startete um %streamStart%".
Häufige Fallen¶
- Helper-Action nicht aktiviert —
[Sys] Stream Start Trackermuss enabled sein, sonst bleibt der Global leer - DateTime-Format-Mismatch —
%startedAt%vom Stream-Online-Trigger sollte mit$dateDiff()$kompatibel sein. Im Zweifel: einfache Variante mit$date()$benutzen - Stream-Marker statt Stream-Start —
Twitch → Channel → Create Stream Markerist was anderes (Marker innerhalb des Streams), nicht relevant für uptime
Quellen¶
- Stream Online Trigger: https://docs.streamer.bot/api/triggers/twitch/channel/stream-online
- Global (Set/Get): https://docs.streamer.bot/api/sub-actions/core/globals/global-set
- Inline Functions (Reference): https://docs.streamer.bot/api/inline-functions