Déclaration de transparence : je suis Antonin Courtadon, fondateur d'ACLClouds.
Votre bot tourne sur votre ordinateur, mais il s'arrête dès que vous fermez le terminal ou éteignez la machine. La solution la plus rapide est un hébergement gratuit. La question utile est ailleurs : que peut-on faire avec, et combien de temps tient le gratuit ?
Cet article répond à ces deux questions. Il prend pour exemple l'offre gratuite d'ACLClouds, dont je connais les chiffres, et il explique comment vérifier n'importe quel hébergeur avant de s'engager.
Ce que « 24/7 » veut dire concrètement
Un bot est un programme qui reste connecté à Discord et attend les événements : un message, un nouveau membre, une commande slash. Il ne fonctionne que tant que son processus tourne. Pour qu'il reste en ligne, il faut trois choses :
- un processus qui démarre ;
- un processus qui survit aux plantages et aux pics de mémoire ;
- un créneau d'hébergement encore valide.
Le troisième point est celui qu'on oublie. Beaucoup d'offres gratuites sont limitées dans le temps. Quand le créneau expire sans renouvellement, le bot s'arrête, quel que soit le code.
Les chiffres de l'offre gratuite ACLClouds
Voici les valeurs de l'offre gratuite de bot Discord, telles qu'elles sont au moment où j'écris. Vérifiez-les sur la page du bot avant de vous engager.
- 1 bot
- 315 Mo de RAM
- 0,25 vCPU
- 715 Mo de stockage
- Envois jusqu'à 100 Mo
- 4 jours gratuits, renouvelables gratuitement depuis la page du bot. Le renouvellement est possible dans les 2 jours qui précèdent l'expiration, ou une fois le bot suspendu.
Chaque bot dispose de son propre accès SFTP (port 2222, identifiant bot- suivi de 8 caractères), d'une carte pour le token Discord, d'une console avec les journaux, et d'une détection automatique du fichier de démarrage. Les images Node.js et Python incluent ffmpeg, yt-dlp et deno, utiles si votre bot lit de l'audio ou télécharge des médias.
Ces valeurs sont modestes. 315 Mo suffisent pour un bot de modération, un bot d'accueil, un bot de tickets ou un bot utilitaire avec quelques commandes. Elles ne suffisent pas pour un bot qui met en cache des milliers de membres, charge un modèle d'IA volumineux ou transcode de la vidéo en boucle.
Tableau : quoi vérifier avant de choisir
| Critère | Pourquoi c'est important | Offre gratuite ACLClouds |
|---|---|---|
| Durée et renouvellement | Un créneau expiré arrête le bot sans prévenir | 4 jours, renouvelable depuis la page du bot |
| RAM | Les bots Node.js et Python grossissent avec le cache | 315 Mo |
| Processeur | Boucles longues, traitement d'images ou d'audio | 0,25 vCPU |
| Stockage | Journaux, fichiers téléchargés, caches | 715 Mo |
| Taille d'envoi | Code, ressources et dépendances passent par le panneau | Jusqu'à 100 Mo |
| Accès aux fichiers | Corriger sans tout redéployer | SFTP, port 2222, un compte par bot |
| Journaux | Pour comprendre un plantage à 3 h du matin | Journaux et console par bot |
| Fichier de démarrage | Un point d'entrée non trouvé fait perdre du temps | Détection automatique |
| Passage à une offre payante | Éviter de tout migrer si le bot grandit | Offres payantes : 1 à 4 vCPU par bot selon l'offre |
Si un hébergeur ne vous donne pas ces chiffres, demandez-les avant de déployer. Un hébergeur honnête les affiche sur sa page d'offres.
Pas à pas : déployer un bot discord.py
Le principe est le même pour discord.js. Voici un bot minimal qui répond « pong » à la commande !ping.
1. Créer l'application dans le portail développeur Discord. Dans la section Bot, générez le token et copiez-le. Ne le collez jamais dans le code, un dépôt Git ou un message. Activez aussi Message Content Intent : sans lui, message.content arrive vide.
2. Écrire le bot (fichier bot.py) :
import os import discord intents = discord.Intents.default() intents.message_content = True client = discord.Client(intents=intents) @client.event async def on_ready(): print(f"Connecté en tant que {client.user}") @client.event async def on_message(message: discord.Message): if message.author.bot: return if message.content.strip() == "!ping": await message.channel.send("pong") client.run(os.environ["DISCORD_TOKEN"]) Et un fichier requirements.txt contenant discord.py>=2.3,<3.
3. Tester sur votre ordinateur. Sous Linux ou macOS : export DISCORD_TOKEN="votre-token", puis python bot.py. Quand le terminal affiche « Connecté en tant que... », tapez !ping sur le serveur de test.
4. Envoyer le bot sur l'hébergement. Dans le tableau de bord ACLClouds :
- créez un bot (l'offre gratuite en inclut un) ;
- envoyez vos fichiers par le panneau ou en SFTP, sur le port 2222 ;
- collez le token dans la carte du token Discord. Le panneau refuse une valeur qui ressemble à un nom de variable, par exemple le texte
DISCORD_TOKENtapé à la place du token ; - vérifiez le fichier de démarrage (
bot.pyouindex.js) ; - lancez le bot et ouvrez l'onglet journaux.
N'envoyez ni node_modules, ni environnement virtuel, ni fichier .env. Restez dans les 100 Mo d'envoi et les 715 Mo de stockage.
5. Lire les journaux. Le premier démarrage est celui où les erreurs apparaissent. Erreurs fréquentes :
| Message | Cause probable | Solution |
|---|---|---|
| Erreur d'intents privilégiés | Message Content Intent désactivé | Activez-le dans le portail, puis redémarrez |
LoginFailure / token invalide | Token incorrect ou réinitialisé | Recopiez le token dans la carte |
ModuleNotFoundError | Dépendances absentes | Vérifiez que requirements.txt est envoyé |
| Le bot redémarre en boucle | Exception au démarrage | Lisez la première ligne de la trace, pas la dernière |
Garder le bot en ligne
Le créneau gratuit expire. Notez la date de démarrage et renouvelez depuis la page du bot dans la fenêtre prévue : dans les 2 jours avant l'expiration, ou une fois le bot suspendu. Un bot non renouvelé s'arrête, même si son code est parfait.
Gardez aussi votre code hors de l'hébergeur, dans un dépôt Git privé. Vous pourrez redéployer en quelques minutes si quelque chose casse.
Limites à connaître
- Un bot gratuit n'est pas un service sur lequel compter sans entretien : il dépend du renouvellement et des limites de l'offre.
- 315 Mo de RAM et 0,25 vCPU sont peu. Écrivez votre code pour ces limites, ou prenez une offre supérieure.
- 715 Mo de stockage suffisent tant que vos journaux tournent. Un bot qui écrit des journaux sans rotation finira par remplir le disque.
- Le renouvellement est de votre responsabilité.
Quand passer à une offre payante
Passez à une offre payante quand le bot est présent sur plusieurs serveurs et répond toute la journée, quand il lui faut plus de 315 Mo de RAM, quand vous ajoutez des tâches de fond ou un tableau de bord web, ou quand d'autres personnes dépendent de lui. Sur ACLClouds, les offres payantes fixent le nombre de vCPU par bot : Starter 1, Pro 2, Advanced 3, Business 4. Les tarifs se trouvent sur la page des offres.
Si vous avez besoin d'un serveur complet plutôt que d'un bot, nos VPS Linux démarrent à 8 Go de RAM et 2 vCPU (voir l'article suivant de cette série).
Questions fréquentes
Un hébergement de bot gratuit est-il vraiment gratuit ?
Oui, dans ses limites. L'offre ACLClouds donne un bot avec 315 Mo de RAM et 0,25 vCPU pour 4 jours, renouvelables gratuitement depuis la page du bot. Gratuit ne veut pas dire sans surveillance : c'est le renouvellement qui maintient le bot en ligne.
Mon bot peut-il tourner 24 h/24 sur l'offre gratuite ?
Il tourne tant que le créneau est valide et que vous le renouvelez dans la fenêtre prévue. Une disponibilité continue sans renouvellement suppose une offre payante ; vérifiez les conditions avant de faire dépendre un service de votre bot.
Pourquoi mon bot est-il hors ligne après quelques jours ?
La cause la plus fréquente est un créneau expiré non renouvelé. La deuxième est un dépassement de mémoire. Les journaux indiquent laquelle.
Dois-je activer l'intention « contenu des messages » ?
Oui si votre bot lit le texte des messages (commandes préfixées, par exemple). Vous l'activez dans le portail développeur Discord. C'est une règle de Discord, pas de l'hébergeur.
Puis-je passer plus tard à une offre payante ?
Oui. Gardez votre code dans Git : le passage devient un changement de configuration, pas une réécriture.
Pour aller plus loin
Consultez la page de l'offre de bot sur https://aclclouds.com/fr/ et, pour la version anglaise, https://aclclouds.com/en/.
Antonin Courtadon, fondateur d'ACLClouds · https://aclclouds.com


