Zum Inhalt springen
  • Dunkel
  • Hell
  • System

File I/O: Dateien lesen und schreiben

Liest und schreibt lokale Textdateien auf dem PC, auf dem Streamer.bot läuft. Hauptanwendungen: OBS-Text-Sources, persistente Counter-Dateien, Chat-Logs.

Core File I/O Write To File

Doku: docs.streamer.bot · Write To File

FeldBedeutungEmpfehlung
File PathAbsoluter Pfad zur Datei. Unterstützt %variablen%z.B. C:\StreamBot\data\counter.txt
TextInhalt der geschrieben wirdz.B. %counter% oder mehrzeiliger Text
Appendtrue = an Datei anhängen · false = Datei überschreibenfalse für Counter, true für Logs
Core File I/O Read Lines From File

Doku: docs.streamer.bot · Read Lines From File

FeldBedeutung
File PathAbsoluter Pfad zur Datei
Parse VariablesVariablen im Datei-Inhalt ersetzen

Output:

VariableInhalt
Argument %fileLineCount% Anzahl Zeilen in der gelesenen Datei. Variablen-Doku Anzahl Zeilen
Argument %fileLine[N]% Inhalt der N-ten Zeile (0-basiert). fileLine[0] = erste Zeile. Variablen-Doku Zeile N (0-basiert)
Argument %fileRawOutput% Kompletter Datei-Inhalt als ein String. Variablen-Doku Gesamter Inhalt
Core File I/O Read Random Line From File

Liest eine zufällige Zeile. Perfekt für Random-Responses aus einer Textdatei.

VariableInhalt
Argument %randomLine% Inhalt der zufällig gewählten Zeile. Variablen-Doku Die zufällige Zeile
Core File I/O Read Specific Line From File
FeldBedeutung
File PathPfad zur Datei
Line NumberZeilennummer (0-basiert). Unterstützt %variablen%
Core File I/O File Exists
VariableInhalt
Argument %fileExists% bool: true wenn die Datei existiert. Variablen-Doku true / false

Analog: Folder Exists für Verzeichnisse.

OBS kann eine Textdatei als Source anzeigen. Jede Änderung der Datei aktualisiert den OBS-Text live.

[Cmd] !deathcount
├── 1. Global Get: deathCount → deathCount (Persisted)
├── 2. Set Argument: deathCount = $math(%deathCount% + 1)$
├── 3. Global Set: deathCount = %deathCount% (Persisted)
├── 4. Write To File
│ File Path: C:\StreamBot\obs-text\deaths.txt
│ Text: Deaths: %deathCount%
│ Append: false
├── 5. Send Message: "@%user% Death #%deathCount% eingetragen."

In OBS: Quelle hinzufügen → Text (GDI+) → „Aus Datei lesen“ aktivieren → Pfad auf C:\StreamBot\obs-text\deaths.txt setzen.

[Event] Chat Message
├── 1. Write To File
│ File Path: C:\StreamBot\logs\chat-%date%.txt
│ Text: [%time%] %user%: %rawInput%
│ Append: true

Statt Random Group mit festen Messages: Antworten in eine Textdatei schreiben (eine pro Zeile), dann zufällig ziehen.

Datei C:\StreamBot\data\compliments.txt:

Du bist großartig!
Nice Hair heute.
Dein Gameplay ist S-Tier.
Du riechst nach Erfolg.
[Cmd] !compliment
├── 1. Read Random Line From File
│ File Path: C:\StreamBot\data\compliments.txt
├── 2. Send Message: "@%user% %randomLine%"

Vorteil gegenüber Random Group: du kannst Einträge in der Textdatei ergänzen ohne Streamer.bot zu öffnen.

KriteriumFile I/OGlobals
Zugriff außerhalb SBJa (Texteditor, OBS)Nein
PerformanceLangsamer (Disk)Schneller (RAM)
Strukturierte DatenNur Text/ZeilenKey-Value, per User
OBS-Text-SourceJa (Hauptgrund)Nein
Mehrere WerteEine Datei pro Wert oder ZeilenBeliebig viele Keys

Faustregel: Globals für interne Logik, File I/O wenn OBS oder externe Programme die Daten lesen sollen.

  • Pfad mit Backslash: Windows-Pfade brauchen \ nicht //. Kein / in Windows-Pfaden.
  • Verzeichnis existiert nicht: SB erstellt die Datei, aber nicht das Verzeichnis. Vorher manuell anlegen.
  • Append vergessen: Standard ist Überschreiben. Für Logs Append: true setzen.
  • Encoding: SB schreibt UTF-8. OBS GDI+ kann UTF-8, aber manche ältere Programme nicht.
  • Datei von anderem Programm gesperrt: Wenn OBS die Datei liest während SB schreibt, kann es kurz leer sein. Selten ein Problem, aber bei schnellen Updates möglich.