Skip to content

Latest commit

 

History

History
121 lines (95 loc) · 3.95 KB

criando-novos-comandos.md

File metadata and controls

121 lines (95 loc) · 3.95 KB

🚀 Criando novos comandos

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 de keyword deverá ser abacaxi 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 o aliases 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ção execute:
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
  }
};

Exportando comandos

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.

✨ Dicas

  • 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 de execute 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.


Links úteis