Aqui está um guia passo a passo para configurar o banco de dados SQLite para o seu bot WhatsApp:
Configuração do Banco de Dados SQLite - Passo a Passo
- Instale a dependência necessária:
bash
npm install sqlite3
- Crie a pasta para o banco de dados (opcional, mas recomendado):
bash
mkdir database
- Inicialize o banco de dados:
O código já inclui a inicialização automática do banco de dados, mas você pode fazê-lo manualmente criando um arquivo chamado
setup-db.js
:javascriptconst sqlite3 = require('sqlite3').verbose(); const path = require('path'); const fs = require('fs'); // Criar pasta do banco de dados se não existir const DB_DIR = path.join(__dirname, 'database'); if (!fs.existsSync(DB_DIR)) fs.mkdirSync(DB_DIR); // Caminho para o arquivo do banco de dados const dbPath = path.join(DB_DIR, 'responses.db'); // Criar e conectar ao banco de dados const db = new sqlite3.Database(dbPath); // Criar tabelas db.serialize(() => { // Tabela de respostas db.run(` CREATE TABLE IF NOT EXISTS responses ( id INTEGER PRIMARY KEY AUTOINCREMENT, query TEXT NOT NULL, response TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); // Tabela de estatísticas (opcional) db.run(` CREATE TABLE IF NOT EXISTS stats ( id INTEGER PRIMARY KEY AUTOINCREMENT, query_count INTEGER DEFAULT 0, response_count INTEGER DEFAULT 0, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); // Inserir registro inicial de estatísticas db.run(`INSERT INTO stats (query_count, response_count) VALUES (0, 0)`); console.log('Banco de dados inicializado com sucesso!'); }); // Fechar a conexão db.close();
- Execute o script de configuração (se criou o arquivo acima):
bash
node setup-db.js
- Verifique a estrutura do banco de dados (opcional):
Você pode instalar uma ferramenta como o SQLite Browser para visualizar o banco de dados:
- Para Windows/Mac: DB Browser for SQLite
- Para Linux:
sudo apt install sqlitebrowser
- Modifique o código principal para usar o caminho correto do banco de dados:
No arquivo principal do seu bot, altere a linha:
Para:javascriptconst dbPath = path.join(__dirname, 'responses.db');
javascriptconst dbPath = path.join(__dirname, 'database', 'responses.db');
- Pré-preencha o banco de dados com perguntas e respostas comuns (opcional):
Crie um arquivo
seed-db.js
:javascriptconst sqlite3 = require('sqlite3').verbose(); const path = require('path'); const dbPath = path.join(__dirname, 'database', 'responses.db'); const db = new sqlite3.Database(dbPath); // Lista de perguntas e respostas frequentes const faqs = [ { query: "qual o horário de funcionamento", response: "Nossos horários são:\n- Segunda a Sexta: 8h às 12h e de 14h às 18h\n- Sábado: 8h às 11h e de 15h às 18h\n- Domingo e Feriado: Fechado" }, { query: "quanto custa banner", response: "📌 Preços dos Banners:\n- 0,60x0,80 = R$38,40\n- 1,00x0,70 = R$56,00\n- 1,20x0,90 = R$86,40\n- 1,50x1,00 = R$120,00\n\nPara outros tamanhos, podemos fazer um orçamento personalizado!" }, { query: "preço cartão de visita", response: "📌 Cartões de visita (Papel cartão brilhoso - 9x5cm):\n- 1000 und. Frente: R$150 | Frente e verso: R$180\n- Prazo: 7-10 dias úteis | Criação de arte: R$30" } // Adicione mais perguntas e respostas conforme necessário ]; // Inserir os dados no banco db.serialize(() => { const stmt = db.prepare("INSERT INTO responses (query, response) VALUES (?, ?)"); faqs.forEach(faq => { stmt.run(faq.query, faq.response); }); stmt.finalize(); console.log(`${faqs.length} perguntas e respostas adicionadas ao banco de dados!`); }); db.close();
- Execute o script para preencher o banco de dados (se criou o arquivo acima):
bash
node seed-db.js
- Teste a conexão com o banco de dados:
Crie um arquivo
test-db.js
:javascriptconst sqlite3 = require('sqlite3').verbose(); const path = require('path'); const dbPath = path.join(__dirname, 'database', 'responses.db'); const db = new sqlite3.Database(dbPath); // Testar consulta db.all("SELECT * FROM responses LIMIT 5", [], (err, rows) => { if (err) { console.error("Erro ao consultar banco de dados:", err); return; } console.log("Primeiras 5 respostas no banco de dados:"); rows.forEach(row => { console.log(`ID: ${row.id}`); console.log(`Pergunta: ${row.query}`); console.log(`Resposta: ${row.response}`); console.log(`Data: ${row.created_at}`); console.log("-------------------"); }); }); db.close();
- Execute o teste:
bash
node test-db.js
- Inicie seu bot WhatsApp:
bash
node index.js
Considerações adicionais:
- Backup periódico: Configure um script para fazer backup do arquivo
responses.db
regularmente:javascriptconst fs = require('fs'); const path = require('path'); // Função para fazer backup do banco de dados function backupDatabase() { const dbPath = path.join(__dirname, 'database', 'responses.db'); const backupDir = path.join(__dirname, 'backups'); // Criar pasta de backups se não existir if (!fs.existsSync(backupDir)) fs.mkdirSync(backupDir); // Nome do arquivo de backup com data const date = new Date().toISOString().replace(/:/g, '-').split('.')[0]; const backupPath = path.join(backupDir, `responses-${date}.db`); // Copiar o arquivo fs.copyFileSync(dbPath, backupPath); console.log(`Backup criado: ${backupPath}`); } // Executar backup backupDatabase();
- Manutenção: Para limpar respostas antigas ou incorretas, você pode usar um administrador SQLite ou adicionar endpoints administrativos ao seu servidor Express.
- Melhoria de pesquisa: A função de pesquisa no banco de dados usa o operador
LIKE
para encontrar correspondências aproximadas. Para melhorar a precisão, você pode implementar algoritmos de similaridade de texto ou usar extensões SQLite para pesquisa de texto completo.
Depois de seguir esses passos, seu bot WhatsApp estará configurado para usar o banco de dados SQLite para armazenar e recuperar respostas automaticamente, reduzindo a necessidade de chamar a API DeepSeek para perguntas repetidas.
Social Media