atsim-db
v6.0.0
Published
Uma database simples baseada em JSON para Node.js - sem SQLite, sem compilação nativa
Maintainers
Readme
🤖 ATSIM-DB - Database para Discord.js
Uma database simples e otimizada para bots Discord.js - sem SQLite, sem compilação nativa!
✨ Características Especiais para Discord
- 🤖 Feito para Discord.js - funções específicas para bots
- 👥 Sistema de usuários completo - moedas, XP, levels, daily rewards
- 🏰 Configurações por servidor - prefix personalizado, canais, auto-role
- 🏆 Rankings automáticos - top moedas e levels
- ⚡ Cache inteligente - performance otimizada
- 💾 Backup automático - seus dados sempre seguros
- 📦 Zero dependências - apenas JavaScript puro
📥 Instalação
npm install atsim-db🚀 Uso Rápido no seu Bot
const { Client, GatewayIntentBits } = require('discord.js');
const db = require('atsim-db');
const client = new Client({
intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent]
});
client.on('messageCreate', async (message) => {
if (message.author.bot) return;
const prefix = db.getPrefix(message.guild.id);
if (!message.content.startsWith(prefix)) {
// Adicionar XP por mensagem
const xpResult = db.addXP(message.author.id, 5);
if (xpResult.levelUp) {
message.reply(`🎉 Parabéns! Você subiu para o **Level ${xpResult.newLevel}**!`);
}
return;
}
const args = message.content.slice(prefix.length).split(' ');
const command = args.shift().toLowerCase();
if (command === 'coins') {
const user = db.getUser(message.author.id);
const coins = user?.coins || 0;
message.reply(`💰 Você tem **${coins}** moedas!`);
}
});📚 API Completa
Operações Básicas
get(key)
Busca um valor na database.
const valor = db.get('minha_chave');set(key, value)
Define um valor na database.
db.set('nome', 'João');
db.set('config', { theme: 'dark', lang: 'pt' });delete(key)
Remove uma chave da database.
db.delete('chave_antiga'); // retorna true se removidoSistema de Usuários
getUser(userId)
Busca dados completos de um usuário.
const user = db.getUser('123');
// Retorna: { id: '123', coins: 50, created_at: '...', last_seen: '...' }addCoins(userId, amount)
Adiciona moedas a um usuário.
const totalCoins = db.addCoins('user123', 50); // retorna total após adiçãosetUser(userId, userData)
Define dados personalizados para um usuário.
db.setUser('user123', {
name: 'João',
level: 5,
inventory: ['sword', 'potion']
});getAllUsers()
Lista todos os usuários.
const users = db.getAllUsers(); // Array com todos os usuáriosUtilitários
getStats()
Obtém estatísticas da database.
const stats = db.getStats();
console.log(stats);
// {
// total_users: 10,
// total_keys: 25,
// database_size: 2048,
// created_at: '2024-01-01T00:00:00.000Z',
// last_updated: '2024-01-01T12:00:00.000Z'
// }backup(path)
Cria backup manual.
db.backup('./meu_backup.json'); // retorna true se sucesso🔧 Configuração Avançada
const AtsimDB = require('atsim-db');
// Instância personalizada
const customDB = new AtsimDB({
dbPath: './custom_database.json',
backupPath: './custom_backup.json',
autoBackup: true // padrão: true
});
customDB.set('test', 'valor');📁 Estrutura dos Dados
A database é salva como JSON com a seguinte estrutura:
{
"users": {
"user123": {
"id": "user123",
"coins": 150,
"created_at": "2024-01-01T00:00:00.000Z",
"last_seen": "2024-01-01T12:00:00.000Z"
}
},
"data": {
"minha_chave": "meu_valor",
"config": { "theme": "dark" }
},
"created_at": "2024-01-01T00:00:00.000Z",
"last_updated": "2024-01-01T12:00:00.000Z"
}💾 Backup Automático
Por padrão, a ATSIM-DB cria um backup automático antes de cada escrita:
- Arquivo principal:
database.json - Backup automático:
database.backup.json
⚡ Exemplos Práticos
Bot de Discord com Sistema de Moedas
const db = require('