Éditer les fichiers d'un bot en production est rapide et occasionnellement désastreux. L'habitude ci-dessous coûte une minute et transforme un mauvais changement en un retour arrière de trente secondes plutôt qu'en une soirée.
Que faire
- Testez d'abord en local
Exécutez le changement sur votre machine, avec un bot de test dans un serveur de test. Presque tous les problèmes de déploiement sont des bugs que vous auriez vus en dix secondes en local.
- Copiez les fichiers que vous remplacez
Avant d'envoyer, dupliquez la version actuelle.
index.jsdevientindex.js.bak. C'est votre retour arrière, et l'utiliser demande un clic. - Envoyez, puis redémarrez
Un processus en cours continue d'exécuter le code chargé au démarrage. Éditer un fichier ne change rien avant le redémarrage, et cela piège ceux qui croient que le changement n'a pas marché.
- Surveillez la console la première minute
La plupart des échecs s'annoncent immédiatement. Rester soixante secondes fait la différence entre l'apprendre maintenant et l'apprendre d'un utilisateur.
- Testez précisément ce que vous avez changé
Pas seulement que le bot est en ligne. En ligne et cassé est identique à en ligne et sain depuis la liste des membres.
Une application distincte avec son propre jeton, invitée seulement dans un serveur privé. Cela ne coûte rien, cela tourne sur votre portable, et vous ne déboguez jamais devant un public.
Si votre bot écrit dans un fichier de données au moment où vous l'écrasez, vous pouvez perdre le fichier. Arrêtez, modifiez, démarrez — dans cet ordre — pour tout ce qui touche aux données.
Questions que cela soulève
- Puis-je déployer avec git ?
- Oui, si l'environnement de votre bot dispose de git. Vous faites un pull, puis vous redémarrez. Le flux est le même ; l'étape de copie devient un commit.
- Dois-je réinstaller les dépendances ?
- Seulement si le manifeste a changé. Ajouter une bibliothèque, c'est éditer
package.jsonet redémarrer. - Les utilisateurs remarqueront-ils le redémarrage ?
- Le bot est hors ligne quelques secondes. Les commandes envoyées dans cette fenêtre échouent, elles ne sont pas mises en file.