NUEVO 📢 Oferta de lanzamiento limitada: ¡hasta un 70% de descuento en tu primer mes, en todos los juegos!Ver planes

Cómo usar una base de datos con tu bot de Discord

Hosting de bots de DiscordUpdated Oct 22, 20263 min read

Un bot que recuerda cosas, como niveles, avisos o ajustes por servidor, necesita un sitio donde guardarlas. Tu plan de bots incluye una base de datos. También puedes usar un archivo como SQLite, que no necesita configuración pero es más difícil de compartir entre dos bots.

Crea la base de datos

  1. Abre tu servidor en el panel y haz clic en Bases de datos en el menú de la izquierda.
  2. Haz clic en Base de datos nueva, elige el tipo, añade una etiqueta como bot-data y haz clic en Crear base de datos.
  3. Haz clic en la base de datos para ver el host, el puerto, el nombre de la base de datos, el usuario y la contraseña. Mira Cómo usar bases de datos con tu servidor para ver la página completa.

Mantén los datos fuera de tu código

Pon los datos de conexión en un archivo que lea tu código, como .env, y no subas ese archivo a git. En Files, crea .env:

DB_HOST=your-host
DB_PORT=3306
DB_NAME=your-database
DB_USER=your-user
DB_PASSWORD=your-password

Node.js (mysql2 y dotenv)

Añade mysql2 y dotenv a package.json y después:

require('dotenv').config();
const mysql = require('mysql2/promise');

const pool = mysql.createPool({
  host: process.env.DB_HOST,
  port: Number(process.env.DB_PORT),
  database: process.env.DB_NAME,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
});

async function main() {
  await pool.query('CREATE TABLE IF NOT EXISTS warnings (id INT AUTO_INCREMENT PRIMARY KEY, user_id VARCHAR(32), reason TEXT)');
  const [rows] = await pool.query('SELECT COUNT(*) AS n FROM warnings');
  console.log('warnings stored:', rows[0].n);
}
main();

Python (aiomysql)

Añade aiomysql y python-dotenv a requirements.txt y después:

import os
import aiomysql
from dotenv import load_dotenv

load_dotenv()

async def get_pool():
    return await aiomysql.create_pool(
        host=os.environ["DB_HOST"], port=int(os.environ["DB_PORT"]),
        db=os.environ["DB_NAME"], user=os.environ["DB_USER"],
        password=os.environ["DB_PASSWORD"], autocommit=True,
    )

Conviene saber

  • Usa un pool de conexiones, no una conexión nueva para cada comando.
  • Pasa siempre lo que escriba el usuario como parámetros de la consulta, nunca uniendo texto dentro del SQL.
  • Incluye la base de datos en tus backups: Cómo crear, descargar y restaurar backups.
  • Si el bot no puede conectarse, comprueba el host y el puerto con la página de la base de datos y que la contraseña no tenga un espacio de más.

¿Ya lo tienes en otro proveedor? Trae tu servidor con nosotros

CREA TU SERVIDOR DE JUEGOS
¿LISTO PARA EMPEZAR?

Ahorra hasta un 30% en tu nuevo servidor de juegos.
Rendimiento premium, activación instantánea y una fiabilidad inigualable al mejor precio.

NUESTROS ÚLTIMOS BLOGS