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_secretundidentity_secret - anschließend holt es direkt den Runtime-
refreshTokenfü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_IDSTEAM_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_secretnicht 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_JSONin.envund/oder aus der Secret-Dateisecrets/steam_bots_json. - Wenn Steam den späteren Refresh-Token-Schritt rate-limited, kann das Script mit demselben
bot-idspäter erneut gestartet werden und setzt mit dem gespeicherten Bootstrap-Artefakt fort. identitySecretist 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.