Ein Telegram-Bot muss dauerhaft laufen, um Nachrichten zu beantworten. Läuft er auf Ihrem Laptop, geht er offline, sobald Sie den Deckel schließen. Ein kleiner VPS löst das für wenige Dollar im Monat. Diese Anleitung betreibt einen Python-Bot als systemd-Dienst, der beim Booten startet und nach einem Absturz neu startet.
Welche VPS-Größe?
Die meisten Bots sind genügsam. Ein Tarif mit 1 bis 2 vCPUs und 2 GB RAM reicht völlig aus. Empfohlene Tarife finden Sie unter Telegram-Bot-Hosting.
Schritt 1: Ein Bot-Token besorgen
Sprechen Sie in Telegram mit @BotFather, senden Sie /newbot, wählen Sie einen Namen und einen Benutzernamen, der auf bot endet, und kopieren Sie das Token. Behandeln Sie es wie ein Passwort, denn jeder, der es besitzt, kann den Bot steuern.
Schritt 2: Den Server vorbereiten
sudo apt update && sudo apt install -y python3 python3-venv
sudo adduser --disabled-password --gecos "" botuser
sudo -iu botuser
mkdir ~/mybot && cd ~/mybot
python3 -m venv .venv
. .venv/bin/activate
pip install python-telegram-bot
Schritt 3: Einen kleinen Bot schreiben
# bot.py
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes
async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("Hello! I am running on a VPS.")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
Polling benötigt keine offenen Ports, Sie müssen also weder eine Domain noch einen Webhook einrichten.
Schritt 4: Das Token sicher speichern
echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env
Schritt 5: Als Dienst ausführen
Zurück als Admin-Benutzer, erstellen Sie /etc/systemd/system/mybot.service:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot/.env
ExecStart=/home/botuser/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f
Aktualisieren und überwachen
- Aktualisieren Sie den Code und führen Sie dann
sudo systemctl restart mybotaus. - Prüfen Sie die Logs mit
journalctl -u mybot -n 100. - Nutzen Sie Backups, wenn der Bot Daten speichert.
Polling oder Webhook?
Polling ist am einfachsten und für die meisten Bots ausreichend. Verwenden Sie einen Webhook, wenn Sie bei hohem Volumen sofortige Zustellung benötigen, wofür eine Domain und HTTPS nötig sind. Siehe Hosting mit Nginx und HTTPS.