Un bot Telegram ne demande presque rien — sauf d'être toujours là
Un bot Telegram en Python consomme 80 MB de RAM et 1 % de CPU au repos. Même avec 10 000 utilisateurs actifs, on reste sous 1 GB. Le vrai enjeu n'est pas la puissance : c'est la disponibilité. Un bot qui héberge votre support client ou vos notifications de monitoring ne peut pas se permettre 3 heures d'arrêt parce que le VPS mutualisé d'à côté a saturé l'hyperviseur.
Sur un Apex (8 GB, 4 vCores Ryzen 9), vous faites tourner un bot Python, sa base PostgreSQL, un Redis pour les files de messages — et il vous reste de la marge pour trois autres projets. C'est le cas d'usage où notre plan d'entrée de gamme est objectivement surdimensionné, et c'est tant mieux.
Webhook ou polling ?
Deux modes pour recevoir les messages :
- Polling (
getUpdates) : le bot interroge Telegram toutes les secondes. Simple, fonctionne derrière n'importe quel NAT, mais ajoute ~1 s de latence et gaspille des requêtes. - Webhook : Telegram pousse chaque message en HTTPS vers votre serveur. Latence quasi nulle, charge nulle au repos. C'est le mode production — et il exige un serveur avec une IP publique stable et un certificat TLS. Autrement dit : un VPS.
import telebot
bot = telebot.TeleBot(TOKEN)
bot.set_webhook(url="https://bot.mondomaine.fr/tg")Avec Caddy en reverse proxy, le certificat Let's Encrypt se renouvelle tout seul. Telegram n'accepte que les ports 443, 80, 88 et 8443 pour les webhooks.
Docker + systemd : le combo qui ne tombe pas
docker run -d --name monbot --restart unless-stopped \
-v /srv/bot:/app monbot:latestAjoutez un healthcheck Docker qui relance le conteneur si la boucle asyncio se fige, et un timer systemd qui vérifie chaque minute que le webhook répond. Avec cela, la disponibilité de votre bot rejoint celle de notre infrastructure — 99,99 % mesurés sur nos monitors publics.
Sécurité du token
Le token BotFather donne le contrôle total du bot. Ne le committez jamais : passez-le en variable d'environnement Docker ou dans un fichier .env exclu de git. Si vous soupçonnez une fuite, /revoke chez BotFather en génère un nouveau instantanément — les webhooks à mettre à jour ensuite.
Monter en charge
Le jour où votre bot dépasse les 30 messages/seconde (limite Telegram par bot), la solution n'est pas un plus gros VPS mais l'architecture : file Redis + workers multiples. Un Apex absorbe cette architecture sans problème.