chapterjs start fait tourner votre bot dans chaque serveur où il se trouve, après que chapterjs build l’a préparé. C’est ce que lance le script start de votre projet, sur la machine qui héberge votre bot :
chapterjs build, pas vos fichiers tels qu’ils sont maintenant.
L’option
--processes, les variables d’environnement et les codes de sortie sont dans la référence du CLI.Ce qui change par rapport au dev
Ce dont elle a besoin
Une valeur : le token de votre bot..env
.env : vous donnez BOT_TOKEN dans ses réglages (souvent appelés « variables d’environnement » ou « secrets »). Les deux fonctionnent, et le vrai environnement l’emporte quand les deux sont là. Sans lui :
✗ The build of your bot can't run any more: ..., suivi de Run "chapterjs build" again: it says what to fix.
Ce qu’elle vérifie
Le processus que vous lancez vérifie tout une fois, pour tous les processus du bot, avant que quoi que ce soit ne soit en ligne :- Le token. Un token refusé arrête la commande :
✗ Discord refused the bot token. ... - Les intents privilégiés dont vos fichiers ont besoin. Rien n’attend en production : le message est une erreur et la commande s’arrête.
- Les commandes, enregistrées pour tout le monde, seulement quand elles ont changé depuis le dernier démarrage depuis ce dossier :
✓ Commands updated for everyone. Rien n’est envoyé sinon, et rien n’est affiché. - Combien de sessions le bot peut encore démarrer aujourd’hui. Discord le limite, et réinitialise le token d’un bot qui dépasse, alors ChapterJS s’arrête avant :
Un second bot pour le développement
Nous recommandons deux applications dès le départ : un bot pour le développement sur votre ordinateur, un bot pour la production. Discord n’a aucun moyen de séparer ce qu’un bot fait sur votre ordinateur de ce qu’il fait pour tout le monde : ses commandes, sa présence, ses réglages et ses limites sont ceux du bot, dans chaque serveur à la fois.
.env de votre ordinateur. La production garde le token de la première application.
.env on your computer
chapterjs dev affiche le lien) et activez-y les mêmes intents privilégiés quand vos fichiers en ont besoin : chapterjs dev dit lesquels. À partir de là, les deux bots n’ont rien en commun :
- votre serveur de test n’affiche que les commandes du bot de dev, exactement comme vos fichiers les déclarent, et jamais une en double ;
- la présence, les intents privilégiés et le token de production restent tels quels pendant que vous essayez des choses ;
- Discord compte ce que fait chaque bot de son côté : les sessions qu’il peut démarrer par jour, les requêtes qu’il peut envoyer.
Un seul bot pour le dev et la production
Un bot en production etchapterjs dev peuvent aussi partager un token. Ajoutez DEV_GUILD_ID à côté de BOT_TOKEN en production aussi, avec la même valeur que sur votre ordinateur :
.env
chapterjs dev sur le même bot pendant qu’il est en ligne pour tout le monde :
- ce qui se passe sur votre serveur de test n’est géré que par
chapterjs dev; - ce qui se passe partout ailleurs, et en messages privés, n’est géré que par
chapterjs start.
DEV_GUILD_ID, la production fait tourner chaque serveur, votre serveur de test compris. Avec, le nombre de serveurs le laisse de côté, et le dit :
-
Les commandes. Votre serveur de test affiche les commandes de tout le monde, comme n’importe quel serveur.
chapterjs devne les ajoute pas une seconde fois : il n’y enregistre que les commandes nouvelles ou différentes dans votre projet. Utilisée sur votre serveur de test, une commande fait toujours tourner le code de votre ordinateur. Pendant que vous modifiez une commande déjà en production, votre serveur de test l’affiche en double (la vôtre, et celle que tout le monde a), etchapterjs devvous le dit une fois :Une commande pour tout le monde appartient au bot, pas à un serveur : Discord ne donne aucun moyen de la cacher dans un serveur, et la retirer la retirerait pour tout le monde. C’est pourquoi deux bots sont le moyen de ne jamais voir cela. -
La présence.
src/presence.tsest envoyé par les deux, pour un seul bot : Discord ne dit pas laquelle des deux il affiche. Celle que vous essayez sur votre ordinateur peut être vue par tout le monde. - Le Developer Portal. Un intent privilégié que vous activez pour essayer un événement est activé pour la production aussi, et réinitialiser le token arrête la production.
-
Les limites. Les sessions qu’un bot peut démarrer par jour et les requêtes qu’il peut envoyer sont comptées pour le bot : ce qu’utilise
chapterjs devest pris à la production.
Gros bots
Discord découpe les gros bots en plusieurs connexions, appelées shards. ChapterJS demande à Discord combien il en faut et les ouvre tout seul. Quand il y en a beaucoup, il les répartit aussi sur plusieurs processus, pour que votre bot utilise chaque processeur de la machine. Vous le voyez sur la première ligne :- Rien à configurer. Un processus est utilisé pour 4 shards, jamais plus que le nombre de processeurs de votre machine. Un bot de moins de quelques milliers de serveurs tourne dans un seul processus.
- Un processus qui s’arrête tout seul est relancé, et ses serveurs reviennent en un instant. Les autres ne s’en aperçoivent pas. Un processus qui a tourné plus d’une minute repart immédiatement ; un qui tombe sans cesse attend un peu plus à chaque fois, jusqu’à une minute.
- Arrêter le bot les arrête tous, proprement. Quand Discord refuse le bot pour de bon dans un processus, chaque processus s’arrête et la commande se termine avec le code de sortie 1.
start est refusée :
Ce que cela veut dire pour votre code
Chaque processus a sa propre mémoire. Une variable d’un processus n’est pas vue par les autres :- L’événement
readytourne une fois dans chaque processus, avec les serveurs de ce processus. guildset tout ce dont votre bot se souvient sont ceux du processus.- Les messages privés sont tous gérés par le premier processus.
Chaque processus tourne sur la même machine. Répartir un bot sur plusieurs machines n’est pas encore disponible.
Arrêter
Appuyez surCtrl+C, ou laissez votre hébergeur arrêter le processus. Le bot se déconnecte proprement et passe hors ligne immédiatement :
Déployer
Mettre votre bot sur une machine qui reste allumée.
Dépannage
Chaque message, et quoi en faire.