← Back to list

BirlBot: Um bot pra exercícios no meio da pandemia

De onde surgiu a ideia?

Bruno Dias · 2022-03-19 20:05 · 138 claps · 4.4 min read
#exercícios-físicos #twitch-bot #birl #typescript
Open on Medium ↗
Wiki topics: 🌐 · Web Development 🎙️ · Creator Economy

BirlBot: Um bot pra exercícios no meio da pandemia

De onde surgiu a ideia?

Plena pandemia do CoronaVirus, todo mundo preso em casa por que estamos sem poder fazer absolutamente nada fora de casa, pessoas tendo crises de ansiedade ao sair na rua por que ficaram muito tempo presas dentro de casa e agora estão com medo de sair e ainda ter resquícios do vírus na rua (Spoiler: Ainda tem. No momento que escrevo este artigo, estou com COVID, mas com sintomas leves, graças à vacinação). Mesmo assim, não podemos ficar 100% parados em casa, do contrário vamos começar a desenvolver séries de doenças, certo?

Certo. E o que fazer nessa hora que todas as pessoas estão migrando para plataformas de streaming online como YouTube, Netflix, Crunchyroll, Twitch, Mixer (Finada), Trovo, dentre outras, enquanto o nível de sedentarismo dessas pessoas aumenta e as mesmas começam a desenvolver riscos de saúde devido ao sobrepeso e à falta de exercícios? Fazer exercícios em casa é algo muito chato, mas que precisa ser feito por que não há condições de ir na academia com uma plena pandemia no ar, certo?

Enquanto isso, os níveis de ansiedade por conta da pressão do trabalho remoto e de adaptação à nova realidade, infelizmente, só aumentavam… (Imagestack — Imagem coletada no google, somente para fins de ilustração, todos os direitos reservados)

Enquanto isso, os níveis de ansiedade por conta da pressão do trabalho remoto e de adaptação à nova realidade, infelizmente, só aumentavam… (Imagestack — Imagem coletada no google, somente para fins de ilustração, todos os direitos reservados)

E é aí que entrou uma ideia que eu tive há alguns anos com um grupo de amigos: Que tal se jogássemos Dark Souls 3 (Isso na época do lançamento, pensem no nível do masoquismo) e, a cada morte, fizéssemos um exercício diferente? Por exemplo: Morri. O que eu faço? 10 flexões. Morri de novo, 30 abdominais. Morri mais uma vez, 1 minuto de prancha. E assim vai. A ideia veio a partir da minha vontade de não ficar parado enquanto estava desempregado em casa e, desde então, decidi investir nessa ideia com os amigos na frente. Porém, passou-se um tempo e a ideia foi deixada de lado por mim e pelos meus amigos.

Não se preocupe, vai ser um desafio tranquilo e bem divertido… (Dark Souls 3 — FromSoftware / Bandai Namco — — coletada no google, somente para fins de ilustração, todos os direitos reservados)

Não se preocupe, vai ser um desafio tranquilo e bem divertido… (Dark Souls 3 — FromSoftware / Bandai Namco — — coletada no google, somente para fins de ilustração, todos os direitos reservados)

Na pandemia, a ideia voltou com mais força, pois eu precisava me exercitar de alguma forma e, como eu estava já querendo praticar Typescript / Javascript, além de montar algo divertido e único pro meu canal da Twitch, surgiu a ideia de criar esse bot pra me ajudar nas contagens dos exercícios, além de me fazer sofrer em live com esses exercícios, pro deleite e risada dos meus inscritos (sério, teve um dia que passei de duzentas flexões).

Brincadeiras à parte, vamos ao que interessa. Como eu criei o Bot?

O BirlBot, na verdade, foi criado a partir de uma lib chamada TMIJS-Commander, que é uma adaptação da biblioteca tmi.js, utilizada para receber comandos escritos por você ou por usuários do chat da Twitch e enviar respostas para este de volta, seja como formato de chat ou como formatos de áudios e efeitos de vídeo.

Apesar de explicar o básico aqui, não vou entrar em detalhes do código. O mesmo está aberto no meu repositório do github. Pode conferir, é Open-Source! :)

Planejando os exercícios

A primeira atitude que tomei foi pensar em quais exercícios eu iria precisar fazer com que o bot sorteasse. Para isto, me concentrei em cinco bases iniciais:

  • Um exercício para fortalecer os braços (flexões);
  • Um exercício para fortalecer as pernas (agachamentos);
  • Um exercício para fortalecer o tronco e as costas (pranchas);
  • Um exercício aeróbico (polichinelos); e
  • Um exercício para fortalecer o abdômen (abdominais).

Tendo os exercícios, entrei em contato com um amigo que é Nutricionista e Personal Trainer, a fim de colocar um ponto para que as pessoas não se machucassem em casa e fosse algo que, mesmo leve, qualquer um pudesse pelo menos iniciar exercícios em casa.

Fomos então definindo em níveis de intensidade para cada exercício dessa lista que fiz acima, podendo colocar de 1 a 10. Os níveis de intensidade variam sempre entre:

  • Flexões: 3 / Nível
  • Abdominais: 5 / Nível
  • Prancha: 15 segundos / Nível
  • Polichinelo: 10 / Nível
  • Agachamento: 5 / Nível

Já dá pra ver que temos um nível relativamente razoável aqui, certo?

Projetando o código

Precisaremos agora entender como o bot vai ser organizado. Bem, esta é a pasta do meu projeto atualmente.

Lembrando que eu estou usando Typescript pro projeto.

Lembrando que eu estou usando Typescript pro projeto.

Separei em pequenos arquivos, pra melhor compreensão:

  • main.ts é o nosso singleton, que vai unir todo o código
  • opt.ts é o arquivo onde é feita a conexão com o canal da Twitch (no caso, o meu, que está no código) através da biblioteca tmi.js, anteriormente mencionada.
  • util/constants.ts são as constantes usadas pra conexão com a API da Twitch
  • util/exercise.ts é a classe que define os valores e o nível de cada um dos exercícios
  • util/timer.ts é a classe que define todas as funções de timer do bot, incluindo timeouts, a fim de evitar spam de comandos no chat.
  • commands/birl.ts é a classe que entra em contato com o canal e responde de volta ao streamer qual vai ser o exercício que ele vai precisar fazer quando o comando !birl for enviado ao chat pelas pessoas permitidas.
  • commands/olar.ts é a classe que responde ao comando !olar enviado por qualquer pessoa no chat do streamer
  • commands/total.ts é a classe que responde ao comando !total enviado por qualquer pessoa no chat do streamer, informando o somatório de todos os exercícios feitos até agora.
  • command/zera.ts é a classe que responde ao comando !zera enviado pelas pessoas permitidas a usarem o comando no chat do streamer, zerando todos os exercícios feitos até a live.

Um detalhe importante: Como o bot inteiro foi feito em Typescript, precisei utilizar um compilador de Typescript chamado TS-Node para rodar o bot de forma que ele compilasse todo o código em Typescript sem necessariamente precisar invocar o TSC para rodar o código no Node.JS.

De dentro do main.ts, eu faço todas as chamadas para as outras funções, como ao client.connect(opt); (que é onde chamo o opt.ts para as chamadas de criação de conexão com a API da Twitch), às funções dentro da pasta commands (como o zera.ts, total.ts, olar.ts e birl.ts, que são os exercícios) e as funções de utilitários (como as definições de contadores em timer.ts e os cálculos de exercícios em exercise.ts).

E assim está estruturado o Bot! Se ficar alguma dúvida, pode chamar aqui no Medium mesmo ou entrar em contato comigo pelo email contato@beveldrive.com.br que eu respondo o mais rápido possível! :)


메타데이터
post_id
fb9077271e6b
slug
birlbot-um-bot-pra-exercícios-no-meio-da-pandemia-fb9077271e6b
url
https://medium.com/@brunodg/birlbot-um-bot-pra-exerc%C3%ADcios-no-meio-da-pandemia-fb9077271e6b
canonical_url
https://medium.com/@brunodg/birlbot-um-bot-pra-exerc%C3%ADcios-no-meio-da-pandemia-fb9077271e6b
author_url
https://medium.com/@brunodg
status
ok
fetched_at
2026-07-27 09:11:26