O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Aula Ativa de Javascript/Ruby/RGSS e outras linguagens de programação

Iniciado por Raizen, 22/11/2012 às 13:04

Valeu galera, todas soluções me servem. Vou fazer algo aqui.

Alguém poderia me explicar como essa condição funciona?



Eu estou aprendendo javascript, e estava praticando o que eu aprendi até o momento. Após tentar bastante, consegui fazer uma condição funcionar, mas não entendi muito bem como ela sabia o valor da variável, sendo que eu não coloquei na condição " se a variável n4 for igual a 25 ", foi só colocar o número que funcionou. No javascript funciona sem precisar declarar a variável na condição?

A primeira vez que tentei fiz assim, mas não funcionou. Não está certo assim também?

Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.


Citação de: Raizen online 23/02/2020 às 15:36
Dá uma zoiada aqui: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/Operadores_de_compara%C3%A7%C3%A3o

um = não é operador de comparação, ele está fazendo o n4 ser igual a 25 e não comparando com 25.

Obrigadoo moço Raizen, agora está funcionando e também consegui entender melhor. Ajudou bastante, nunca que ia saber que precisaria de 3 de igualdade, fora as outras informações que vão ajudar muito também, obrigado mais uma vez.
:*-*:
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.

Então, eu tenho aprendido muito em java, e resolvi tentar recriar um novo projeto teste, com o intuito de ver o meu progresso, chegando na parte de criar um game looping pro jogo rodar a 60 fps, mesmo sabendo o funcionamento em partes, ainda é muito confuso.

No meu projeto, uso esse aqui:


No stackoverflow, vi esse aqui:


É bem parecido com o que eu uso, mas não entendi 100%, na stack eles colocaram um try/catch, até onde eu sei, é usado se caso houver algum problema no código.

Qual a diferença entre esses dois? Um é melhor do que o outro, ou funcionam da mesma forma, independente da maneira que foi escrito?

Também queria saber se usar um try/catch faz diferença, pelo que entendi, quando ocorre algum erro na hora que estou programando, ele avisa no console, mas isso faz alguma diferença quando o jogo/aplicação está finalizado digamos assim, ou só é usado no desenvolvimento?

Não sei se aqui pode postar coisas sobre java, mas se puder e alguém tirar essa duvida, ficaria agradecido, claro se não for incomodo da minha parte. :XD:
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.

Boa tarde pessoas! Não sei se pode postar coisas sobre desenvolvimento de bots aqui, mas como é em javascript, imagino que não tenha problema.

Então, queria saber se alguém pode me ajudar com esse código, em parte ele já está funcionando do jeito que quero, que é enviar perguntas para que a pessoa responda, assim ele coleta as respostas e envia para outro canal.

O código é esse:

Spoiler
const Discord = require("discord.js");

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

const questions = ['Escolha um título!', 'Escolha uma descrição!', 'Escolha uma segunda descrição!','Obrigado! Sua sugestão será avaliada.'];

const question = await message.channel.send(questions[0]); 

const filter = msg => msg.author.id === message.author.id; 

const collector = message.channel.createMessageCollector(filter, { time: 150 * 1330 }); 

const answers = []; 

collector.on('collect', msg => { 
  answers.push(msg.content);
  questions.shift();
  if (questions.length <= 0) return collector.stop('done');
  question.edit(questions[0]).catch(error => { 
    console.error(error);
    collector.stop();
  });
  
    var channel = message.guild.channels.cache.find(ch => ch.id === "773593081605914684");
    
    channel.send(`Autor: ${message.author}\nDescrição: ${msg.content = answers[0]}\nDescrição2: ${msg.content = answers[1]}\nDescrição3: ${msg.content = answers[2]}`)
});

}
[close]





E como dá pra ver nas imagens, ele envia cada uma das respostas e as que ainda não foram respondidas ficam indefinidas. Pois bem, o que eu queria fazer é, esperar a pessoa responder todas as perguntas e depois enviar, alguém aí pode me ajudar se possível?
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.

Só mover o trecho que envia as repostas pra dentro da condição de terem acabado as questões:

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

exports.run = async (_, message) => {
    const questions = [
        'Escolha um título!',
        'Escolha uma descrição!',
        'Escolha uma segunda descrição!',
        'Obrigado! Sua sugestão será avaliada.'
    ];

    const question = await message.channel.send(questions[0]);

    const filter = msg => msg.author.id === message.author.id;

    const collector = message.channel.createMessageCollector(filter, { time: 150 * 1330 });

    const answers = [];

    collector.on('collect', msg => {
        answers.push(msg.content);
        questions.shift();
        
        if (questions.length <= 0) {
            var channel = message.guild.channels.cache.find(ch => ch.id === "773593081605914684");
            channel.send(`Autor: ${message.author}\nDescrição: ${msg.content = answers[0]}\nDescrição2: ${msg.content = answers[1]}\nDescrição3: ${msg.content = answers[2]}`)

            return collector.stop('done');
        }

        question.edit(questions[0]).catch(error => {
            console.error(error);
            collector.stop();
        });
    });
}


Dá pra dar uma melhorada na organização e lógica também, por exemplo usar um índice pra passar para a próxima questão ao invés de dar shift no array e separar as coisas em funções:

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

const questions = [
    'Escolha um título!',
    'Escolha uma descrição!',
    'Escolha uma segunda descrição!',
    'Obrigado! Sua sugestão será avaliada.'
];

exports.run = async (_, message) => {
    const questionIndex = 0;
    const question = await message.channel.send(questions[0]);

    const collector = message.channel.createMessageCollector(
        msg => msg.author.id === message.author.id,
        {
            time: 150 * 1330
        }
    );

    const answers = [];

    function sendAnswers() {
        var channel = message.guild.channels.cache.find(
            ch => ch.id === "773593081605914684"
        );

        channel.send(
            `Autor: ${message.author}\n` +
            `Descrição: ${msg.content = answers[0]}\n` +
            `Descrição2: ${msg.content = answers[1]}\n` +
            `Descrição3: ${msg.content = answers[2]}`
        );
    }

    async function editQuestion() {
        try {
            question.edit(questions[questionIndex]);
        } catch (error) {
            console.error(error);
            collector.stop();
        }
    }

    collector.on('collect', msg => {
        answers.push(msg.content);
        questionIndex++;
        
        if (questionIndex == questions.length) {
            sendAnswers();
            return collector.stop('done');
        } else {
            editQuestion();
        }
    });
}
~ Masked

Citação de: Brandt online 25/12/2020 às 22:33
Só mover o trecho que envia as repostas pra dentro da condição de terem acabado as questões:

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

exports.run = async (_, message) => {
    const questions = [
        'Escolha um título!',
        'Escolha uma descrição!',
        'Escolha uma segunda descrição!',
        'Obrigado! Sua sugestão será avaliada.'
    ];

    const question = await message.channel.send(questions[0]);

    const filter = msg => msg.author.id === message.author.id;

    const collector = message.channel.createMessageCollector(filter, { time: 150 * 1330 });

    const answers = [];

    collector.on('collect', msg => {
        answers.push(msg.content);
        questions.shift();
        
        if (questions.length <= 0) {
            var channel = message.guild.channels.cache.find(ch => ch.id === "773593081605914684");
            channel.send(`Autor: ${message.author}\nDescrição: ${msg.content = answers[0]}\nDescrição2: ${msg.content = answers[1]}\nDescrição3: ${msg.content = answers[2]}`)

            return collector.stop('done');
        }

        question.edit(questions[0]).catch(error => {
            console.error(error);
            collector.stop();
        });
    });
}


Dá pra dar uma melhorada na organização e lógica também, por exemplo usar um índice pra passar para a próxima questão ao invés de dar shift no array e separar as coisas em funções:

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

const questions = [
    'Escolha um título!',
    'Escolha uma descrição!',
    'Escolha uma segunda descrição!',
    'Obrigado! Sua sugestão será avaliada.'
];

exports.run = async (_, message) => {
    const questionIndex = 0;
    const question = await message.channel.send(questions[0]);

    const collector = message.channel.createMessageCollector(
        msg => msg.author.id === message.author.id,
        {
            time: 150 * 1330
        }
    );

    const answers = [];

    function sendAnswers() {
        var channel = message.guild.channels.cache.find(
            ch => ch.id === "773593081605914684"
        );

        channel.send(
            `Autor: ${message.author}\n` +
            `Descrição: ${msg.content = answers[0]}\n` +
            `Descrição2: ${msg.content = answers[1]}\n` +
            `Descrição3: ${msg.content = answers[2]}`
        );
    }

    async function editQuestion() {
        try {
            question.edit(questions[questionIndex]);
        } catch (error) {
            console.error(error);
            collector.stop();
        }
    }

    collector.on('collect', msg => {
        answers.push(msg.content);
        questionIndex++;
        
        if (questionIndex == questions.length) {
            sendAnswers();
            return collector.stop('done');
        } else {
            editQuestion();
        }
    });
}


Olá Brandt, muito obrigado, funcionou que é uma beleza, estava a dias tentando fazer isso, e como discord js ainda é bem confuso as vezes, fico empacado fácil.

CitarDá pra dar uma melhorada na organização e lógica também, por exemplo usar um índice pra passar para a próxima questão ao invés de dar shift no array e separar as coisas em funções:

Ainda é algo novo pra mim, mas vou estudar o seu código e tentar usar nos outros comandos do bot. Ah sim, o segundo código deu um erro:



Porém eu vou tentar descobrir o porque do erro, acho que vai ser bom pro meu aprendizado, essa semana tenho visto muitos erros e depois de um tempo consigo entender, e pelo que entendi é algum valor que não pode ser alterado, ou que já foi declarado, espero que seja algo referente a isso, esses erros as vezes me confundem demais.
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.

14/01/2021 às 16:56 #83 Última edição: 14/01/2021 às 16:58 por Crewyvern
Alguém sabe me dizer o que tem de errado nesse comando do bot?

const Discord = require("discord.js");
exports.run = async (_, message) => {
//=======================================================
    const embed = new Discord.MessageEmbed()
      .setColor('RANDOM')
      .setTitle('__COMANDOS DISPONÍVEIS__')
      .setDescription('\n\n**__DIVERSÃO__**\n- =angry\n- =attack\n- =clap\n- =dance\n- =embarassed\n- =gic\n- =hug\n- =hungry\n- =happy\n- =kiss\n- =meme\n- =poke\n- =pout\n- =sad\n- =scared |**em breve**\n- =wink\n**- Para todos os Membros Cadastrados!**\n\n**__JOGOS__**\n- =atnl **em breve**\n\n**__OUTROS__**\n- =imgeneration\n- =image\n- =color\n- =sg\n**- Alguns necessitam de Cargos!**\n\n **__RESTRITOS__**\n- =atr\n- =clear\n **- Apenas para ADMs ou MODs!**\n\n**Para saber como funcionam os comandos consulte, =ex.** ');
    await message.channel.send(embed);
//=======================================================
    const pollTopic = await message.channel.send(message.content.slice(1));
//=======================================================
    await pollTopic.react('UM EMOJI');
//=======================================================
    const filter = (reaction,user) => reaction.emoji.name && user.id === reaction;
//=======================================================
    (collected => {
		const reaction = collected.first();
    if(reaction.emoji.name === 'UM EMOJI'){
      message.channel.send('agag')
    };
//=======================================================
  });
//=======================================================
};


Ao reagir o emoji era para enviar essa mensagem no canal, porém nada acontece, tirando o fato de não mostrar nenhum erro no console. Até o momento estou achando que poderia ser essa parte (const filter = (reaction,user) => reaction.emoji.name && user.id === reaction;), porém já escrevi de tudo após(===), mas nada funciona e nem ao menos mostra um erro.



Só fica nisso aí.
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.

De Js não entendo, mas você viu se o bot tem permissão para ver reações? Nas configurações da API você define com o que ele pode ou não interagir. E ele está mandando outras mensagens normalmente?

Citação de: Corvo online 14/01/2021 às 17:06
De Js não entendo, mas você viu se o bot tem permissão para ver reações? Nas configurações da API você define com o que ele pode ou não interagir. E ele está mandando outras mensagens normalmente?

Ele tem permissão de Administrador. Os outros comandos estão normais, além desse, tenho outros comandos com reações e funcionam bem, mas esse em específico não quer dá sinal de vida nessa parte de jeito nenhum. Já testei algo semelhante com condições e está funcionando, só esse que não.
:T.T:
Mas mesmo assim obrigado Corvo.
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.


Citação de: Corvo online 14/01/2021 às 17:27
E este "UM EMOJI"? Os nomes das reações não precisam estar codificados?

No código tem um emoji que copiei, porém aqui estava dando erro "A mensagem foi deixada em branco.", então escrevi isso no lugar. Eu vi alguns exemplos nesse guia do discord.js, usei um deles que era semelhante ao que eu estou usando, tentei até mudar algumas coisas já que estava funcionando, mas foi pior, surgiram vários erros.
Depressão sem obsessão, pulsos livres da dor, tristeza confusa, felicidade sem sentido, ânimo e desânimo, raiva momentânea e a solidão sempre presente...até que a morte os separe, amém.