Dès que votre bot doit se souvenir de quelque chose entre deux redémarrages, il vous faut un endroit où le mettre. Il y a trois réponses raisonnables, et la mauvaise ne devient évidente que plus tard, quand les données sont déjà dedans.
Choisir
| Option | Bonne pour | Craque quand |
|---|---|---|
| Un fichier JSON | Réglages, petites listes, quelques dizaines d'entrées | Deux écritures se chevauchent, ou le processus meurt en plein milieu |
| SQLite | La plupart des bots. Milliers de lignes, vraies requêtes, un fichier | Plusieurs processus écrivent en même temps |
| MySQL | Bots shardés, tableaux de bord, données partagées avec un site | Rien, mais il y a plus à installer |
Réécrire tout le fichier à chaque changement signifie qu'un plantage pendant une écriture le laisse tronqué ou vide. C'est acceptable pour de la configuration éditée à la main ; c'est un mauvais foyer pour ce que génèrent les utilisateurs. À défaut, écrivez dans un fichier temporaire et renommez-le par-dessus l'original : un renommage est atomique et ne peut pas se faire à moitié.
Passer de JSON à SQLite
- Ajoutez la bibliothèque
better-sqlite3en Node, ou le modulesqlite3intégré en Python. Aucun serveur à lancer : la base est un fichier à côté de votre code. - Créez la table à l'image de ce que vous stockez déjà
Une colonne par clé que vous écriviez. Gardez les mêmes noms pour que le script de migration soit évident.
- Écrivez un import unique
Lisez le JSON, insérez les lignes, gardez l'ancien fichier jusqu'à être sûr. Le supprimer une semaine plus tard ne coûte rien ; le supprimer trop tôt coûte tout.
- Incluez le fichier de base dans vos sauvegardes
C'est désormais la seule copie de tout ce que sait votre bot.
Le fichier de données est la partie de votre bot que vous ne pouvez pas réécrire de mémoire. Le code, vous le renvoyez depuis votre portable ; un an de réglages d'utilisateurs, non.