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!

O dia que eu fiz um hack na minha campainha

O dia que eu fiz um hack na minha campainha

Aqui em casa tenho um “cérebro” eletrônico, responsável pela automação da casa, nele estão ligados minhas luzes, os sensores de portas e janelas e algumas outras coisinhas, antes que você pense que eu sou o Bill Gates e gastei rios de dinheiro com isso, já aviso que são anos de trabalho e esforço pra montar a automação de uma maneira raiz com alguns sensores comprados e alguns feitos no mais forte estilo faça você mesmo e o vídeo abaixo mostra como eu fiz para integrar minha campainha no meu sistema de automação.

Minha automação utiliza o Home Assistant, instalado em uma Raspberry Pi, quase tudo se comunica via Wifi, algumas coisas usando RF 433MHz e algumas outras coisas só aparecem no HA (Home Assistant) magicamente, como a TV e o roteador.

Depois de muito estudar, resolvi comprar meu vídeo porteiro, um Eken V7, no final a escolha foi pelo preço, na época paguei 120 reais na campainha e depois precisei comprar a parte do SINO, que fica dentro de casa, já que o vídeo porteiro só tocava o celular, então qualquer falta de internet iria fazer minha campainha ficar inutilizável, e isso não era uma opção! Então comprei o SINO e pensei, isso pode ficar mais legal, pode mandar uma notificação no meu celular que alguém apertou a campainha, isso já é algo que existe no aplicativo da campainha, mas a notificação as vezes não chegava, então queria algo mais “certo”, dai então veio a idéia de fazer um hack no SINO, de forma que quando ele tocar, minha automação detecte isso e possa executar comandos, por enquanto, só manda um aviso falando que tem alguém apertando a campainha, mas o fato de ter isso no sistema de automação abre a possibilidade por exemplo de eu fazer as luzes da casa piscar quando alguem tocar a campainha, entre outras coisas 😀

O vídeo mostra como eu fiz a integração do SINO com o sistema de automação, utilizando um NodeMCU (ESP8266) fiz ele ficar observando o SINO, e quando tocar, mandar via MQTT um aviso pro sistema de automação. No ESP utilizei uma biblioteca chamada HomieIOT, que facilita muito do trabalho de deixar o device configurado e passando os status para um servidor de MQTT, depois de entender como faria a ligação, comprei um optoacoplador, alguns outros componentes e soldei tudo de mandeira a poder deixar isso independente e mandando as informações 😉 ficou show.

Veja abaixo a Live onde faço a construção além de algumas fotos e alguns links que me ajudaram na construção

Animação da Campainha sendo vista pela Lupa
Campainha visto da lupa
Campainha no sofa em teste "real"
Testando o hack
Campainha + Placa Hack + Case impresso em 3D
SINO + Hack + Case
Sensor na parede
Sensor em produção