Olá nesse tutorial vamos criar um chatbot para a twitch.tv utilizando javascript com a biblioteca tmi.js. Utilizar um chatbot no seu canal é uma das formas de você engajar os seus viewers, pois, você pode criar jogos e outras brincadeiras para divertir o seu público durante as lives. Um dos exemplos é criar um comando de duelo para que o seu chat fique duelando no chat. Outra coisa que você pode fazer é criar funcionalidade para que o seu bot ajude na moderação da sua live.
Ferramentas
Para criar esse projeto iremos utilizar as seguintes tecnologias:
node.js - Que é um runtime javascript. Você pode baixar ele aqui.
nodemon - Que é uma ferramenta que monitora o sistema de arquivos da sua aplicação e reinicia automaticamente após uma modificação.
npm - Que é um gerenciador de pacote javascript. Por padrão ele já vem instalado junto com o node.js, mas caso você queira também pode utilizar o yarn.
tmi.js - Biblioteca para se conectar no chat da twitch utilizando o protocolo IRC.
Editor de texto - Você pode utilizar um editor de texto da sua preferência, no meu caso irei utilizar o Vscode.
Iniciando Projeto
Apos a instalação do node iremos iniciar o nosso projeto utilizando o seguinte comando:
npm init -y
Se você olhar na pasta do seu projeto é para ter criado um arquivo chamado 'package.json' é nele que fica as configurações do nosso projeto.
Caso você queira saber mais sobre o npm init você pode descobrir mais aqui.
Instalação de depedências
Agora vamos instalar as bibliotecas necessárias para o nosso projeto.
npm install tmi.js
npm install --save-dev nodemon
Após rodar esses comandos se você olhar no seu projeto você deve ter a pasta 'node_modules' e o arquivo 'package-lock.json' no seu projeto.
Agora iremos criar scripts para facilitar na hora de rodar o nosso bot. Dentro do arquivo package.json
iremos modificar a propriedade scripts
e adicionar o seguinte código.
"scripts": {
"start": "node index.js",
"dev": "nodemon index.js"
}
O start
serve para rodar o nosso quando finalizado. Já o dev
serve para rodar o nosso bot enquanto estivermos trabalhando nele, pois, ele vai executar usando o nodemon e facilitará nosso trabalho enquanto estivermos modificando ele reiniciando automaticamente o nosso bot.
Criando arquivo de configuração
Agora precisando criar um arquivo chamado .env
nele ficara guardado as variáveis de configurações nosso bot. Logo abaixo podemos ver como você devera deixar o arquivo depois de criado. Você devera substituir kastrinhobot pelo nome do seu nome, kastr0walker pelo nome do seu canal e TOKEN pelo token que você deve gerar aqui.
NOME_BOT=kastrinhobot
NOME_CANAL=kastr0walker
TOKEN_BOT=TOKEN
Criando nosso primeiro comando
Agora está na hora de colocar a mão na massa e fazer o nosso primeiro comando no bot. A primeira coisa que precisamos fazer é importar as bibliotecas necessárias para o nosso projeto funcionar.
const tmi = require("tmi.js");
const dotenv = require("dotenv").config();
Agora iremos salvar em variáveis as configurações que adicionamos no nosso arquivo .env
.
const NOME_BOT = process.env.NOME_BOT;
const NOME_CANAL = process.env.NOME_CANAL;
const TOKEN_BOT = process.env.TOKEN_BOT;
Devemos também criar um objeto para adicionar as informações do nosso bot.
const opts = {
identity: {
username: NOME_BOT,
password: TOKEN_BOT,
},
channels: [NOME_CANAL],
};
Devemos instanciar um novo objeto do tipo tmi.client
passando como parâmetro o objeto que contem as configurações do nosso bot.
const client = new tmi.client(opts);
Devemos criar uma função para ser executada toda vez que o bot detectar que uma mensagem foi enviada no chat. No nosso caso definimos essa função como recivedMessage
nela recebemos quatro parâmetros.
- target - Esse parâmetro recebe o nome do canal no qual o bot recebeu a mensagem.
-
context - Esse é um objeto na qual fica armazenado algumas informações do usuário que mandou mensagem no chat. Podemos achar nele o nome do usuário, se é sub ou mod de um canal dentre outras informações. Você pode conseguir mais informações colocando um
console.log(context)
dentro da função. - msg - Esse é uma string contendo a mensagem que foi enviada no chat.
- bot - Esse é um booleano que retorna verdadeiro caso a mensagem recebida seja do nosso próprio bot.
O nosso primeiro comando que vamo criar é para o bot mandar uma mensagem de "Olá Mundo!" caso alguém digite !ola
no chat. Para isso verificamos se a mensagem recebida é igual a !ola
caso seja nós chamamos o método say do nosso client. Esse método é responsável por fazer com que o bot mande uma mensagem no chat. Ele recebe dois parâmetros o primeiro é o nome do canal na qual o bot vai mandar a mensagem. O segundo parâmetro é uma string contendo a mensagem na qual o bot vai enviar.
function recivedMessage(target, context, msg, bot) {
// Verifica se a mensagem recebido é do nosso bot
if (bot) {
return;
}
if (msg == "!ola") {
client.say(target, "Olá Mundo!");
}
}
Agora precisamos fazer com que o nosso bot se conecte no chat e comece a escutar as mensagens que são enviadas nele.
Para isso utilizamos as seguintes funções.
-
client.on("message", recivedMessage) - Essa função vai fazer com que o bot fique escutando o nosso chat e execute a função
recivedMessage
toda vez que uma mensagem é recebida. - client.on("connected", () => {}) - Essa função vai fazer com que o nosso bot mande "O bot tá on!" no nosso chat ao se conectar.
- client.connet() - Essa função vai fazer com que o nosso bot se conecte com o chat do nosso canal.
client.on("message", recivedMessage);
client.on("connected", () => {
client.say(NOME_CANAL, "O bot tá on!");
});
client.connect();
Após isso salve o seu arquivo e execute no seu terminal o seguinte comando:
npm start
Pront agora o bot deve está conectado no seu canal e já sendo possível interagir com ele digitando !ola
.
Agora que você entendeu a base de como criar o seu primeiro bot. Você pode utilizar a sua imaginação e desenvolver várias funcionalidades legais para o seu bot. Se você quiser se inspirar com ideias para o seu bot esse são alguns bots na qual já contribui no desenvolvimento.
Para esse tutorial utilizei como base esse repositório. Obrigado por ler meu artigo e boa sorte com as suas criações.