Skip to content

Instantly share code, notes, and snippets.

@pedroricardo
Last active December 20, 2021 19:23
Show Gist options
  • Save pedroricardo/10ae51a653a8b1a286e5766f61f41679 to your computer and use it in GitHub Desktop.
Save pedroricardo/10ae51a653a8b1a286e5766f61f41679 to your computer and use it in GitHub Desktop.
Criando Bot Discord #6 - Adicionar Cargos por Reação https://youtu.be/J833mDDFMLQ
const Discord = require("discord.js"); //baixar a lib
const client = new Discord.Client();
const config = require("./config.json");
client.on("ready", () => {
console.log('Olá mundo')
})
client.on('raw', async dados => {
if(dados.t !== "MESSAGE_REACTION_ADD" && dados.t !== "MESSAGE_REACTION_REMOVE") return
if(dados.d.message_id != "566982078625873931") return
let servidor = client.guilds.get("558703169903788057")
let membro = servidor.members.get(dados.d.user_id)
let cargo1 = servidor.roles.get('566986334242340864'),
cargo2 = servidor.roles.get('566986370363686943'),
cargo3 = servidor.roles.get('566986398989549632')
if(dados.t === "MESSAGE_REACTION_ADD"){
if(dados.d.emoji.id === "566966275578789888"){
if(membro.roles.has(cargo1)) return
membro.addRole(cargo1)
}else if(dados.d.emoji.name === "👌"){
if(membro.roles.has(cargo2)) return
membro.addRole(cargo2)
}else if(dados.d.emoji.id === "566966738013388821"){
if(membro.roles.has(cargo3)) return
membro.addRole(cargo3)
}
}
if(dados.t === "MESSAGE_REACTION_REMOVE"){
if(dados.d.emoji.id === "566966275578789888"){
if(membro.roles.has(cargo1)) return
membro.removeRole(cargo1)
}else if(dados.d.emoji.name === "👌"){
if(membro.roles.has(cargo2)) return
membro.removeRole(cargo2)
}else if(dados.d.emoji.id === "566966738013388821"){
if(membro.roles.has(cargo3)) return
membro.removeRole(cargo3)
}
}
})
client.login(config.token);
@otomaiausten
Copy link

Eu suspeitei disso mas não fazia sentido para mim. Ainda estou sem entender o motivo do User ID estar mudando.
Olhei na documentação e esta tudo certo, você pode tirar a verificação de ID, deve funcionar mas ai qualquer um ira poder clicar na reação.

O pior é que eu já tirei. O usuário sem ADM continua impossibilitado de reagir. Se um ADM reagir a mensagem, as trocas de role são aplicadas pra quem executou o comando.

Basicamente tirar a verificaçao por id permite outros usuários reagirem a mensagem, mas não retira a necessidade da permissão de adm :s

@otomaiausten
Copy link

Eu suspeitei disso mas não fazia sentido para mim. Ainda estou sem entender o motivo do User ID estar mudando.
Olhei na documentação e esta tudo certo, você pode tirar a verificação de ID, deve funcionar mas ai qualquer um ira poder clicar na reação.

O pior é que eu já tirei. O usuário sem ADM continua impossibilitado de reagir. Se um ADM reagir a mensagem, as trocas de role são aplicadas pra quem executou o comando.

Basicamente tirar a verificaçao por id permite outros usuários reagirem a mensagem, mas não retira a necessidade da permissão de adm :s

Perdão, na verdade esse deve ser o resultado de outro teste. Quando tiro a verificação por ID a reação é coletada automaticamente sem clicar em nada.

Austen digitou comando para alterar cargo em respostas-0
Austen irá tentar reagir...
User ID: 709959678020550760 
Author ID: 627660912404201474
Austen reagiu a um emote..
Austen Desistiu e está a salvo novamente... bundão!

Isso sem adm.

@YuryRegis
Copy link

Perdão, na verdade esse deve ser o resultado de outro teste. Quando tiro a verificação por ID a reação é coletada automaticamente sem clicar em nada.

Austen digitou comando para alterar cargo em respostas-0
Austen irá tentar reagir...
User ID: 709959678020550760 
Author ID: 627660912404201474
Austen reagiu a um emote..
Austen Desistiu e está a salvo novamente... bundão!

Isso sem adm.

Qual versao do Discord.js vc esta usando ? V11 ou V12 ?

@otomaiausten
Copy link

Qual versao do Discord.js vc esta usando ? V11 ou V12 ?

V12

@YuryRegis
Copy link

YuryRegis commented May 15, 2020

Qual versao do Discord.js vc esta usando ? V11 ou V12 ?

V12

Entendi, eu estou usando o V11 ainda.
Rodei o codigo aqui e não obtive problemas, não descobri ainda porque o numero do User ID esta mudando quando não é um adm.
Se vc descobrir o pq o numero do User ID esta sendo alterado vc mata a charada.

Pela documentação do V12 não era para dar erro, tendo em vista que os parametros continuam os mesmos.

   * Handles an incoming reaction for possible collection.
   * @param {MessageReaction} reaction The reaction to possibly collect
   * @returns {?Snowflake|string}
   * @private
   */
  collect(reaction) {
    /**
     * Emitted whenever a reaction is collected.
     * @event ReactionCollector#collect
     * @param {MessageReaction} reaction The reaction that was collected
     * @param {User} user The user that added the reaction
     */
    if (reaction.message.id !== this.message.id) return null;
    return ReactionCollector.key(reaction);
  }

@otomaiausten
Copy link

Entendi, eu estou usando o V11 ainda.
Rodei o codigo aqui e não obtive problemas, não descobri ainda porque o numero do User ID esta mudando quando não é um adm.
Se vc descobrir o pq o numero do User ID esta sendo alterado vc mata a charada.

Pela documentação do V12 não era para dar erro, tendo em vista que os parametros continuam os mesmos.

   * Handles an incoming reaction for possible collection.
   * @param {MessageReaction} reaction The reaction to possibly collect
   * @returns {?Snowflake|string}
   * @private
   */
  collect(reaction) {
    /**
     * Emitted whenever a reaction is collected.
     * @event ReactionCollector#collect
     * @param {MessageReaction} reaction The reaction that was collected
     * @param {User} user The user that added the reaction
     */
    if (reaction.message.id !== this.message.id) return null;
    return ReactionCollector.key(reaction);
  }

Então, to tentando desvendar aqui, mas logo depois da declaração da constante filter, o ID do usuário já é definido incorretamente. Não muda na verdade. Ele coleta o user.id do bot.

709959678020550760 é o id do bot
627660912404201474 é o id do Austen

por algum motivo, ele só pega o user.id certo quando o austen executa o comando como ADM
(então o problema não é permissão, é a coleta dessa informação).

@YuryRegis
Copy link

YuryRegis commented May 15, 2020

por algum motivo, ele só pega o user.id certo quando o austen executa o comando como ADM
(então o problema não é permissão, é a coleta dessa informação).

Se é o ID do bot coloque como condição do filtro então, acho q deve resolver:

const filter = (reaction, user) =>  return validReactions.includes(reaction.emoji.name) && user.id === author.id && !user.bot;

Você pode tentar com o seu id do bot explicitamente tb

const filter = (reaction, user) =>  return validReactions.includes(reaction.emoji.name) && user.id === author.id && user.id !== '709959678020550760'

@otomaiausten
Copy link

por algum motivo, ele só pega o user.id certo quando o austen executa o comando como ADM
(então o problema não é permissão, é a coleta dessa informação).

Se é o ID do bot coloque como condição do filtro então, acho q deve resolver:

const filter = (reaction, user) =>  return validReactions.includes(reaction.emoji.name) && user.id === author.id && !user.bot;

Você pode tentar com o seu id do bot explicitamente tb

const filter = (reaction, user) =>  return validReactions.includes(reaction.emoji.name) && user.id === author.id && user.id !== '709959678020550760'

Bicho, não funciona de jeito nenhum, mas talvez seja algo com o filter.
Eu peguei uma base simples de reaction response pra testar e teve o mesmo comportamento de não deixar user sem adm reagir. Eu nem alterei nada e nem coloquei execuções depois da reação, só retorno simples. Muito bizarro. Se liga no código:

const Discord = require('discord.js');

module.exports = {
name: "teste11",
category: "teste",
description: "teste",
usage: "=teste",

run: async (client, message, args) => {
  
  let embed = new Discord.MessageEmbed()
  .setDescription(`Escolha o seu emprego, clicando no emoji correspondente.\n\n💻 = Programador\n🖌️ = Designer`)
  .setColor('#03fc7b')
  
  message.channel.send(embed).then(msg => { 

    msg.react('💻').then(() => msg.react('🖌️')) 

    const filter = (reaction, user) => { // Criando um filtro para quem clicou no emoji
      return ['💻', '🖌️'].includes(reaction.emoji.name) && user.id === message.author.id; 
    };
    msg.awaitReactions(filter, { max: 1, time: 60000, errors: ['time']})
      .then(collected => { 
        const reaction = collected.first();
    
        if (reaction.emoji.name === '💻') {
          message.reply('Tchau'); 
        } 
    
       if (reaction.emoji.name === '🖌️') { 
         message.reply('Oi')
                }
            })
      .catch(collected => {
        message.reply('o tempo para escolher excedeu! Tente novamente.');
      });
    })
  }
}

@YuryRegis
Copy link

por algum motivo, ele só pega o user.id certo quando o austen executa o comando como ADM
(então o problema não é permissão, é a coleta dessa informação).

Esse codigo q vc pegou é da versão 12 ja?
Pelo q estou vendo esse erro ta sendo gerado na v12.

Mesmo com esse código vc n consegue capturar a reação?

const filter = (reaction, user) =>  return validReactions.includes(reaction.emoji.name) && user.id === author.id && user.id !== '709959678020550760'

@otomaiausten
Copy link

por algum motivo, ele só pega o user.id certo quando o austen executa o comando como ADM
(então o problema não é permissão, é a coleta dessa informação).

Esse codigo q vc pegou é da versão 12 ja?
Pelo q estou vendo esse erro ta sendo gerado na v12.

Mesmo com esse código vc n consegue capturar a reação?

const filter = (reaction, user) =>  return validReactions.includes(reaction.emoji.name) && user.id === author.id && user.id !== '709959678020550760'

Cara, consegui encontrar o erro, super bizarro.
Tá na permissão ver histórico de mensagens.

Isso pra esse código simples, vou tentar resolver usando aquela outra base e já atualizo.

@YuryRegis
Copy link

Cara, consegui encontrar o erro, super bizarro.
Tá na permissão ver histórico de mensagens.

Isso pra esse código simples, vou tentar resolver usando aquela outra base e já atualizo.

o bot não tinha acesso ao historico de mensagens ou é o usuário que tinha essa restrição ?

@otomaiausten
Copy link

Cara, era isso mesmo; to triste pa carai KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

Era a permissão de ver historico de mensagens que tava negada pro meu user de teste. Isso é estranho pq essa permissão negada impede que o usuário veja mensagens anteriores à data que ele teve acesso ao canal e o bot manda a mensagem na hora...

Esquisito demais, mas era por isso. O código rejeita reações de usuários sem essa permissão.

Obrigado por ter tentado me ajudar e obrigado ainda mais por ter gastado seu tempo com essa palhaçada ASUASHSAUHASUAS

@YuryRegis
Copy link

YuryRegis commented May 15, 2020

Cara, era isso mesmo; to triste pa carai KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

Era a permissão de ver historico de mensagens que tava negada pro meu user de teste. Isso é estranho pq essa permissão negada impede que o usuário veja mensagens anteriores à data que ele teve acesso ao canal e o bot manda a mensagem na hora...

Esquisito demais, mas era por isso. O código rejeita reações de usuários sem essa permissão.

Obrigado por ter tentado me ajudar e obrigado ainda mais por ter gastado seu tempo com essa palhaçada ASUASHSAUHASUAS

Tranquilo, boa sorte com o Bot e o seu mini-game.
ok

@Vainekz
Copy link

Vainekz commented Jul 1, 2020

Faz esse comando pra handler

Pode criar um comando cargo que exibe uma mensagem para ser reagida
Ou usar meu código como base para criar seu próprio handler

const { RichEmbed } = require("discord.js");
const { promptMessage } = require("<diretorio do arquivo/funcoes.js>");

const opcoes = ["🌎","🚀"]  // Supondo que tenha cargo "mundo" e "foguete"

exports.help = {
    name: "cargo"
}

exports.run = async (client, message, args) => {

    const embed = new RichEmbed();
    embed.setTitle("**CARGOS**");
    embed.setColor("RANDOM");
    embed.setDescription("Escolha um cargo clicando na reação correspondente:\n") 
    embed.addField("**Cargos**","🌎 - Mundo \n🚀 - Foguete");
    embed.setTimestamp();

    //Envia mensagem richEmbed
    const m = await message.channel.send(embed);

    //Adiciona reações e aguarda 30 segundos por uma escolha do usuário
    const cargoEscolhido = await promptMessage(m, message.author, 30, opcoes);
    
    if (cargoEscolhido === `🚀`){
        var chave = "Foguete";
    }else if (cargoEscolhido === `🌎`) { 
        var chave = "Mundo"
    } else {
        embed.addField("**CARGO NÃO DEFINIDO**", "Use o comando novamente.");
        m.edit(embed);
        message.delete();  // Apaga mensagem do usuario (comando) para um chat mais limpo
        return m.delete(15000)  // Apaga mensagem enviada (embed)
    }; // retorna nada para caso de emoji diferente
    
//    buscando cargo por nome (também pode buscar por ID)
    var cargo = await message.guild.roles.find(role => role.name.toLowerCase() === chave.toLowerCase());

//   buscando membro
    var member = await message.guild.members.find(member => member.id === message.author.id);

    if (cargo == null) { // Caso não exista o cargo com o valor de chave passado
        embed.addField(`CARGO ${chave.toUpperCase()} NAO ENCONTRADO`)
        m.edit(embed)
        message.delete()
        return m.delete(15000)
    }

    // se o membro ja tiver o cargo selecionado, apague o mesmo
    if (member.roles.some(x => x.name === cargo.name)) {
        member.removeRole(cargo.id)
            .then(member => console.log(`${member.user.username} removeu o cargo ${cargo.name}`))
            .catch(err => console.log(err));
        embed.addField("**\nREMOVIDO**",
            `${member.user.username} removeu o cargo ${cargo.name}\n` +
            `Use o comando \`!cargo\` novamente para adicionar ou remover outro cargo.`);
    } 
   // caso contrario, adicione cargo selecionado
    else {
        member.addRole(cargo.id)
            .then(member => {
                var nome = member.user.username;
                console.log(`${nome} adicionou o cargo ${chave}`);       
             })
            .catch(err => console.error);

        embed.addField("**\nADICIONADO**",
                `${member.user.username} adicionou o cargo ${cargo.name}\n` +
                `Use o comando \`!cargo\` novamente para adicionar ou remover outro cargo.`);
    }
    m.edit(embed);
    message.delete();
    m.delete(40000);
    return 

} // fim exports.run

    

Arquivo funcoes.js

module.exports = {

  promptMessage: async function (message, author, time, validReactions) {
        // Tempo em segundos
        time *= 1000;

        // Reage com cada emoji enviado como parametro
        for (const reaction of validReactions) await message.react(reaction);

        // Permite reações apenas do autor da mensagem, 
        // Filtra apenas emojis enviados pelo parametro.
        const filter = (reaction, user) => validReactions.includes(reaction.emoji.name) && user.id === author.id;

        // Aguarda reação do usuário
        return message
            .awaitReactions(filter, { max: 1, time: time})
            .then(collected => collected.first() && collected.first().emoji.name);
    }

} //fim module.exports

tentei usar esse codigo mas fica dando esse erro: (node:9404) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied options is not an object.
at Message.delete (E:\bagbot\node_modules\discord.js\src\structures\Message.js:501:44)
at Object.exports.run (E:\bagbot\comandos\cargo.js:33:24)
(node:9404) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:9404) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Copy link

ghost commented Sep 14, 2020

alguem sabe como arrumar esse comando para versão 12?

@Dimensionfsu
Copy link

O meu aparece colocar o cargo mas não o retira

@rodrigojoaquim
Copy link

rodrigojoaquim commented Oct 18, 2020

gente o meu codico da erro diz que "client is not defined" e depois da uns comandos estranhos ai eu nao entendo o que se passa

const Discord = require('discord.js');

const bot = new Discord.Client();

const token = 'NzY3Mzk3OTkxMTA2ODcxMjk2.X4xVEg.NfIqTrp8Sy6-xkkkQlwUR0YFBnI';

const config = require('./config.json');

bot.login(token);

bot.on ('ready', () => {
console.log('estou pornto')
})

bot.on('message', msg =>{
if (msg.content === 'odrabot') {
msg.reply('https://tenor.com/view/scrubs-im-going-to-kill-you-gif-3468039')
}
})

bot.on('raw', async dados => {
if(dados.t !== "MESSAGE_REACTION_ADD" && dados.t !== "MESSAGE_REACTION_REMOVE") return
if(dados.d.message_id != "767411280558161960") return

let servidor =client.guilds.get("766720116716077108")
let membro = servidor.members.get(dados.d.user_id)

let vermelho = servidor.roles.get('766737145301172264'),
    azul = servidor.roles.get('766737043610140712'),
    verde = servidor.roles.get('766737106550390794')

if(dados.t === "MESSAGE_REACTION_ADD"){
    if(dados.d.emoji.name === "🔴"){
        if(membro.roles.has(vermelho)) return
        membro.addRole(vermelho)
    }else if(dados.d.emoji.name === "🔵"){
        if(membro.roles.has(azul)) return
        membro.addRole(azul)
    }else if(dados.d.emoji.name === "🟢"){
        if(membro.roles.has(verde)) return
        membro.addRole(verde)
    }
}
if(dados.t === "MESSAGE_REACTION_REMOVE"){
    if(dados.d.emoji.name === "🔴"){
        if(membro.roles.has(vermelho)) return
        membro.addRole(vermelho)
    }else if(dados.d.emoji.name === "🔵"){
        if(membro.roles.has(azul)) return
        membro.addRole(azul)
    }else if(dados.d.emoji.name === "🟢"){
        if(membro.roles.has(verde)) return
        membro.addRole(verde)
    }
}

})
bot.login(config.token);

@YuryRegis
Copy link

YuryRegis commented Oct 19, 2020

gente o meu codico da erro diz que "client is not defined" e depois da uns comandos estranhos ai eu nao entendo o que se passa

const Discord = require('discord.js');

const bot = new Discord.Client();

const token = 'NzY3Mzk3OTkxMTA2ODcxMjk2.X4xVEg.NfIqTrp8Sy6-xkkkQlwUR0YFBnI';

const config = require('./config.json');

bot.login(token);

bot.on ('ready', () => {
console.log('estou pornto')
})

bot.on('message', msg =>{
if (msg.content === 'odrabot') {
msg.reply('https://tenor.com/view/scrubs-im-going-to-kill-you-gif-3468039')
}
})

bot.on('raw', async dados => {
if(dados.t !== "MESSAGE_REACTION_ADD" && dados.t !== "MESSAGE_REACTION_REMOVE") return
if(dados.d.message_id != "767411280558161960") return

Você instanciou o Discord.Client( ) como "bot", basta renomea-lo...

const client = new Discord.Client();

ou usar o nome que você usou na declaração.

let servidor = bot.guilds.get("766720116716077108");    ✔️
let servidor = client.guilds.get("766720116716077108"); ❌

@YuryRegis
Copy link

tentei usar esse codigo mas fica dando esse erro: (node:9404) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied options is not an object.
at Message.delete (E:\bagbot\node_modules\discord.js\src\structures\Message.js:501:44)
at Object.exports.run (E:\bagbot\comandos\cargo.js:33:24)
(node:9404) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:9404) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Pode ser que o seu bot esteja tentando apagar uma mensagem que foi apagada manualmente ou que esta mensagem tenha mais de 15 dias (não é o caso).
Se você não quer que o bot apague as mensagens basta remover as linhas que fazem delete( )

message.delete( );
m.delete( );

@rodrigojoaquim
Copy link

rodrigojoaquim commented Oct 21, 2020

gente o meu codico da erro diz que "client is not defined" e depois da uns comandos estranhos ai eu nao entendo o que se passa
const Discord = require('discord.js');
const bot = new Discord.Client();
const token = 'NzY3Mzk3OTkxMTA2ODcxMjk2.X4xVEg.NfIqTrp8Sy6-xkkkQlwUR0YFBnI';
const config = require('./config.json');
bot.login(token);
bot.on ('ready', () => {
console.log('estou pornto')
})
bot.on('message', msg =>{
if (msg.content === 'odrabot') {
msg.reply('https://tenor.com/view/scrubs-im-going-to-kill-you-gif-3468039')
}
})
bot.on('raw', async dados => {
if(dados.t !== "MESSAGE_REACTION_ADD" && dados.t !== "MESSAGE_REACTION_REMOVE") return
if(dados.d.message_id != "767411280558161960") return

Você instanciou o Discord.Client( ) como "bot", basta renomea-lo...

const client = new Discord.Client();

ou usar o nome que você usou na declaração.

let servidor = bot.guilds.get("766720116716077108");    ✔️
let servidor = client.guilds.get("766720116716077108"); ❌

ja troquei mas nao vai se modar diz sempre: "client.guilds.get is not a function" ou "bot.guilds.get is not a function

"(node:4128) UnhandledPromiseRejectionWarning: TypeError: bot.guilds.get is not a function
at Client. (C:\Users\admin\Desktop\bot\index.js:25:31)
at Client.emit (events.js:315:20)
at WebSocketShard.onMessage (C:\Users\admin\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:295:27)
at WebSocket.onMessage (C:\Users\admin\Desktop\bot\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\admin\Desktop\bot\node_modules\ws\lib\websocket.js:797:20)
at Receiver.emit (events.js:315:20)
at Receiver.dataMessage (C:\Users\admin\Desktop\bot\node_modules\ws\lib\receiver.js:437:14)
at Receiver.getData (C:\Users\admin\Desktop\bot\node_modules\ws\lib\receiver.js:367:17)
at Receiver.startLoop (C:\Users\admin\Desktop\bot\node_modules\ws\lib\receiver.js:143:22)
(node:4128) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4128) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code." repete esta mensagem 4 vezes

@JurgenSiege
Copy link

Queria colocar uma resposta automática quando o usuário usa uma tal reação. Pode me ajudar?

@AnaLaura07
Copy link

Estou fazendo no Repl.it
esta com esse erro :
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:1989) UnhandledPromiseRejectionWarning: TypeError: client.guilds.get is not a function
(node:1989) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)

@lukasantosdepaiva
Copy link

mas ele e da repl.it ou nao
pq eu queria dele

@luizzitow123
Copy link

Esta dando error esse code pra mim --> "TypeError: Cannot read property 'members' of undefined"

é a versão antiga da discord.js '-'

@YuryRegis
Copy link

Queria colocar uma resposta automática quando o usuário usa uma tal reação. Pode me ajudar?

Qual seria a versão da sua biblioteca Discord.Js ?

@luizzitow123
Copy link

gente o meu codico da erro diz que "client is not defined" e depois da uns comandos estranhos ai eu nao entendo o que se passa
const Discord = require('discord.js');
const bot = new Discord.Client();
const token = 'NzY3Mzk3OTkxMTA2ODcxMjk2.X4xVEg.NfIqTrp8Sy6-xkkkQlwUR0YFBnI';
const config = require('./config.json');
bot.login(token);
bot.on ('ready', () => {
console.log('estou pornto')
})
bot.on('message', msg =>{
if (msg.content === 'odrabot') {
msg.reply('https://tenor.com/view/scrubs-im-going-to-kill-you-gif-3468039')
}
})
bot.on('raw', async dados => {
if(dados.t !== "MESSAGE_REACTION_ADD" && dados.t !== "MESSAGE_REACTION_REMOVE") return
if(dados.d.message_id != "767411280558161960") return

Você instanciou o Discord.Client( ) como "bot", basta renomea-lo...

const client = new Discord.Client();

ou usar o nome que você usou na declaração.

let servidor = bot.guilds.get("766720116716077108");    ✔️
let servidor = client.guilds.get("766720116716077108"); ❌

ja troquei mas nao vai se modar diz sempre: "client.guilds.get is not a function" ou "bot.guilds.get is not a function

"(node:4128) UnhandledPromiseRejectionWarning: TypeError: bot.guilds.get is not a function
at Client. (C:\Users\admin\Desktop\bot\index.js:25:31)
at Client.emit (events.js:315:20)
at WebSocketShard.onMessage (C:\Users\admin\Desktop\bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:295:27)
at WebSocket.onMessage (C:\Users\admin\Desktop\bot\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\admin\Desktop\bot\node_modules\ws\lib\websocket.js:797:20)
at Receiver.emit (events.js:315:20)
at Receiver.dataMessage (C:\Users\admin\Desktop\bot\node_modules\ws\lib\receiver.js:437:14)
at Receiver.getData (C:\Users\admin\Desktop\bot\node_modules\ws\lib\receiver.js:367:17)
at Receiver.startLoop (C:\Users\admin\Desktop\bot\node_modules\ws\lib\receiver.js:143:22)
(node:4128) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:4128) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code." repete esta mensagem 4 vezes

tente client.guilds.cache.get() ou bot.guilds.cache.get()

@Gamer-234
Copy link

O meu está dando esse erro, alguém sabe como resolve?

(node:3637) UnhandledPromiseRejectionWarning: TypeError: membro.removeRole is not a function
(node:3637) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async > function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled > promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode).(rejection id: 1)
(node:3637) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

@YuryRegis
Copy link

O meu está dando esse erro, alguém sabe como resolve?

(node:3637) UnhandledPromiseRejectionWarning: TypeError: membro.removeRole is not a function

Então amigo. O código que eu escrevi foi baseado na versão 11 da livraria DIscord.js. Você precisa adaptar o código para a versão que você esteja usando que, imagino eu, ser a versão 12.
Veja, o erro está dizendo "membro.removeRole" não é uma função. Se você olhar na documentação da v12, irá notar que agora, o método está dentro da propriedade roles de um member (não mais diretamente do member) e que este método agora é chamado de remove e é este o método que você deve usar para remover roles na v12. Logo o código correto, segundo a livraria na versão 12, deveria ser:

membro.roles.remove(role, [motivo])

@Gamer-234
Copy link

O meu está dando esse erro, alguém sabe como resolve?

(node:3637) UnhandledPromiseRejectionWarning: TypeError: membro.removeRole is not a function

Então amigo. O código que eu escrevi foi baseado na versão 11 da livraria DIscord.js. Você precisa adaptar o código para a versão que você esteja usando que, imagino eu, ser a versão 12.
Veja, o erro está dizendo "membro.removeRole" não é uma função. Se você olhar na documentação da v12, irá notar que agora, o método está dentro da propriedade roles de um member (não mais diretamente do member) e que este método agora é chamado de remove e é este o método que você deve usar para remover roles na v12. Logo o código correto, segundo a livraria na versão 12, deveria ser:

membro.roles.remove(role, [motivo])

Ahhh, muito obrigado!! 😁

@NekoChan-157
Copy link

So uma pergunta, eu coloco isso na Index ou crio uma pasta e de registro.js aí eu boto lá?

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