NOWOŚĆ 📢 Ograniczona oferta na start: do 70% zniżki na pierwszy miesiąc, na każdą grę!Zobacz plany

Jak używać bazy danych z botem Discord

Hosting botów DiscordUpdated Oct 23, 20263 min read

Bot, który coś zapamiętuje, na przykład poziomy, ostrzeżenia albo ustawienia na serwer, potrzebuje miejsca na te dane. Twój plan dla botów zawiera jedną bazę danych. Możesz też użyć pliku, takiego jak SQLite, który nie wymaga konfiguracji, ale trudniej go współdzielić między dwoma botami.

Utwórz bazę danych

  1. Otwórz serwer w panelu i kliknij Bazy danych w lewym menu.
  2. Kliknij Nowa baza danych, wybierz typ, dodaj etykietę, na przykład bot-data, i kliknij Utwórz bazę danych.
  3. Kliknij bazę danych, żeby zobaczyć host, port, nazwę bazy, użytkownika i hasło. Pełną stronę opisuje Jak używać baz danych z serwerem.

Trzymaj dane poza kodem

Umieść dane połączenia w pliku, który czyta twój kod, takim jak .env, i nie commituj tego pliku do gita. W Files utwórz .env:

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

Node.js (mysql2 i dotenv)

Dodaj mysql2 i dotenv do package.json, a potem:

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)

Dodaj aiomysql i python-dotenv do requirements.txt, a potem:

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

Warto wiedzieć

  • Używaj puli połączeń, a nie nowego połączenia dla każdej komendy.
  • Dane od użytkownika zawsze przekazuj jako parametry zapytania, nigdy łącząc tekst w SQL.
  • Dodaj bazę danych do swoich backupów: Jak tworzyć, pobierać i przywracać backupy.
  • Jeśli bot nie może się połączyć, sprawdź host i port ze stroną bazy danych oraz czy w haśle nie ma zbłąkanej spacji.

Masz już serwer gdzie indziej? Przenieś go do nas

STWÓRZ SWÓJ SERWER GIER
GOTOWY, ABY ZACZĄĆ?

Oszczędź nawet 30% na swoim nowym serwerze gier.
Wydajność premium, natychmiastowa aktywacja i niezawodność bez kompromisów. Wszystko w lepszej cenie.

NASZE OSTATNIE WPISY