Blog tecnológico mantido pelos alunos da disciplina de Aplicações Informáticas (12º Ano) da Escola Secundaria José Gomes Ferreira em Lisboa.
sábado, 7 de novembro de 2020
[IDS] Docker: O que é?
sexta-feira, 6 de novembro de 2020
Discord Bot em Node.js - Parte 4
Passo 4 — Implementando o comando Sum
Agora,irás estender o programa implementando o comando "! sum". O comando irá tomar qualquer número de argumentos e adicioná-los juntos, antes de retornar a soma de todos os argumentos ao usuário.
Se o bot Discord ainda estiver em execução, podes parar - lo com CTRL + C.
Abra o arquivo index.js novamente:
- nano index.js
Para começar a implementar o comando "! sum", usarás um bloco else-if. Depois de verificar o nome do comando ping, ele irá verificar se o nome do comando é igual a "sum". Usamos um bloco else-if já que apenas um comando irá processar de cada vez, então se o programa corresponder ao nome de comando "ping", ele não precisa verificar o comando "sum". Adiciona as seguintes linhas destacadas ao arquivo:
...
if (command === "ping") {
const timeTaken = Date.now() - message.createdTimestamp;
message.reply(`Ping! This message had a latency of ${timeTaken}ms.`);
}
else if (command === "sum") {
}
});
... Podes começar a implementar o código para o comando "sum". O código para o comando "sum" irá entrar dentro do bloco else-if que acabaste de criar. Agora, adiciona o código a seguir:
...
else if (command === "sum") {
const numArgs = args.map(x => parseFloat(x));
const sum = numArgs.reduce((counter, x) => counter += x);
message.reply(`The sum of all the arguments you provided is ${sum}!`);
}
... Usas o método map na lista argumentos para criar uma nova lista usando a função parseFloat em cada item no array args. Isso cria um novo array (atribuído à constante numArgs) no qual todos os itens são números em vez de strings. Isso significa que mais tarde podes encontrar com sucesso a soma dos números adicionando-os.
A segunda linha usa o método reduce na constante numArgs, fornecendo uma função que totaliza todos os elementos na lista. Atribuis a soma de todos os elementos em numArgs à constante. sum.
Em seguida, usas o método reply no objeto message para responder ao comando do usuário com modelo literal, que contém a soma de todos os argumentos que o usuário envia para o bot.
Isso conclui a implementação do comando "sum". Agora, execute o bot usando o comando a seguir (na mesma pasta que index.js):
- node index.js
Agora, podes usar o comando "! sum"” em qualquer canal em que o bot possa visualizar e enviar mensagem.

A seguir está uma versão finalizada do script index.js do bot:
const Discord = require("discord.js");
const config = require("./config.json");
const client = new Discord.Client();
const prefix = "!";
client.on("message", function(message) {
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
const commandBody = message.content.slice(prefix.length);
const args = commandBody.split(' ');
const command = args.shift().toLowerCase();
if (command === "ping") {
const timeTaken = Date.now() - message.createdTimestamp;
message.reply(`Pong! This message had a latency of ${timeTaken}ms.`);
}
else if (command === "sum") {
const numArgs = args.map(x => parseFloat(x));
const sum = numArgs.reduce((counter, x) => counter += x);
message.reply(`The sum of all the arguments you provided is ${sum}!`);
}
});
client.login(config.BOT_TOKEN);Neste passo, melhoraste ainda mais o bot Discord implementando o comando sum.
