Skip to content

Instantly share code, notes, and snippets.

@pedroricardo
Last active September 3, 2021 02:36
Show Gist options
  • Save pedroricardo/8f9aa804af14156a20c90659ec30c8f6 to your computer and use it in GitHub Desktop.
Save pedroricardo/8f9aa804af14156a20c90659ec30c8f6 to your computer and use it in GitHub Desktop.
Código do tutorial: https://youtu.be/qaArXO_W8kQ - Banco de dados LowDB
const low = require('lowdb')
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('banco.json')
const db = low(adapter)
//criar
db.set('servidor2', [])
//postar
db.get('servidor1').push({
id: "0000000",
nick: "pedro",
avatar: "link.com/avatar.png"
})
//editar
db.get('servidor1').find({id: "1111111"}).assign({nick: "paulo novo"})
//buscar
let valor = db.get('servidor1').find({id: "1111111"}).value()
console.log(valor)
//apagar
db.get('servidor1').remove({id: "1111111"}).write()
const Discord = require("discord.js"); //baixar a lib discord.js
const client = new Discord.Client();
const config = require("./config.json");
const low = require('lowdb') //banco de dados
const FileSync = require('lowdb/adapters/FileSync')
const adapter = new FileSync('banco.json')
const db = low(adapter)
client.on("ready", () => {
console.log('Olá Mundo')
})
client.on("guildCreate", () => {
db.set(guild.id, []).write()
})
client.on("message", async message => {
if(message.author.bot) return;
if(message.channel.type === "dm") return;
if(!message.content.startsWith(config.prefix)) return;
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
const comando = args.shift().toLowerCase();
if(comando === "criar") {
db.get(message.guild.id)
.push({
id: message.author.id,
nick: message.author.username,
avatar: message.author.displayAvatarURL
}).write()
message.channel.send('Perfil criado com sucesso!')
}
if(comando === "editar"){
if(!args[0])return message.channel.send('Você esqeceu do argumento ')
let [novonome] = args
db.get(message.guild.id)
.find({id: message.author.id}).assign({nick: novonome}).write()
message.channel.send('Perfil editado com sucesso!')
}
if(comando === "apagar"){
db.get(message.guild.id).remove({id: message.author.id}).write()
}
});
client.login(config.token)
@wevertongabriel
Copy link

Faça uma verificação no banco de dados, e veja se o usuário já está nele, por exemplo...

// busca o usuário pelo ID do Discord
let user= db.get('Server1').find({id: "1111111111111111"}).value();

// Se o usuário não existe
if (!user) {
  // Registra no banco de dados
} 
// Se existir passa direto

Espero ter ajudado!

Good coding 🤍

@wevertongabriel

Ajudou muito obrigado!!

apenas mudei o "server1" por 'message.guild.id' e o "111111111" por 'message.author.id' e funcionou muito bem. Obrigado denovo <3

@Ahosall
Copy link

Ahosall commented Aug 31, 2021

Por nada ^^

@wevertongabriel
Copy link

Por nada ^^

Oii denovo kkkkk, eu queria ajuda com mais um problema, logico que se for te atrapalhar não precisa responder, mais se poder eu ficaria mt feliz ^^. BASICAMENTE, EU QUERIA QUE CADA VEZ QUE ENTRASSE OU ALGUEM SAISSE DO SERVIDOR, ELE AUTOMATICAMENTE ATUALIZASSE NO BANCO DE DADOS A QUANTIDADE DE MEMBROS NO SERVIDOR. ATE CONSSEGUI FAZER COM QUE QUANDO ALGUEM ENTRASSE ELE ATUALIZASSE COM ESSE CODIGO.

client.on('message', message => { let server= db.get(message.guild.id).find({nomeServidor: message.guild.name}).value(); if(message.type !== "GUILD_MEMBER_JOIN")return if(!server)return if(server){ if(message.type === "GUILD_MEMBER_JOIN"){ db.get(message.guild.id) .find({nomeServidor: message.guild.name}).assign({membros: message.guild.memberCount}).write() console.log(A quantidade de membros do servidor: ${message.guild.name} foi atualizado) } } });

JA QUE QUANDO ALGUEM ENTRA NO SERVIDOR A FUNCAO DE MENSSAGE EXIBE UM TYPE = "GUILD_MEMBER_JOIN".
O GRANDE PROBLEMA E QUE A FUNÇAO MESSAGE NAO EXIBE NADA QUANDO UM MEMBRO SAI DO SERVIDOR, AI TENTEI ESSE.

client.on('guildMemberRemove', (member) => { let server= db.get(member.guild.id).find({nomeServidor: member.guild.name}).value(); if(!server)return if(server){ if(member){ db.get(member.guild.id) .find({nomeServidor: member.guild.name}).assign({membros: member.guild.memberCount}).write() console.log(A quantidade de membros do servidor: ${member.guild.name} foi atualizado) } } });

POREM NAO DEU CERTO, O CODIGO NA DA NENHUM ERRO MAIS TAMBEM NAO ATUALIZA A QUANTIDADE DE MEMBROS E TAMBEM NAO EXIBE NADA. PODE ME AJUDAR?

@Ahosall
Copy link

Ahosall commented Sep 1, 2021

Bom eu recomendo fortemente você ler as docs do discordJS e entrar no servidor da Discloud lá o suporte é mais rápido e pode ter gente mais disponível.

Resolvendo seu problema hmmmm .... vamos fzr uma modificação bem simples ... ao invés de vc usar o message.type === "GUILD_MEMBER_JOIN" por que não cria um evento novo que nem fez com o guildMemberRemove ?

slg nisso

// Evento de mensagem
client.on('message', message => {
  let server = db.get(message.guild.id).find({nomeServidor: message.guild.name}).value(); 
  // if (message.type !== "GUILD_MEMBER_JOIN") return
  if (!server) return 
  /**
  if (server) { 
    if (message.type === "GUILD_MEMBER_JOIN") {
      db.get(message.guild.id).find({ nomeServidor: message.guild.name }).assign({ membros: message.guild.memberCount }).write()
      console.log(`A quantidade de membros do servidor: ${message.guild.name} foi atualizado`)
    } 
  } 
  */
});

// Quando um membro entrar
client.on('guildMemberAdd', (member) => {
  let server = db.get(member.guild.id).find({ nomeServidor: member.guild.name }).value();
  if (!server) return
  if (server){ 
    if (member) { 
      db.get(member.guild.id).find({ nomeServidor: member.guild.name }).assign({ membros: member.guild.memberCount }).write()
      console.log(`A quantidade de membros do servidor: ${member.guild.name} foi atualizado`)
    }
  }
});

// Quando sair
client.on('guildMemberRemove', (member) => {
  let server = db.get(member.guild.id).find({ nomeServidor: member.guild.name }).value();
  if (!server) return
  if (server){ 
    if (member) { 
      db.get(member.guild.id).find({ nomeServidor: member.guild.name }).assign({ membros: member.guild.memberCount }).write()
      console.log(`A quantidade de membros do servidor: ${member.guild.name} foi atualizado`)
    }
  }
});

Se mesmo assim não der certo, entre em contato comigo pelo discord (está no meu perfil no github ^^) ou acesse o discord da Discloud.

Good coding 🤍

@wevertongabriel

@wevertongabriel
Copy link

Bom eu recomendo fortemente você ler as docs do discordJS e entrar no servidor da Discloud lá o suporte é mais rápido e pode ter gente mais disponível.

Resolvendo seu problema hmmmm .... vamos fzr uma modificação bem simples ... ao invés de vc usar o message.type === "GUILD_MEMBER_JOIN" por que não cria um evento novo que nem fez com o guildMemberRemove ?

slg nisso

// Evento de mensagem
client.on('message', message => {
  let server = db.get(message.guild.id).find({nomeServidor: message.guild.name}).value(); 
  // if (message.type !== "GUILD_MEMBER_JOIN") return
  if (!server) return 
  /**
  if (server) { 
    if (message.type === "GUILD_MEMBER_JOIN") {
      db.get(message.guild.id).find({ nomeServidor: message.guild.name }).assign({ membros: message.guild.memberCount }).write()
      console.log(`A quantidade de membros do servidor: ${message.guild.name} foi atualizado`)
    } 
  } 
  */
});

// Quando um membro entrar
client.on('guildMemberAdd', (member) => {
  let server = db.get(member.guild.id).find({ nomeServidor: member.guild.name }).value();
  if (!server) return
  if (server){ 
    if (member) { 
      db.get(member.guild.id).find({ nomeServidor: member.guild.name }).assign({ membros: member.guild.memberCount }).write()
      console.log(`A quantidade de membros do servidor: ${member.guild.name} foi atualizado`)
    }
  }
});

// Quando sair
client.on('guildMemberRemove', (member) => {
  let server = db.get(member.guild.id).find({ nomeServidor: member.guild.name }).value();
  if (!server) return
  if (server){ 
    if (member) { 
      db.get(member.guild.id).find({ nomeServidor: member.guild.name }).assign({ membros: member.guild.memberCount }).write()
      console.log(`A quantidade de membros do servidor: ${member.guild.name} foi atualizado`)
    }
  }
});

Se mesmo assim não der certo, entre em contato comigo pelo discord (está no meu perfil no github ^^) ou acesse o discord da Discloud.

Good coding 🤍

@wevertongabriel

Primeiramente muito obrigado mais uma vez por me responder. ^^ Então, eu ja testei esse codigo tambem e por algum motivo simplesmente não funciona, não entendo pois o codigo em si faz sentido, porem ele não retorna nada. Estou ate agora tentando resolver isso porem nada ;-;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment