Zum Hauptinhalt springen

Steam-Bots

Der Bot läuft im Betrieb mit refreshToken, shared_secret und identity_secret, nicht mit manuell gepflegten Cookies.

Bootstrap

Empfohlener Ablauf:

  • Bot-Account zuerst normal im Browser erstellen
  • danach einmal das Bootstrap-Script ausführen
  • das Script richtet den Steam Mobile Authenticator ein
  • dabei erzeugt es shared_secret und identity_secret
  • anschließend holt es direkt den Runtime-refreshToken für den Bot

Einmalig im Backend-Kontext:

cd backend
npm run steam:bootstrap-bot

Für das Hauptprojekt gilt: Node- und npm-Befehle laufen nicht direkt auf dem Host, sondern im passenden Docker-Kontext.

Danach die ausgegebenen Werte in den Docker-Stack übernehmen:

  • STEAM_DEFAULT_BOT_ID
  • STEAM_BOTS_JSON

Beispielstruktur:

STEAM_DEFAULT_BOT_ID=florian_bot
STEAM_BOTS_JSON=[{"id":"florian_bot","name":"Florian Bot","accountName":"botaccount","steamId":"...","refreshToken":"...","sharedSecret":"...","identitySecret":"..."}]

Mehrere Bots

STEAM_DEFAULT_BOT_ID wählt nur den Standard-Bot aus STEAM_BOTS_JSON aus.

Wenn STEAM_DEFAULT_BOT_ID gesetzt ist, aber nicht zu einem vorhandenen Bot in STEAM_BOTS_JSON passt, fällt das System aktuell auf den ersten Bot aus der Liste zurück.

Wenn ein weiterer Bot hinzukommt, wird ein weiterer Eintrag an das JSON-Array in STEAM_BOTS_JSON angehängt.

Beispiel:

STEAM_DEFAULT_BOT_ID=florian_bot
STEAM_BOTS_JSON=[{"id":"florian_bot","name":"Florian Bot","accountName":"botaccount","steamId":"...","refreshToken":"...","sharedSecret":"...","identitySecret":"..."},{"id":"backup_bot","name":"Backup Bot","accountName":"backupaccount","steamId":"...","refreshToken":"...","sharedSecret":"...","identitySecret":"..."}]

Wichtige Regeln

  • Das Script ist für frisch vorbereitete Bot-Accounts gedacht.
  • Wenn auf dem Account bereits ein Mobile Authenticator aktiv ist, können bestehende shared_secret / identity_secret nicht einfach erneut aus Steam ausgelesen werden.
  • Nach frisch aktivierter 2FA gelten weiterhin die normalen Steam-Wartefristen, bevor der Bot frei handeln kann.
  • Das Script schreibt die erzeugten Secrets und den Revocation-Code zusätzlich in .steam-bot-bootstrap/<bot-id>.json, damit sie auch bei einem späteren Fehler nicht verloren gehen.
  • Diese Datei ist nur ein Bootstrap-, Resume- und Backup-Artefakt.
  • Der laufende Server liest seine Bot-Konfiguration weiterhin nur aus STEAM_BOTS_JSON in .env und/oder aus der Secret-Datei secrets/steam_bots_json.
  • Wenn Steam den späteren Refresh-Token-Schritt rate-limited, kann das Script mit demselben bot-id später erneut gestartet werden und setzt mit dem gespeicherten Bootstrap-Artefakt fort.
  • identitySecret ist optional. Ohne ihn läuft der Bot weiter, aber Bot-Confirmations müssen manuell bestätigt werden.

Ad-hoc-Scripte

Während der Backend-Service läuft, keine separaten Bot-Logins aus einmaligen Scripts starten. Ein Script, das eine eigene Steam-Bot-Session initialisiert, kann die laufende Backend-Session ersetzen und Fehler wie LogonSessionReplaced oder doppelte Inventarantworten auslösen.

Für einmalige Metadaten-Backfills zu bereits bot-gehaltenen Marketplace-Items nach Möglichkeit keine Bot-Session verwenden. Besser sind gespeicherte IDs wie steamClassId, steamInstanceId oder botAssetId plus Steam-Web-API-Metadaten wie GetAssetClassInfo.

Steam-ClassInfo-Tags können als Objekt statt als Array zurückkommen. Code, der daraus Rarity oder andere Tags liest, soll beide Formen unterstützen.