Passo 3 — primeiros comandos do bot
Neste passo, irás criar um bot que possa lidar com comandos de um usuário. Vais implementar o primeiro comando ping
, que irá responder com "pong"
e o tempo necessário para responder ao comando.
Primeiro, precisas detectar e receber quaisquer mensagens que os usuários enviam para que tu possas processar quaisquer comandos. Usando o método on
no cliente Discord, o Discord irá te enviar uma notificação sobre novos eventos. O método on
leva dois argumentos: o nome de um evento para esperar e uma função a executar cada vez que esse evento ocorre. Com este método, podes esperar pelo evento message
— isso ocorrerá cada vez que uma mensagem for enviada a uma guild onde o bot tiver a permissão para visualizar mensagens. Portanto, vamos criar uma função que será executada cada vez que uma mensagem for enviada, para processar comandos.
Primeiro abre o teu arquivo:
- nano index.js
Adiciona o código a seguir ao arquivo:
Essa função, que executa no evento message
, toma message
como um parâmetro. message
terá o valor de uma instância Discord.js message, que contém informações sobre a mensagem enviada e os métodos para ajudar o bot a responder.
Agora, adiciona a seguinte linha de código à tua função de tratamento de comandos:
Essa linha verifica se o autor da mensagem é um bot e, se assim for, para de processar o comando. Isso é importante, pois geralmente não queres processar ou responder a mensagens de bots. Os bots geralmente não precisam ou não querem usar o nosso bot, portanto, ignorar as suas mensagens economiza energia de processamento e ajuda a evitar respostas acidentais.
Agora, vais escrever um handler de comando. Para realizar isso, é bom entender o formato usual de um comando Discord. Normalmente, a estrutura de um comando Discord contém três partes na seguinte ordem: um prefixo, um nome de comando e, às vezes, argumentos de comando.
Prefix: o prefixo pode ser qualquer coisa, mas normalmente é um pedaço de pontuação ou frase abstrata que normalmente não estaria no início de uma mensagem. Isso significa que quando incluires o prefixo no início da mensagem, o bot irá saber que a intenção para este comando é para um bot processá-lo.
Command name: o nome do comando que o usuário quer usar. Isso significa que o bot pode suportar vários comandos com diferentes funcionalidades e permitir aos usuários escolher entre eles fornecendo um nome de comando diferente.
Arguments: às vezes, se o comando exigir ou usar informações extras do usuário, o usuário pode fornecer argumentos após o nome do comando, com cada argumento separado por um espaço.
Nota: não há nenhuma estrutura de comando obrigatória, e os bots podem processar comandos como eles quiserem, mas a estrutura aqui apresentada é uma estrutura eficiente que a grande maioria dos bots usam.
Para começar a criar um parser de comando que lida com este formato, adiciona as seguintes linhas de código à função de tratamento de mensagens:
Adicionas a primeira linha de código para atribuir o valor "!"
à constante prefix
, que usarás como o prefixo do bot.
A segunda linha de código que adicionas , verifica se o conteúdo da mensagem que o bot está a processar começa com o prefixo que definiste e, se não começar, interrompe o processamento da mensagem.
Agora, converte o resto da mensagem em um nome de comando e todos os argumentos da mensagem. Adiciona as linhas destacadas a seguir:
Usas a primeira linha aqui para remover o prefixo do conteúdo da mensagem e atribuir o resultado à constante commandBody
. Isso é necessário, uma vez que não queres incluir o prefixo no nome de comando no qual fizeste a varredura.
A segunda linha pega a mensagem com o prefixo removido e usa o método split
nela, com um espaço como separador. Isso a divide em um array de sub-strings, fazendo uma divisão onde quer que haja um espaço. Isso resulta em um array contendo o nome do comando e, se incluído na mensagem, quaisquer argumentos. Tu atribuis este array à constante args
.
A terceira linha remove o primeiro elemento do array args
(que será o nome de comando fornecido), o converte em minúsculas e, em seguida, o atribui à constante command
. Isso lhe permite isolar o nome do comando e deixar apenas argumentos no array. Tu também usass o método toLowerCase
, pois os comandos normalmente não diferenciam maiúsculas de minúsculas em bots do Discord.
Sem comentários:
Enviar um comentário
Comente de forma construtiva...
Nota: só um membro deste blogue pode publicar um comentário.