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
.