https://www.idblanter.com/search/label/Template
https://www.idblanter.com
BLANTERORBITv101

Banco de dados SQLite para o seu bot WhatsApp

quarta-feira, 5 de março de 2025

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

  1. Instale a dependência necessária:
    bash
    npm install sqlite3
  2. Crie a pasta para o banco de dados (opcional, mas recomendado):
    bash
    mkdir database
  3. 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:
    javascript
    const 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();
  4. Execute o script de configuração (se criou o arquivo acima):
    bash
    node setup-db.js
  5. Verifique a estrutura do banco de dados (opcional): Você pode instalar uma ferramenta como o SQLite Browser para visualizar o banco de dados:
  6. Modifique o código principal para usar o caminho correto do banco de dados: No arquivo principal do seu bot, altere a linha:
    javascript
    const dbPath = path.join(__dirname, 'responses.db');
    Para:
    javascript
    const dbPath = path.join(__dirname, 'database', 'responses.db');
  7. Pré-preencha o banco de dados com perguntas e respostas comuns (opcional): Crie um arquivo seed-db.js:
    javascript
    const 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();
  8. Execute o script para preencher o banco de dados (se criou o arquivo acima):
    bash
    node seed-db.js
  9. Teste a conexão com o banco de dados: Crie um arquivo test-db.js:
    javascript
    const 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();
  10. Execute o teste:
    bash
    node test-db.js
  11. Inicie seu bot WhatsApp:
    bash
    node index.js

Considerações adicionais:

  1. Backup periódico: Configure um script para fazer backup do arquivo responses.db regularmente:
    javascript
    const 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();
  2. Manutenção: Para limpar respostas antigas ou incorretas, você pode usar um administrador SQLite ou adicionar endpoints administrativos ao seu servidor Express.
  3. 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.


Author

teufrp
avatar
Atendente Quer consultar o nosso melhor preço para o serviço que está buscando?
Francisco Olá, tudo bem?; Caso precise, só chamar!!
:
Chat WhatsApp