NIEUW 📢 Beperkte lanceeractie: tot 70% korting op je eerste maand, voor elke game!Bekijk pakketten

Een database gebruiken met je Discord-bot

Discord-bothostingUpdated Oct 23, 20263 min read

Een bot die dingen onthoudt, zoals levels, waarschuwingen of instellingen per server, heeft een plek nodig om ze te bewaren. Je botpakket bevat één database. Je kunt ook een bestand zoals SQLite gebruiken, dat geen setup nodig heeft maar lastiger te delen is tussen twee bots.

De database aanmaken

  1. Open je server in het panel en klik in het linkermenu op Databases.
  2. Klik op Nieuwe database, kies het type, voeg een weergavenaam toe zoals bot-data en klik op Database aanmaken.
  3. Klik op de database om de host, poort, databasenaam, gebruiker en wachtwoord te zien. Zie Databases gebruiken met je server voor de volledige pagina.

Houd de gegevens uit je code

Zet de verbindingsgegevens in een bestand dat je code leest, zoals .env, en commit dat bestand niet naar git. Maak in Files het bestand .env aan:

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

Node.js (mysql2 en dotenv)

Voeg mysql2 en dotenv toe aan package.json en gebruik dan:

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)

Voeg aiomysql en python-dotenv toe aan requirements.txt en gebruik dan:

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,
    )

Goed om te weten

  • Gebruik een verbindingspool, geen nieuwe verbinding voor elk commando.
  • Geef invoer van gebruikers altijd door als queryparameters, nooit door tekst aan elkaar te plakken in de SQL.
  • Neem de database mee in je backups: Backups maken, downloaden en herstellen.
  • Kan de bot niet verbinden, vergelijk dan de host en poort met de databasepagina en controleer dat het wachtwoord geen losse spatie bevat.

Draait je server al ergens anders? Verhuis hem naar ons

MAAK JE EIGEN GAMESERVER
KLAAR OM TE BEGINNEN?

Bespaar tot 30% op je nieuwe gameserver.
Premium prestaties, directe activatie en ongeëvenaarde betrouwbaarheid voor een betere prijs.

ONZE NIEUWSTE BLOGS