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