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.
Schreiben: Write To File
Abschnitt betitelt „Schreiben: Write To File“Doku: docs.streamer.bot · Write To File
| Feld | Bedeutung | Empfehlung |
|---|---|---|
| File Path | Absoluter Pfad zur Datei. Unterstützt %variablen% | z.B. C:\StreamBot\data\counter.txt |
| Text | Inhalt der geschrieben wird | z.B. %counter% oder mehrzeiliger Text |
| Append | true = an Datei anhängen · false = Datei überschreiben | false für Counter, true für Logs |
Lesen: Read Lines From File
Abschnitt betitelt „Lesen: Read Lines From File“Doku: docs.streamer.bot · Read Lines From File
| Feld | Bedeutung |
|---|---|
| File Path | Absoluter Pfad zur Datei |
| Parse Variables | Variablen im Datei-Inhalt ersetzen |
Output:
| Variable | Inhalt |
|---|---|
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 |
Lesen: Read Random Line From File
Abschnitt betitelt „Lesen: Read Random Line From File“Liest eine zufällige Zeile. Perfekt für Random-Responses aus einer Textdatei.
| Variable | Inhalt |
|---|---|
Argument %randomLine% Inhalt der zufällig gewählten Zeile.
Variablen-Doku | Die zufällige Zeile |
Lesen: Read Specific Line From File
Abschnitt betitelt „Lesen: Read Specific Line From File“| Feld | Bedeutung |
|---|---|
| File Path | Pfad zur Datei |
| Line Number | Zeilennummer (0-basiert). Unterstützt %variablen% |
Prüfen: File/Folder Exists
Abschnitt betitelt „Prüfen: File/Folder Exists“| Variable | Inhalt |
|---|---|
Argument %fileExists% bool: true wenn die Datei existiert.
Variablen-Doku | true / false |
Analog: Folder Exists für Verzeichnisse.
Beispiel: OBS-Text-Source mit Counter
Abschnitt betitelt „Beispiel: OBS-Text-Source mit Counter“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.
Beispiel: Chat-Log schreiben
Abschnitt betitelt „Beispiel: Chat-Log schreiben“[Event] Chat Message├── 1. Write To File│ File Path: C:\StreamBot\logs\chat-%date%.txt│ Text: [%time%] %user%: %rawInput%│ Append: trueBeispiel: Random-Antworten aus Datei
Abschnitt betitelt „Beispiel: Random-Antworten aus Datei“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.
File I/O vs Globals
Abschnitt betitelt „File I/O vs Globals“| Kriterium | File I/O | Globals |
|---|---|---|
| Zugriff außerhalb SB | Ja (Texteditor, OBS) | Nein |
| Performance | Langsamer (Disk) | Schneller (RAM) |
| Strukturierte Daten | Nur Text/Zeilen | Key-Value, per User |
| OBS-Text-Source | Ja (Hauptgrund) | Nein |
| Mehrere Werte | Eine Datei pro Wert oder Zeilen | Beliebig viele Keys |
Faustregel: Globals für interne Logik, File I/O wenn OBS oder externe Programme die Daten lesen sollen.
Häufige Fallen
Abschnitt betitelt „Häufige Fallen“- 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: truesetzen. - 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.