NEU 📢 Begrenztes Startangebot: bis zu 70 % Rabatt auf deinen ersten Monat, für jedes Spiel!Tarife ansehen

Telegraf-Bot 24/7 hosten (Telegram, Node.js)

Telegram-Bot-HostingUpdated Nov 6, 202611 min read

Um einen Telegraf-Bot 24/7 zu hosten, lässt du ihn auf einer Maschine laufen, die immer an bleibt: auf einem Linux-VPS mit einem systemd-Dienst, der ihn neu startet, wenn er stoppt, oder mit einem Bot-Tarif bei PlayNHost (ab 1,99 US$ im Monat). Dort installiert das Panel deine Pakete, gibt deinem Code den Token und startet den Bot neu, wenn er abstürzt. In unserem Test brauchte ein Telegraf-4.16.3-Bot unter Node.js 22 etwa 60 MB Speicher. Telegrafs bot.launch() nutzt standardmäßig Long Polling, und genau das brauchen unsere Tarife: Sie haben noch keine öffentliche HTTPS-Adresse für einen Webhook. Die Schritte bei PlayNHost:

  1. Klicke auf Telegram-Bot-Hosting bei einem Tarif auf Server erstellen. Beantworte im Bestellfenster Wofür ist dein Bot? mit Telegram und wähle Node.js.
  2. Öffne deinen Server im Panel. Die Karte Deinen Bot einrichten auf der Seite Übersicht öffnet sich bei Mit Telegram verbinden; der erste Schritt, Was läuft, sollte Dieser Bot führt Node.js Bot aus. anzeigen.
  3. Füge bei Mit Telegram verbinden den Token von @BotFather unter Füge deinen Bot-Token ein ein, klicke auf Verbinden, prüfe den angezeigten Bot-Namen und klicke auf Ja, weiter.
  4. Klicke bei Dein Code auf Dateien hochladen und lade deine package.json und index.js ohne node_modules hoch, oder klicke auf Git verbinden.
  5. Prüfe auf der Seite Bot im Bereich Code, dass Startdatei die Datei ist, die deinen Bot startet (standardmäßig index.js). Klicke auf Speichern, wenn du sie änderst.
  6. Klicke auf Bot starten und öffne die Console. Beim ersten Start installiert npm Telegraf, dann gibt dein Bot Logged in as @your_bot aus und der Chip unter Übersicht wechselt zu Online in Telegram.
  7. Klicke auf der Seite Bot im Bereich Telegram auf In Telegram öffnen und sende deinem Bot /start.

Wie du den Bot in @BotFather anlegst und die Schritte im Panel im Einzelnen aussehen, steht in So hostest du einen Telegram-Bot. Diese Seite handelt von Telegraf selbst: was es auf einem Server braucht und was du vor dem Hosten wissen solltest.

Was wir gemessen haben

BibliothekVersionSpeicher nach dem StartStart bis zur Antwort von TelegramInstallationsgröße
Telegraf4.16.360 MB0,2 s2,7 MB
grammY1.46.060 MB0,2 s3,0 MB
node-telegram-bot-api2.3.063 MB0,2 s2,4 MB
Node.js 22 allein, ohne Bibliothek22.23.443 MBkeinekeine

So haben wir gemessen: auf unserem eigenen Node, in einem Wegwerf-Container, der wie ein 1-GB-Bot-Tarif eingerichtet war (das Node.js-22-Image und der Startbefehl unseres Node.js-Bot-Typs, Nodes Speicherlimit bei 80 Prozent). Jeder Bot rief Telegram mit einem gefälschten Token auf, den Telegram ablehnte. Der Speicher ist der residente Speicher 15 Sekunden nach dieser Antwort, die Startzeit läuft vom Aufruf von launch bis zur Antwort, und jeder Wert ist der Median der Läufe 2 bis 4.

Das sind Untergrenzen: ein Bot ohne Chats und ohne Daten. Dein eigener Code, was er im Speicher hält, und die Zahl der Chats kommen dazu, die Bibliothek ist also nur ein kleiner Teil der 0,5 GB des Tarifs STARTER.

Ein minimaler Telegraf-Bot

Er antwortet auf /start, liest den Token, den das Panel ihm gibt, und gibt eine Bereitschaftszeile aus. Lege beide Dateien in den Hauptordner deines Bots.

package.json

{
  "name": "my-telegraf-bot",
  "private": true,
  "main": "index.js",
  "dependencies": {
    "telegraf": "^4.16.3"
  }
}

index.js

const { Telegraf } = require("telegraf");

const bot = new Telegraf(process.env.TELEGRAM_BOT_TOKEN);

bot.start((ctx) => ctx.reply("Hello! I am running on PlayNHost."));

// Without this, an error in one command stops the whole bot.
bot.catch((err, ctx) => {
  console.error(`Error while handling update ${ctx.update.update_id}:`, err);
});

// launch() only returns when the bot stops, so the ready line goes in its callback.
bot.launch(() => console.log(`Logged in as @${bot.botInfo.username}`)).catch((err) => {
  if (err.code === 401) {
    console.log("Telegram did not accept the bot token. Paste the current one from @BotFather, then restart.");
  } else {
    console.error(err);
  }
  process.exit(1);
});

process.once("SIGINT", () => bot.stop("SIGINT"));
process.once("SIGTERM", () => bot.stop("SIGTERM"));

Telegrafs eigene Beispiele lesen process.env.BOT_TOKEN. Das Panel gibt deinem Code den Token als TELEGRAM_BOT_TOKEN und außerdem als BOT_TOKEN, TOKEN, TELEGRAM_TOKEN und TELOXIDE_TOKEN, sodass diese Beispiele ohne Änderungen laufen. Die Zeile Logged in as @your_bot sorgt dafür, dass der Chip zu Online in Telegram wechselt.

Wenn der Token falsch ist

In unserem Test schlug Telegrafs bot.launch() mit einem gefälschten Token mit einem TelegramError fehl, dessen err.code 401 ist. Als Name und Nachricht ausgegeben, sieht er so aus:

Error: 401: Unauthorized

Der Name erscheint als Error, weil Telegrafs Fehlerklasse keinen eigenen Namen setzt. Telegraf wiederholt einen abgelehnten Token nicht: bot.launch() schlägt sofort fehl, ebenso bei einem Bot ganz ohne Token (401: Bot Token is required). Der Bot oben fängt beides ab und gibt stattdessen Telegram did not accept the bot token. Paste the current one from @BotFather, then restart. aus, und das Panel zeigt über der Console den Hinweis Telegram hat deinen Bot-Token nicht akzeptiert. Zur Abhilfe sendest du in @BotFather /mybots, wählst deinen Bot, dann API Token und kopierst den Token erneut. Klicke auf der Seite Bot im Bereich Telegram auf Token ersetzen, füge ihn ein, klicke auf Token speichern und dann auf Jetzt neu starten.

Was du über Telegraf auf einem Server wissen solltest

  • Releases: Das neueste Telegraf ist 4.16.3, veröffentlicht am 29. Feb. 2024. Version 4.16.0 (25. Feb. 2024) brachte die Bot API 7.0 und 7.1 von Telegram; Telegrams eigenes Changelog steht bei Bot API 10.3 (24. Aug. 2026). Das GitHub-Repository wurde zuletzt am 24. Sep. 2026 gepusht. In unserem Test wurde 4.16.3 unter Node.js 22 normal installiert und gestartet.
  • Die Bereitschaftszeile gehört in den launch()-Callback. bot.launch() kehrt erst zurück, wenn der Bot stoppt, ein console.log nach await bot.launch() wird also nie ausgegeben, solange er läuft. Seit 4.16.0 nimmt launch() einen Callback entgegen, den Telegraf aufruft, sobald Telegram den Token akzeptiert hat, mit gefülltem bot.botInfo.
  • Ein Fehler in einem Befehl stoppt den Bot, wenn du bot.catch nicht setzt. Telegrafs Standard-Handler gibt Unhandled error while processing mit dem Update aus und wirft den Fehler erneut, was das Polling beendet, sodass der Prozess stoppt. Unser Panel startet einen abgestürzten Bot innerhalb von etwa einer Minute neu, bis dahin ist er aber offline. Mit bot.catch, wie oben, wird der Fehler ausgegeben und der Bot läuft weiter.
  • Jedes Update hat 90 Sekunden. Ein Update, dessen Handler länger brauchen, wird als Fehler gemeldet (die Option handlerTimeout, standardmäßig 90.000 ms), der dann an bot.catch geht. Übergib new Telegraf(token, { handlerTimeout: ... }) für längere Aufgaben.
  • Ein am Bot gesetzter Webhook wird für dich entfernt. bot.launch() ohne die Option webhook ruft deleteWebhook auf, bevor es pollt, und lässt wartende Nachrichten stehen, außer du übergibst dropPendingUpdates: true. bot.launch({ webhook: ... }) braucht eine öffentliche HTTPS-Adresse, die diese Tarife noch nicht enthalten: Nutze das einfache bot.launch(). Umzug von einem Webhook-Host: So ziehst du einen Telegram-Bot zu PlayNHost um.
  • Eine andere Kopie des Bots stoppt diese. Bei 409 Conflict (derselbe Token pollt woanders) wirft Telegrafs Polling einen Fehler, statt es erneut zu versuchen. Das Panel zeigt Dein Bot läuft auch noch woanders: Stoppe die Kopie auf deinem PC oder bei deinem alten Host. Siehe Telegram-Bot-Fehler 409 Conflict beheben. Beim Polling werden Netzwerkfehler, 429 und Telegrams eigene 5xx-Fehler nach der von Telegram verlangten Wartezeit wiederholt, oder nach 5 Sekunden.
  • Node.js-Version: Telegraf 4.16.3 verlangt Node.js 12.20 oder 14.13.1 und neuer. Die Laufzeitumgebung im Bereich Code bietet Node.js 20, 22 (recommended), 24, 25 und 26 an.
  • Speicherlimit: Das Startskript setzt NODE_OPTIONS=--max-old-space-size auf 80 Prozent des Speichers deines Tarifs, damit der Rest des Prozesses Platz hat. Details zum Node.js-Startskript: So hostest du einen Node.js-Discord-Bot.

Auf einem Linux-VPS selbst hosten

Unter Debian 12 oder 13 oder Ubuntu 24.04 reicht das Paket der Distribution für Telegraf (Debian 12 liefert Node.js 18.20, Debian 13 liefert 20.19, Ubuntu 24.04 liefert 18.19):

sudo apt update
sudo apt install nodejs npm
node --version

Lege einen Benutzer für den Bot an, kopiere deine Dateien und installiere die Pakete:

sudo useradd --system --create-home --home-dir /opt/mybot mybot
sudo cp package.json index.js /opt/mybot/
sudo chown -R mybot: /opt/mybot
cd /opt/mybot && sudo -u mybot npm install --omit=dev

Halte den Token aus deinem Code heraus, in einer Datei, die nur root lesen kann:

sudo sh -c 'echo "TELEGRAM_BOT_TOKEN=123456789:your-token" > /etc/mybot.env'
sudo chmod 600 /etc/mybot.env

Erstelle /etc/systemd/system/mybot.service:

[Unit]
Description=Telegraf Telegram bot
Wants=network-online.target
After=network-online.target

[Service]
User=mybot
WorkingDirectory=/opt/mybot
EnvironmentFile=/etc/mybot.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Starte ihn jetzt und bei jedem Systemstart und verfolge dann seine Ausgabe:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f

Restart=always startet den Bot nach einem Absturz oder einem process.exit(1) neu. systemctl stop mybot sendet SIGTERM, was die process.once-Zeilen in bot.stop() umsetzen. Stoppe vorher jede andere Kopie, sonst antwortet Telegram beiden mit 409 Conflict.

Selbst hosten oder Bot-Tarif

Auf einem VPS, den du selbst verwaltest, kümmerst du dich um:

  • Updates und Sicherheit des Betriebssystems sowie Node.js-Upgrades.
  • npm install nach jeder Änderung, die Service-Datei, die Token-Datei und ihre Berechtigungen.
  • Das Lesen von journalctl, um herauszufinden, warum der Bot gestoppt ist.
  • Backups der Daten des Bots.

Dafür läuft auf einem VPS alles, und du kannst ihm für einen Webhook eine Domain mit HTTPS geben.

Bei einem Bot-Tarif von PlayNHost übernimmt das Panel das für dich:

  • Eine Auswahl der Node.js-Version und npm install, wenn sich package.json, die Lock-Datei oder die Node.js-Version ändern.
  • Der Token wird vor dem Speichern bei Telegram geprüft, verschlüsselt abgelegt und an deinen Code weitergegeben.
  • Neustart des Bots nach einem Absturz. Stürzt er innerhalb einer Minute erneut ab, bleibt er gestoppt, und die Console nennt den Grund.
  • Hinweise über der Console, die die Ursache nennen, wenn Telegram den Token ablehnt, eine andere Kopie läuft oder ein Webhook gesetzt ist, mit einer Schaltfläche Webhook entfernen im Bereich Telegram.
  • Upload, Git-Deploys und Backups direkt im Panel.

Häufige Fragen

Warum wird nach await bot.launch() nichts ausgegeben?

Weil bot.launch() wartet, bis das Polling endet, und das Polling läuft so lange wie der Bot. Code danach läuft erst, wenn der Bot stoppt. Setze Startmeldungen in den Callback, bot.launch(() => ...), und registriere Befehle, bevor du launch() aufrufst.

Kann ich Telegraf weiter nutzen oder sollte ich zu grammY wechseln?

Ein funktionierender Telegraf-4-Bot läuft auf unseren Tarifen unverändert: Zum Hosten musst du nichts ändern. Sein letztes Release stammt vom Februar 2024, für Methoden, die Telegram nach der Bot API 7.1 ergänzt hat, gibt es also keine Telegraf-Abkürzung. grammY 1.46.0 (26. Aug. 2026) unterstützt die Bot API 10.3, und unser Starter-Bot für Node.js nutzt es. Wechsle, wenn du etwas brauchst, das neuer ist als das, was Telegraf bietet.

Mein Telegraf-Bot ist mit 409: Conflict gestoppt. Was nun?

Eine andere Kopie pollt mit demselben Token, oft auf deinem PC oder bei deinem alten Host. Telegraf stoppt, statt es erneut zu versuchen. Das Panel startet ihn innerhalb von etwa einer Minute neu; stoppt er danach innerhalb einer Minute erneut, bleibt er gestoppt. Finde und stoppe die andere Kopie, oder erstelle in @BotFather einen neuen Token und füge ihn mit Token ersetzen ein.

Kann ich Telegraf mit Bun betreiben?

Ja. Wähle bei der Bestellung Bun statt Node.js: Unsere Seite zum Telegram-Bot-Hosting listet Telegraf dafür auf. Die Schritte auf dieser Seite gelten für Node.js.

Bereit, deinen Telegraf-Bot rund um die Uhr laufen zu lassen? Die Tarife findest du bei Telegram-Bot-Hosting.

Läuft dein Bot schon woanders? Zieh ihn zu uns um

UNSERE NEUESTEN BLOGS