NOVO 📢 Oferta de lançamento limitada: até 70% de desconto no seu primeiro mês, em todos os jogos!Ver planos

Como usar um banco de dados com seu bot do Discord

Hospedagem de bot do DiscordUpdated Oct 22, 20263 min read

Um bot que lembra de coisas, como níveis, advertências ou configurações por servidor, precisa de um lugar para guardá-las. O seu plano de bot inclui um banco de dados. Você também pode usar um arquivo como o SQLite, que não exige configuração, mas é mais difícil de compartilhar entre dois bots.

Crie o banco de dados

  1. Abra o seu servidor no painel e clique em Bancos de dados no menu da esquerda.
  2. Clique em Novo banco de dados, escolha o tipo, adicione um rótulo como bot-data e clique em Criar banco de dados.
  3. Clique no banco de dados para ver o host, a porta, o nome do banco, o usuário e a senha. Veja Como usar bancos de dados com o seu servidor para a página completa.

Mantenha os dados fora do seu código

Coloque os dados de conexão em um arquivo que o seu código leia, como o .env, e não faça commit desse arquivo no git. Em Files (arquivos), crie o .env:

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

Node.js (mysql2 e dotenv)

Adicione mysql2 e dotenv ao package.json e depois:

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)

Adicione aiomysql e python-dotenv ao requirements.txt e depois:

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

Bom saber

  • Use um pool de conexões, não uma conexão nova para cada comando.
  • Sempre passe a entrada do usuário como parâmetros da query, nunca juntando texto dentro do SQL.
  • Inclua o banco de dados nos seus backups: Como criar, baixar e restaurar backups.
  • Se o bot não conseguir conectar, confira o host e a porta na página do banco de dados e se a senha não tem um espaço sobrando.

Já tem um em outro lugar? Traga seu servidor para nós

CRIE SEU SERVIDOR DE JOGOS
PRONTO PARA COMEÇAR?

Economize até 30% no seu novo servidor de jogos.
Desempenho premium, ativação instantânea e confiabilidade imbatível por um preço melhor.

NOSSOS ÚLTIMOS ARTIGOS