Un bot Telegram doit tourner en permanence pour répondre aux messages. Le faire tourner sur votre portable signifie qu’il se déconnecte dès que vous fermez l’écran. Un petit VPS règle le problème pour quelques dollars par mois. Ce guide fait tourner un bot Python comme service systemd afin qu’il démarre au boot et redémarre après un plantage.
Quelle taille de VPS ?
La plupart des bots sont légers. Une offre avec 1 à 2 vCPU et 2 Go de RAM est largement suffisante. Voir l’hébergement de bots Telegram pour les offres suggérées.
Étape 1 : obtenir un jeton de bot
Parlez à @BotFather sur Telegram, envoyez /newbot, choisissez un nom et un nom d’utilisateur se terminant par bot, et copiez le jeton. Traitez-le comme un mot de passe, car toute personne qui le possède peut contrôler le bot.
Étape 2 : préparer le serveur
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
Étape 3 : écrire un petit bot
# 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()
Le polling n’a besoin d’aucun port ouvert, vous n’avez donc pas à configurer de domaine ni de webhook.
Étape 4 : stocker le jeton en sécurité
echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env
Étape 5 : l’exécuter comme un service
De retour en tant qu’utilisateur administrateur, créez /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
Mise à jour et surveillance
- Mettez à jour le code, puis
sudo systemctl restart mybot. - Consultez les journaux avec
journalctl -u mybot -n 100. - Utilisez des sauvegardes si le bot stocke des données.
Polling ou webhook ?
Le polling est le plus simple et convient à la plupart des bots. Utilisez un webhook si vous avez besoin d’une livraison instantanée à fort volume, ce qui exige un domaine et HTTPS. Voir l’hébergement avec Nginx et HTTPS.