Meu primeiro BOT no Twitch.tv

Olá pessoinha, bom te ver por aqui 😉

Hoje vou mostrar como você pode criar um BOT para seu canal na twitch.tv de maneira bem simples, utilizando node.js, e você pode até não entender muito de programação, mas no final, lá estará um “Robozinho” bem simpático dando OI para quem aparecer na sua live.

Eu sei que tem vários serviços que você pode ter BOTs, com diversos recursos bem interessantes, porém aqui é “Faça Você Mesmo” na veia, então vamos juntos por a mão na massa, aprender duas ou três coisas e criar nosso próprio C3PO

Vamos entender como os BOTs funcionam, para compreender o que estaremos fazendo

O que vamos fazer é toda essa estrutura ai, e o que precisamos entender é que existe os servidores da twitch.tv, que recebem todas as mensagens, seja mensagens do chat, algum evento como uma raid, ou a notificação que alguém se inscreveu no seu canal, tudo isso ele coloca em um “pacote” e nos manda, eu represente esse pacote como sendo o Evento na imagem acima, esse evento pode ser um montão de coisas, uma listinha:

  • Quando alguem manda Bits (cheer)
  • Quando alguém entra no seu canal (join)
  • Quando o canal entra em modo somente Emote (emoteonly)
  • Quando seu bot recebe um sussurro (whisper)
  • Veja aqui a lista completa (link)

Quando nós recebemos esse pacote, precisaremos fazer alguns tratamentos para saber que tipo de informação veio nele, e com posse dessa informação determinar quais ações deveremos tomar, esse passo eu representei como “Tratar Mensagem” e “Executar ação” no desenho, você pode observar que os dois fluxos em branco, seguem esse padrão de comportamento.

Preparando o ambiente

Traduzindo isso pra – programa de computador – nós vamos usar algumas ferramentas pra nos ajudar a desenrolar essa tarefa, nosso bot vai rodar em nosso computador pessoal, o que significa que todo inicio de live precisaremos iniciar ele, e no final da live, parar ele. Como ele vai rodar em nosso computador, e nós mesmos iremos “botar a mão na massa” nossa primeira ferramenta será um Editor de Código, utilizaremos o Visual Studio Code, da microsoft, gratuito e muito bom! Você pode clicar aqui para fazer o download e a instalação dele.

Depois de instalar ele, nós já temos onde “digitar” os comandos mágicos que darão vida ao nosso bot, agora nos falta fazer a instalação da “linguagem de programação” que irá entender esses comandos mágicos e traduzir pra algo que só o computador entende, vamos usar o NodeJS para fazer isso, e você pode clicar aqui para fazer a instalação dele.

Estamos com quase tudo pronto, já temos o editor e a linguagem de programação, agora vamos baixar uma biblioteca, que é responsável por deixar nossa vida mais simples, essa biblioteca é um conjunto de códigos feito por outras pessoas, de maneira a poupar bastante do nosso trabalho, com isso com apenas poucas linhas seremos capazes de dar vida ao nosso C3PO.

Agora é mão na massa! ou no terminal, como preferir!

Você deverá procurar ai no seu windows (apertando a tecla windows), “Node.js Command Prompt“, isso vai abrir o terminal (aquela tela preta com letrinhas que os filmes costumam atribuir a hackers…. agora você é um deles), vamos criar um diretório e então começar a fazer nosso bot tomar vida, para isso digite os comandos da coluna “Comando a digitar”, um por vez.

Comando a digitar:O que o comando está fazendo
mkdir meuprimeirobotCriando uma Pasta chamada “meuprimeirobot”
cd meuprimeirobotEntrando na pasta que acabamos de criar
npm i tmi.jsInstala a biblioteca da twitch.tv
code .Abrindo o Editor (VS Code) com os arquivos que estão nessa pasta

Depois de executar a ultima linha, irá abrir o VS Code, sua tela deve parecer com a tela abaixo

Talvez seu editor não tenha tantos icones na barra lateral da esquerda, não tem problemas, isso ai são extensões que você pode instalar, porém não precisaremos dela agora, então tocaremos o barco 😉

Logo no espaço embaixo do escrito “MEUPRIMEIROBOT” clique com o botão direito do mouse e depois clique em “New File”, coloque “bot.js” (sem as aspas) e criamos nosso arquivo.

Para sabermos se estamos no caminho correto, vamos digitar nosso primeiro programa, o “Olá Planeta”, para isso digite o código abaixo lá no editor (como na imagem abaixo do código)

console.log("Olá planeta!");

Feito isso vamos rodar nosso programa, volte novamente a nossa tela hacker, ou melhor dizendo, volte ao terminal e execute o comando abaixo:

node bot.js

Não esqueça de salvar o arquivo 😉

Esse comando informa pro computador que ele vai usar a linguagem de programação que nós instalamos para “ler” o programa que acabamos de escrever, esse programa só imprime um Olá Planeta! na tela, e é isso que queremos ver, se aparecer isso pra ti, estamos no caminho, se não, deixe um comentário e tentarei te ajudar 😉

Agora temos o Pão, temos a faca, mas precisamos escrever o queijo, se é que você me entende.

Temos aqui dois links que serão nossos guias para a criação do Bot:

O primeiro é a informação da Twitch.tv informando como os chats funcionam, tem umas informações legais que podem complementar o que estou escrevendo aqui, uma informação importante é que lá nos temos “esse link -> https://twitchapps.com/tmi/“, que nos leva a página que usaremos logo mais ;), Já a segunda é a documentação da biblioteca que nós vamos utilizar, vou linkar aqui a página com todos os eventos que poderemos usar.

Vamos agora digitar o programa abaixo no nosso arquivo bot.js

const tmi = require('tmi.js');
const client = new tmi.Client({
	options: { debug: true, messagesLogLevel: "info" },
	connection: {
		reconnect: true,
		secure: true
	},
	identity: {
		username: 'bot-name',
		password: 'oauth:my-bot-token'
	},
	channels: [ 'my-channel' ]
});
client.connect().catch(console.error);
client.on('message', (channel, tags, message, self) => {
	if(self) return;
	if(message.toLowerCase() === '!hello') {
		client.say(channel, `@${tags.username}, heya!`);
	}
});

Nesse código temos algumas informações em negrito, e algumas coloridas, eu fiz uma lambança, mas espero que você consiga compreender, as informações em negrito precisaremos mudar, onde está ‘bot-name‘ você deverá substituir pelo seu usuário da twitch.tv, já aonde está “oauth:my-bot-token” você deverá alterar para a chave que você vai conseguir clicando no link que falei ali encima (https://twitchapps.com/tmi/), ao acessar a página clique em connect, ai então você vai receber a senha que você deve colocar nesse lugar, e em my-channel, você muda para o nome do seu canal.

No código acima também destaquei em azul (mais escuro) o comando que irá observar os eventos client.on( , logo depois em azul mais claro destaque message, esse é o nome do evento que vamos utilizar, e mais abaixo em vermelho destaquei message.toLowerCase() === ‘!hello’, essa linha toda, incluindo o if é quem irá verificar se a mensagem que recebemos contem a palavra “!hello“, se tiver essa mensagem, então a linha de baixo diz, mande uma mensagem client.say…, para o canal que você configurou e com a mensagem que ali está, no caso nosso programa faz uma mágica, você já deve estar imaginando que mágica é essa, tenho certeza 😉

Nesse ponto conforme prometido lá na primeira linha desse post, nosso bot já é capaz de dizer Oi, em inglês porque o bot é poliglota :P, para todos seus convidados que digitarem o comando !hello

Se você quer que o bot responda a um outro comando, então você deve duplicar as linhas e dizer qual mensagem o bot vai mandar, veja o código com algumas linhas alteradas abaixo

const tmi = require('tmi.js');
const client = new tmi.Client({
	options: { debug: true, messagesLogLevel: "info" },
	connection: {
		reconnect: true,
		secure: true
	},
	identity: {
		username: 'bot-name',
		password: 'oauth:my-bot-token'
	},
	channels: [ 'my-channel' ]
});
client.connect().catch(console.error);
client.on('message', (channel, tags, message, self) => {
  if(self) return;
    if(message.toLowerCase() === '!hello') {
      client.say(channel, `@${tags.username}, heya!`);
  }
  if(message.toLowerCase() === '!kaduzius') {
		client.say(channel, `@${tags.username}, vai lá na live do Kadu, ele me ajudou com esse comando!`);
  }
  if(message.toLowerCase() === '!instagrma') {
		client.say(channel, `Visite meu instagram é https://www.instagram.com/awesome.photographers!`);
  }
});

Dessa vez escolhi uma cor bem legal (:P)para destacar as duas linhas a mais representando os novos comandos que adicionamos

Po Kadu, você disse que está pronto, mas… cade o bot rodando no meu canal ?

Rodar o bot, agora nós iremos!

Para isso basta executar node bot.js como fizemos lá encima no Olá Planeta!

Se tudo certo estiver, bot no canal você vai ter!

Agradecimento especial aos streamers VictorZonta e Tairritadotio por fazer os testes no bot 😉

Feras, vocês são!

Deixe um comentário