Zum Inhalt springen
  • Dunkel
  • Hell
  • System

Commands Export / Import

Wenn du nur 5-10 Custom-Commands migrierst, schreibst du die direkt manuell in SB ab. Bei 20+ Commands lohnt sich ein Batch-Workflow. Diese Seite erklärt beide Wege.

Anzahl CommandsAnsatz
< 10Manuell: je 1-2 Minuten pro Command
10-30Halb-automatisch. Notion/Spreadsheet als Tabelle, dann manuell anlegen
30+Voll-automatisch. JSON/CSV in SB importieren via Skript
100+C#-Skript das die Export-Datei parst und SB-Actions direkt erstellt

Streamer.bot hat kein natives CSV/JSON-Import-Tool für Custom-Commands: die SB-Import-Strings sind ein eigenes Format (siehe Import-Strings) und nicht direkt aus Fremd-Bot-Exporten erzeugbar.

BotExport-MöglichkeitFormat
StreamElementsDashboard → Chat Commands → manuell kopierenmanuell
Streamlabs CloudbotKein nativer Exportmanuell
Streamlabs Chatbot (Desktop)Commands → Edit → Export to CSVCSV
NightbotAPI GET /1/commands (Bearer-Token)JSON

Details zum Export pro Quelle stehen in den jeweiligen Migrations-Pages: StreamElements, Streamlabs, Nightbot.

BedeutungStreamElementsStreamlabsNightbotStreamer.bot
Chat-User{user}$(user)$(user)%user%
Kanal-Name{channel.name}$(channel)$(channel)%broadcastUser%
Ganzer Input{message}$(message)$(query)%rawInput%
Erstes Wort{1}$(1)$(1)%input0%
Target-User{touser}$(touser)$(touser)%targetUser%
Viewer-Count{channel.viewers}$(viewers)$(viewers)%viewerCount%
Game{channel.game}$(game)$(game)%gameName%
Title{channel.title}$(title)$(title)%title%
Followage{user.followage}$(followage)%followAge% (aus Get User Info)
Random Zahl{random.number}$(random ...)$(eval ...)Get Random Number Sub-Action
URL Fetch$(readapi ...)$(urlfetch ...)Fetch URL Sub-Action
Eval-Math$(eval ...)C#-Sub-Action

Komplette Liste in der Variablen-Referenz.

  1. Liste anlegen: Spreadsheet oder Notion mit Spalten: Command-Name, Message, Cooldown, UserLevel
  2. In SB: Commands Pane → + Add → Command-Name eintragen (z.B. !discord)
  3. Action anlegen (oder auf bestehende verweisen) → Trigger: Command Triggered → !discord
  4. Sub-Action: Twitch → Send Message to Channel → Message-Text mit umgeschriebenen Variablen
  5. Command-Settings: Cooldown setzen, Permission setzen (Command-Settings)

Pro-Tipp: Dupliziere eine bestehende Action via Rechtsklick → Duplicate → umbenennen → Trigger ändern. Spart 80% der Klicks.

  1. Spreadsheet anlegen mit Spalten:

    namemessagecooldownuserLevelsb_message_translated
    !discordDiscord: $(channel)30everyoneDiscord: %broadcastUser%
    !uptimeStream läuft seit $(uptime)30everyoneStream läuft seit %uptime%
  2. Variablen-Translation in der sb_message_translated-Spalte via Find-and-Replace in der Tabelle

  3. In SB: Commands der Reihe nach anlegen: copy-paste aus der Spalte direkt in das SB-Message-Feld

  4. Cooldowns in der Tabelle bereits dokumentiert → 1:1 ins Command-Settings übertragen

Bei 20 Commands dauert das etwa 45 Minuten: der Spreadsheet-Aufbau lohnt sich.

SB hat keine offizielle Bulk-Import-API für Custom-Commands. Es gibt zwei Wege:

Variante A: SB-Import-String generieren (umständlich)

Abschnitt betitelt „Variante A: SB-Import-String generieren (umständlich)“

SB-Import-Strings sind ein internes Format (Base64-encoded Action-Definitions). Es gibt Community-Tools die JSON in SB-Import-Strings konvertieren, aber das ist fragil und SB ändert das Format zwischen Versionen.

Wann sinnvoll: Wenn du 50+ identisch strukturierte Commands hast (alle haben nur ein Send Message Sub-Action mit anderem Text). Tool: streamerbot-importgen auf GitHub (Community-Projekte, Stand prüfen).

Praktischer und stabiler: Du baust eine einmalige “Bulk-Importer”-Action in SB, die eine JSON/CSV liest und die Commands programmatisch erstellt.

Setup:

  1. JSON-Export (z.B. aus Nightbot) lokal speichern: C:\sb-import\nightbot-commands.json
  2. In SB → neue Action [Tool] Import Custom Commands
  3. Sub-Action: Core → C# → Execute Code
  4. C#-Code (vereinfacht):
using System.IO;
using Newtonsoft.Json.Linq;
public void Execute() {
var json = File.ReadAllText(@"C:\sb-import\nightbot-commands.json");
var data = JObject.Parse(json);
foreach (var cmd in data["commands"]) {
string name = cmd["name"]?.ToString();
string msg = cmd["message"]?.ToString();
// Variablen-Translation
msg = msg.Replace("$(user)", "%user%")
.Replace("$(channel)", "%broadcastUser%")
.Replace("$(query)", "%rawInput%");
// SB-API: Command + Action programmatisch anlegen
// (nutzt die SB.Methods-Bridge: siehe SB-Doku)
CPH.LogInfo($"Imported: {name}{msg}");
}
}

Wichtig: Diese Action legt nicht direkt Commands an: das geht über die SB-API nur eingeschränkt. Sie loggt aber alle umgewandelten Nachrichten ins Action-Log, von wo aus du sie schneller manuell ins SB-UI kopierst.

Für echte Auto-Anlage: Nutze die Streamer.bot WebSocket-API extern (Node.js, Python) und schick DoAction-Befehle: komplex, aber für sehr große Migrationen (100+) der einzige saubere Weg.

  • Variablen vergessen zu translaten: Command läuft, aber $(user) taucht wörtlich im Output auf → Find-and-Replace
  • Indizes verschoben: $(1)%input1% statt %input0% → leerer Output
  • Cooldown verloren: Beim manuellen Anlegen vergessen → Spam-Gefahr. Cooldown-Spalte im Spreadsheet pflicht.
  • UserLevel/Permission verloren: Subscriber-only-Commands werden everyone: siehe Permissions-Setup
  • Doppelte Bot-Antworten im Test: Alter Bot ist noch aktiv: vor Test deaktivieren oder ausloggen
  • Smart-Quotes in Messages: Wenn Excel/Word smart-quotes („") erzeugt, kann das in SB unschön aussehen: vor Copy-Paste in Notepad reinwerfen

Bevor du in den Live-Stream gehst:

  1. Alle migrierten Commands einmal testen: Chat öffnen, jeden Command tippen, Output prüfen
  2. Variablen-Output prüfen: sind alle %user%, %input0% etc. ersetzt?
  3. Cooldown testen: Command zweimal hintereinander → zweite Ausführung blockiert?
  4. Permission testen: Subscriber-Only-Commands mit Nicht-Sub-Account testen
  5. Alten Bot aus dem Kanal entfernen oder seine Mod-Rolle revoken
  6. Im Live-Stream beobachten: mindestens 1h, dann ist klar ob was fehlt