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:
- 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.
- Ö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.
- 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.
- Klicke bei Dein Code auf Dateien hochladen und lade deine
package.jsonundindex.jsohnenode_moduleshoch, oder klicke auf Git verbinden. - 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. - Klicke auf Bot starten und öffne die Console. Beim ersten Start installiert npm Telegraf, dann gibt dein Bot
Logged in as @your_botaus und der Chip unter Übersicht wechselt zu Online in Telegram. - 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
| Bibliothek | Version | Speicher nach dem Start | Start bis zur Antwort von Telegram | Installationsgröße |
|---|---|---|---|---|
| Telegraf | 4.16.3 | 60 MB | 0,2 s | 2,7 MB |
| grammY | 1.46.0 | 60 MB | 0,2 s | 3,0 MB |
| node-telegram-bot-api | 2.3.0 | 63 MB | 0,2 s | 2,4 MB |
| Node.js 22 allein, ohne Bibliothek | 22.23.4 | 43 MB | keine | keine |
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, einconsole.lognachawait bot.launch()wird also nie ausgegeben, solange er läuft. Seit 4.16.0 nimmtlaunch()einen Callback entgegen, den Telegraf aufruft, sobald Telegram den Token akzeptiert hat, mit gefülltembot.botInfo. - Ein Fehler in einem Befehl stoppt den Bot, wenn du
bot.catchnicht setzt. Telegrafs Standard-Handler gibtUnhandled error while processingmit 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. Mitbot.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 anbot.catchgeht. Übergibnew Telegraf(token, { handlerTimeout: ... })für längere Aufgaben. - Ein am Bot gesetzter Webhook wird für dich entfernt.
bot.launch()ohne die OptionwebhookruftdeleteWebhookauf, bevor es pollt, und lässt wartende Nachrichten stehen, außer du übergibstdropPendingUpdates: true.bot.launch({ webhook: ... })braucht eine öffentliche HTTPS-Adresse, die diese Tarife noch nicht enthalten: Nutze das einfachebot.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,429und Telegrams eigene5xx-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-sizeauf 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 installnach 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 sichpackage.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.



