Zrzur Entwickler

Betrieb in Produktion

Halte einen Bot monatelang am Laufen: wo du ihn hostest, wie er sich erholt, was er loggt.

Das brauchst du

Eine Maschine, die an bleibt, mit Node 22 oder neuer. Ein kleiner virtueller Server reicht für die meisten Bots. Dein Laptop taugt nur zum Testen: Der Bot stoppt, wenn er einschläft.

Ein Bot baut nur ausgehende Verbindungen auf. Er braucht keinen offenen Port, außer du nutzt HTTP-Interaktionen oder eine Prüfung von außen.

Als Dienst betreiben

Etwas muss den Bot beim Hochfahren und nach einem Absturz starten. Mit systemd:

# /etc/systemd/system/zrzur-bot.service
[Unit]
Description=Zrzur bot
After=network-online.target

[Service]
WorkingDirectory=/srv/bot
ExecStart=/usr/bin/node full-bot.mjs
EnvironmentFile=/srv/bot/.env
Restart=always
RestartSec=5
User=bot

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now zrzur-bot
journalctl -u zrzur-bot -f

Docker geht genauso: docker run --restart=always --env-file .env.

Sauber stoppen

Schließe bei SIGTERM das Gateway und lass laufende Arbeit enden. Speichere deine Daten in eine zweite Datei und benenne sie um, damit ein Absturz mittendrin nie eine halbe Datei hinterlässt.

Neu verbinden

Neu verbinden ist Aufgabe deines Bots. Folge Gateway: Neu verbinden und achte auf Stille, mit einem Ping alle 20 Sekunden und einem Limit von 60 Sekunden ohne Pong.

Stoppe endgültig nur bei InvalidSession und Close-Code 4014. Alles andere ist vorübergehend. Ein Bot, der in diesen zwei Fällen endet, braucht einen Menschen, also sorge dafür, dass dein Prozessmanager das Gateway nicht bombardiert: RestartSec=5 wartet zwischen den Versuchen.

Es gibt kein Fortsetzen. Hole nach jedem Ready, was du nicht verpassen darfst.

Logge, was hilft

Schreibe eine Zeile pro Ereignis als JSON auf die Standardausgabe. Dein Dienstmanager bewahrt sie auf.

{"time":"2026-11-06T07:02:51.576Z","level":"info","message":"ready","servers":1}
{"time":"2026-11-06T07:02:51.728Z","level":"info","message":"interaction","kind":"Command","name":"ping","ms":20}

Logge Zeit, Interaktionstyp, Befehl, Dauer und den Fehler-type. Logge nie Tokens oder Nachrichtentext.

Alarmiere bei diesen Fällen:

Langsame Arbeit außerhalb des Handlers

Antworte DeferredMessage, lege die Arbeit in eine Warteschlange und ändere die Antwort, wenn sie fertig ist. Blockiere die Gateway-Schleife nicht: Ein Bot, der seinen Socket nicht mehr liest, verpasst sein eigenes Pong.

Prüfen, ob er lebt

Eine kleine HTTP-Adresse sagt einem Monitor, dass der Bot läuft. Siehe das Deployment-Tutorial.

Wachsen

Updates

Ein Neustart kostet ein paar Sekunden, und Befehle in dieser Zeit scheitern. Registriere Befehle beim Start nur, wenn sie sich geändert haben: PUT ist sicher, zählt aber gegen ein Ratenlimit.

Checkliste

Weiter