En cuanto tu bot tiene que recordar algo entre reinicios, necesitas dónde ponerlo. Hay tres respuestas razonables y la equivocada solo se hace evidente más tarde, cuando los datos ya están dentro.
Elegir
| Opción | Buena para | Se rompe cuando |
|---|---|---|
| Un archivo JSON | Ajustes, listas pequeñas, unas decenas de entradas | Se solapan dos escrituras, o el proceso muere a mitad |
| SQLite | Casi todos los bots. Miles de filas, consultas de verdad, un archivo | Escriben varios procesos a la vez |
| MySQL | Bots con sharding, paneles web, datos compartidos con una web | Con nada, pero hay más que montar |
Escribir el archivo entero en cada cambio significa que una caída durante una escritura lo deja cortado o vacío. Está bien para configuración que editas a mano; es mala casa para cualquier cosa que generen los usuarios. Si no queda otra, escribe a un archivo temporal y renómbralo sobre el original: un renombrado es atómico y no puede quedarse a medias.
Pasar de JSON a SQLite
- Añade la librería
better-sqlite3en Node, o el módulosqlite3que viene de serie en Python. No hay servidor que levantar: la base de datos es un archivo junto a tu código. - Crea la tabla igual que lo que ya guardas
Una columna por clave que estabas escribiendo. Mantén los mismos nombres para que el script de migración sea obvio.
- Escribe una importación de una sola vez
Lee el JSON, inserta las filas, y conserva el archivo viejo hasta estar seguro. Borrarlo una semana después no cuesta nada; borrarlo pronto lo cuesta todo.
- Incluye el archivo de base de datos en tus copias
Ahora es la única copia de todo lo que tu bot sabe.
El archivo de datos es la parte de tu bot que no puedes reescribir de memoria. El código lo vuelves a subir desde tu portátil; un año de ajustes de usuarios, no.