Para adicionar novos comandos ao bot, basta criar um novo arquivo .js
dentro do diretório "commands".
Esse arquivo, precisa exportar o seguinte objeto:
module.exports = {
keyword: 'comando',
aliases: [], // opcional
execute: ({ args, channel, context, message }){}
};
Onde:
keyword
: como o nome sugere, é a palavra chave que será utilizada para triggar o comando. Supondo que o comando a ser utilizado no chat seja "!abacaxi", o valor dekeyword
deverá serabacaxi
somente.aliases
: opcionalmente, um comando pode ter alguns alias, certo?! Por exemplo, dado que exista um comando "!abacaxi" que também pode ser triggado através das palavras "piña" e "pineapple", você poderia criar um objeto no qual oaliases
tenha valor:['piña', 'pineapple']
(e quantas mais palavras quiser).execute
: é a função que será executada quando o comando for recebido. Seu primeiro argumento é tudo que foi enviado na mensagem do chat, e, o restante dos argumentos são os mesmos enviados pelo evento de chat no tmi.js. Supondo que um comando "!abacaxi palavra1 palavra2" tenha sido triggado no canal "levxyca", você teria algo assim na execução da funçãoexecute
:
module.exports = {
keyword: 'abacaxi',
execute: ({ args, channel, context, message }){
console.log(args); // palavra1 palavra2
console.log(channel); // levxyca
console.log(context); // {...}
console.log(message); // !abacaxi palavra1 palavra2
}
};
Caso precise exportar todos os comandos (e alias) existentes no bot, pode utilizar o comando:
npm run export
Caso queira exportar o JSON formatado, indentado, use a flag -pretty
:
npm run export -- -pretty
Um novo arquivo commands.json
será criado no diretório raiz do projeto.
-
A função
execute
não necessariamente precisa ser uma função. Se um comando não realiza nenhum processamento e somente retorna um texto, você pode fazer com que o valor deexecute
seja uma string. Por exemplo:module.exports = { keyword: 'pi', execute: 'O valor de PI é 3,14.', };
-
Como mencionado anteriormente, tudo que estiver dentro do diretório "commands" será carregado e disponibilizado para o bot, de forma recursiva.
- Isto quer dizer que você pode agrupar comandos "com o mesmo propósito" em um diretório específico, ao invés de criar um único arquivo que "faz tudo". Por exemplo, suponha que o bot tenha a funcionalidade de SHOP no qual o telespectador pode comprar, vender, alugar, etc:
// RUIM 🥲 pandadomalbot - src - commands - shop.js // TODA lógica de shop aqui dentro // MELHOR 😎 pandadomalbot - src - commands - shop - comprar.js - vender.js - alugar.js
- Arquivos iniciados com "_" (undescore) serão ignorados quando o bot for carregado. Isto quer dizer que você pode usar esses arquivos para incluir funções auxiliares ou específicas de um grupo de comandos, por exemplo:
pandadomalbot - src - commands - calculadora - _operações.js // Esse arquivo não será carregado como comando 😅 - somar.js - subtrair.js - multiplicar.js - dividir.js
🎉 Sinta-se a vontade para sugerir ou contribuir com novas implementações.