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)
@KaleoJS
Copy link

KaleoJS commented Jul 21, 2019

Boa noite,
Teria algum código ou comando no lowdb. Que faça com que o bot importe os dados salvos para o canal no discord?

@Yumatsu
Copy link

Yumatsu commented Aug 14, 2019

Boa noite,
Teria algum código ou comando no lowdb. Que faça com que o bot importe os dados salvos para o canal no discord?

Sim, tens como mas seria meio difícil fazer isso. ou seja, podes usar o message.channel.sendCode() que ele ira enviar o codigo da JSON que foi salva .

@phgrandi
Copy link

Boa noite,
Teria algum código ou comando no lowdb. Que faça com que o bot importe os dados salvos para o canal no discord?

Sim, tens como mas seria meio difícil fazer isso. ou seja, podes usar o message.channel.sendCode() que ele ira enviar o codigo da JSON que foi salva .

é so usar

let valor = db.get('servidor1').find({id: "1111111"}).value().id
console.log(valor)

O PR esqueceu que precisa do .** no final

@phgrandi
Copy link

Boa noite,
Teria algum código ou comando no lowdb. Que faça com que o bot importe os dados salvos para o canal no discord?

let valor = db.get('servidor1').find({id: "1111111"}).value().id
message.channel.send(valor)

@Ahosall
Copy link

Ahosall commented Feb 28, 2020

Boa noite, estou tentando usar o guild.id mas não está funcionando ja tentei com o client mas ele retorna undefined, qual command q eu devo usar ?

@phgrandi
Copy link

Boa noite, estou tentando usar o guild.id mas não está funcionando ja tentei com o client mas ele retorna undefined, qual command q eu devo usar ?

message.guild.id

@The-Matthew
Copy link

Boa noite, estou tentando usar o guild.id mas não está funcionando ja tentei com o client mas ele retorna undefined, qual command q eu devo usar ?

Opa, sei que ja passou um bom tempo, mas se ainda quiser ainda saber a solução, é so tentar trocar o seu Discord.js pra uma 11, invés da 12, comigo foi a mesma coisa ai eu troquei para a versão que o PR usa nos videos dele e pronto funcionou(npm i discord.js@versão --Save)

@tiaaago
Copy link

tiaaago commented May 18, 2020

Então...
Essa versão que ele utiliza vai parar de funcionar, eu também procuro uma solução para isso mas não consigo. :/

@The-Matthew
Copy link

Tenta ler as docs do discord.js, la eles falam certin

@GuilhermeVapo
Copy link

Tem como pegar todos os ID do banco json e importar os dados no canal do servidor discord?

@Ahosall
Copy link

Ahosall commented Apr 12, 2021

Bom, ja faz mt tempo, mas msm assim eu vou mandar a solução ...

No evento guildCreate dele está assim:

client.on("guildCreate", () => {
    db.set(guild.id, []).write()
})

Era só adicionar o parâmetro guild dentro dos parênteses (()) ou você pode colocar somente guild que tabem irá funcionar:

client.on("guildCreate", guild => {
    db.set(guild.id, []).write()
});

Boa noite, estou tentando usar o guild.id mas não está funcionando ja tentei com o client mas ele retorna undefined, qual command q eu devo usar ?

message.guild.id

Se eu colocasse o message ali daria erro, por que o evento guildCreate n estava dentro do evento message.

Mesmo assim, obrigado @http-ph por ter retornado.

Opa, sei que ja passou um bom tempo, mas se ainda quiser ainda saber a solução, é so tentar trocar o seu Discord.js pra uma 11, invés da 12, comigo foi a mesma coisa ai eu troquei para a versão que o PR usa nos videos dele e pronto funcionou(npm i discord.js@versão --Save)

Bom .. na época era usada o discord.js 11.x então isso não funcionaria kkk mas muito obrigado. @The-Matthew.

Obrigado por terem gasto o tempo de vocês, espero poder ajudar outros que possam ter o mesmo problema que eu.

@jvjfe
Copy link

jvjfe commented Jul 12, 2021

Olá, o meu está dando este erro , alguém pode de ajudar?
image

@Ahosall
Copy link

Ahosall commented Jul 12, 2021

Uma boa seria você publicar seu erro no Discord da Discloud ...

@jvjfe

@wevertongabriel
Copy link

alguem sabe como criar um comando que nao deixa o usuario criar um perfil no banco de dados se ele ja tiver criado o perfil?

@Ahosall
Copy link

Ahosall commented Aug 31, 2021

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

@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