Préparer et téléverser votre bot Discord¶
Votre service de bot Discord exécute le code que vous téléversez. Zaroz fournit l'environnement d'exécution, le stockage persistant et la supervision du processus qui garde votre bot en ligne ; vous fournissez les fichiers source du bot. Cette page détaille ce qui se passe à chaque démarrage, où vos fichiers doivent être placés et ce qui diffère entre les runtimes Node.js, Python, Bun, Deno, Java et Autre.
Comment se déroule un démarrage¶
À chaque démarrage de votre bot (le premier lancement, un redémarrage après un plantage ou un redéploiement), le conteneur effectue les mêmes trois opérations, toutes depuis le dossier de stockage de votre bot :
- Se placer dans le dossier de stockage. C'est là que résident vos fichiers téléversés et c'est le répertoire de travail pour tout le reste.
- Exécuter l'étape d'installation de votre runtime (par exemple
npm installpour Node.js). Certains runtimes n'ont pas d'étape d'installation ; voir Ce qui s'exécute pour chaque runtime. - Exécuter votre commande de démarrage (par exemple
node index.js). C'est le processus qui reste actif et se connecte à Discord.
Si le processus se termine, le conteneur le relance et le cycle recommence. C'est pourquoi une dépendance cassée ou une mauvaise commande de démarrage se manifeste par une boucle de plantage plutôt que par une erreur ponctuelle.
Où placer vos fichiers¶
Vos fichiers doivent se trouver à la racine, pas dans un sous-dossier.
Ouvrez l'onglet Fichiers de votre service pour les téléverser depuis le navigateur, ou connectez-vous en SFTP avec les identifiants qui y sont affichés. Dans les deux cas, la racine du stockage de votre bot est /, affichée comme / Home dans le gestionnaire de fichiers. Votre arborescence doit ressembler à ceci :
/ ← la racine, affichée comme "/ Home"
├── index.js ← votre fichier de démarrage, directement à la racine
├── package.json
├── package-lock.json
└── src/
└── ...
Pourquoi vous voyez aussi /data
Dans le conteneur, ce même dossier est monté sur /data, si bien que les journaux et messages d'erreur de votre bot affichent souvent des chemins comme /data/index.js. C'est le même endroit : la racine / de l'onglet Fichiers est /data dans le conteneur. Téléversez vers /, et votre bot le lit comme /data.
N'imbriquez pas votre projet dans un sous-dossier
L'étape d'installation et la commande de démarrage s'exécutent à la racine de votre stockage. Si vos fichiers se retrouvent un niveau plus bas, par exemple /mon-bot/index.js, la commande node index.js s'exécute à la racine, ne trouve rien, et le bot entre en boucle de plantage.
C'est l'un des problèmes les plus fréquents que nous voyons, et il survient généralement lorsqu'une archive .zip s'extrait dans un dossier portant le nom du projet. Dans ce cas, ouvrez le dossier extrait dans l'onglet Fichiers, sélectionnez tout son contenu et remontez-le d'un niveau pour que les fichiers se trouvent directement dans /.
Téléverser une archive zip
Vous pouvez téléverser un .zip et l'extraire depuis l'onglet Fichiers. Après extraction, vérifiez que index.js (ou votre fichier de démarrage) se trouve à la racine et non dans un dossier imbriqué. Ne téléversez pas node_modules/ : il est réinstallé sur le serveur et ne fait que ralentir l'envoi.
Ce qui s'exécute pour chaque runtime¶
Vous avez choisi un runtime lors de la configuration. Il détermine l'image de base, l'étape d'installation et la commande de démarrage par défaut. Vous pouvez consulter et modifier le runtime et la commande de démarrage actuels à tout moment depuis l'onglet Configuration.
- Étape d'installation :
npm install --if-present(ignorée s'il n'y a pas depackage.json). - Commande de démarrage par défaut :
node index.js. - Les dépendances proviennent de votre
package.json. Incluez unpackage-lock.jsonpour des installations reproductibles. - Commandes de démarrage alternatives courantes :
npm start,node bot.js,node src/index.js.
- Étape d'installation :
pip install .lorsqu'unpyproject.tomlest présent, sinonpip install -r requirements.txt. - Commande de démarrage par défaut :
python main.py. - Listez toutes vos dépendances dans
requirements.txtavec des versions épinglées. Le cachepipest conservé sur votre volume, donc les dépendances inchangées ne sont pas retéléchargées au démarrage suivant. - Commandes de démarrage alternatives courantes :
python bot.py,python -m bot.
- Étape d'installation :
bun install --production. - Commande de démarrage par défaut :
bun run index.js. - Les dépendances proviennent de votre
package.json. - Commandes de démarrage alternatives courantes :
bun start,bun run src/index.ts.
- Étape d'installation : aucune. Deno télécharge et met en cache vos imports lors de la première exécution.
- Commande de démarrage par défaut :
deno run --allow-all main.ts. --allow-allest le choix par défaut le plus simple. Restreignez-le (par exemple--allow-net --allow-env) une fois que vous savez quelles permissions votre bot utilise réellement.
- Étape d'installation : aucune. Il n'y a pas d'étape de compilation sur le serveur : téléversez donc un
.jardéjà compilé. - Commande de démarrage par défaut :
java -jar bot.jar. - Renommez votre jar en
bot.jar, ou modifiez la commande de démarrage dans l'onglet Configuration pour correspondre à votre nom de fichier, par exemplejava -jar mon-bot-1.0.jar.
- Étape d'installation : aucune automatiquement. Nous rendons
start.shexécutable et le lançons. - Commande de démarrage par défaut :
./start.sh. - Vous obtenez un shell simple : Alpine avec l'image Légère, Debian avec l'image Standard. Installez ce dont vous avez besoin depuis votre script, avec
apksous Alpine ouapt-getsous Debian.
Versions des runtimes
Les versions majeures sont fixes : Node 22, Python 3.13, Java 21, ainsi que les versions actuelles de Bun et Deno. Le choix de compatibilité (Légère ou Standard) change la base du système d'exploitation, pas la version du langage. Consultez Choisir la bonne compatibilité pour savoir quand opter pour Standard.
Choisir votre commande de démarrage¶
Lors de la configuration, vous choisissez l'un des préréglages propres à votre runtime ou saisissez une commande personnalisée. Si vous avez conservé la valeur par défaut et que votre fichier de démarrage porte un autre nom, le bot ne démarrera pas.
Pour la modifier plus tard, ouvrez l'onglet Configuration, mettez à jour la commande de démarrage et redémarrez. La nouvelle commande prend effet au démarrage suivant.
La commande de démarrage est exécutée par un shell à la racine de votre stockage : la syntaxe shell habituelle fonctionne donc. Limitez-vous à un seul processus au premier plan qui reste actif — ne le mettez pas en arrière-plan avec &, sinon le conteneur considérera que le bot s'est arrêté et le relancera.
Gardez le jeton de votre bot en sécurité¶
Le jeton de votre bot est un mot de passe. Toute personne qui le détient peut contrôler votre bot.
- N'écrivez jamais le jeton en dur dans un fichier que vous pourriez versionner dans Git ou partager dans un ticket de support.
- Lisez-le depuis une variable d'environnement ou un fichier de configuration qui reste sur le serveur.
- Si un jeton est exposé, réinitialisez-le immédiatement dans le portail développeur Discord sous Bot → Reset Token, puis mettez-le à jour sur le serveur.
Ne collez pas votre jeton dans un chat ou une capture d'écran
Le support ne vous demandera jamais le jeton de votre bot. Si vous avez besoin d'aide, décrivez plutôt l'erreur affichée dans l'onglet Console : elle n'a pas besoin de contenir le jeton.
Ce qui survit à un redémarrage¶
Tout ce qui se trouve dans votre dossier de stockage est persistant. Cela survit aux redémarrages, aux reprises après plantage et aux redéploiements. Cela comprend :
- Vos fichiers source téléversés.
- Les dépendances installées (
node_modules/, le cachepip, le cache de modules de Deno). - Tous les fichiers que votre bot écrit, comme une base SQLite ou une configuration JSON.
Comme les dépendances installées persistent, un démarrage qui échoue à mi-parcours peut laisser un node_modules/ corrompu (ou __pycache__/, un environnement virtuel incomplet, etc.). Si un bot continue d'échouer à l'installation après que vous avez corrigé la cause initiale :
- Ouvrez l'onglet Fichiers.
- Supprimez
node_modules/(ou le répertoire corrompu équivalent). - Redémarrez. L'étape d'installation le reconstruit de zéro.
Observer le démarrage¶
Ouvrez l'onglet Console pour suivre un démarrage en temps réel. Vous verrez l'étape d'installation s'exécuter, puis votre commande de démarrage, puis les journaux de votre propre bot. Lorsqu'un problème survient, l'erreur se trouve ici : un module manquant, une erreur de syntaxe, un jeton invalide ou une commande de démarrage pointant vers un fichier inexistant.
Corrigez le problème dans vos fichiers, redémarrez, et le conteneur prend en compte la modification au démarrage suivant.
Étapes suivantes¶
- Choisir la bonne compatibilité : quand l'image Légère ne suffit pas et comment en changer.
- Surveiller une commande Minecraft depuis Discord : un exemple de bot complet utilisant l'API Zaroz.