Zum Inhalt

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 TriggerTwitch → 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 Tracker muss 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-StartTwitch → Channel → Create Stream Marker ist was anderes (Marker innerhalb des Streams), nicht relevant für uptime

Quellen