Executando verificação de segurança...
15

Como meu bot do twitter alcançou 300k de impressões sem gastar nada

Introdução

Como bom programador e entusiasta de academia, decidi criar um bot que monitorasse as creatinas disponíveis na Growth, uma loja de suplementos. O meu objetivo era ter esse serviço de maneira gratuita e receber as notificações em alguma rede social, pela conveniência.

(está desativo por conta da mudança na api do twitter)
https://twitter.com/tem_creatina

O que aconteceu com o bot em 3 meses de funcionamento?

Para a minha surpresa, muitas pessoas não conseguiam comprar creatina, pois o estoque sempre se esgotava muito rápido. O resultado disso foi um impressionante número de 300 mil impressões em tweets nos últimos 91 dias, além de muitos likes e retweets. E o custo total da aplicação foi de R$ 0.

(o gasto com creatina foi de uns R$ 300 hehehe)

image

Funcionamento geral do bot

  • É executado em um cron a cada 10 minutos;
  • Realiza o scrapping com o cheerio em 4 páginas simultaneamente;
  • Envia a notificação simultaneamente para dois lugares (Twitter e Discord).

A execução simultânea tem o objetivo de evitar a execução prolongada, prevenindo gastos com serverless.

Infraestrutura do bot

Basicamente: serverless, vercel e upstash :)
gasto: R$ 0

serverless

Esse recurso facilita nosso trabalho ao criar uma aplicação no AWS Lambda. O template que utilizei para iniciar a aplicação pode ser encontrado aqui: https://www.serverless.com/examples/aws-node-scheduled-cron

O template usado para agendar a execução da aplicação(cron):

org: xmatheus
app: scraper
service: scraper
frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs14.x
  environment:
    consumer_key: 
    consumer_secret: 
    access_token: 
    access_token_secret:
    

functions:
  rateHandler:
    handler: handler-tem-creatina.run
    events:
      - schedule: rate(10 minutes)

Vercel

gasto: R$ 0

O Discord permite a geração de um webhook para postar mensagens em um canal, facilitando a integração de bots. Ao todo, foram criadas 5 páginas utilizando Nextjs para o front e backend.

Páginas:

  • Uma principal que coleta e envia os webhooks;
  • Quatro páginas de redirecionamento (links que o bot gera e insere nas notificações enviadas).

As páginas de redirecionamento servem para acompanhar a quantidade de cliques nos links gerados pelo bot. A Vercel fornece analytics para isso.

Ex.:
image

página de coleta do webhook: https://creatina.xmatheus.dev/discord

Banco de dados redis com o upstash

gasto: R$ 0

O Upstash é um banco de dados serverless que cobra por comando. Basicamente, você tem 10 mil comandos para usar por dia, depois disso, é cobrado. O bot utilizou apenas 1,7 mil comandos durante 2 meses (antes não tinha a notificação pelo Discord).

O Upstash é usado em duas situações:
1 - Quando o usuário salva o webhook;
2 - Quando o bot busca todos os webhooks para notificar os canais.

Código e libs

Utilizei javascript, cheerio, twit e ioredis. Ainda vou disponibilizar um template do código do bot, mas de maneira geral o template do serverless funciona muito bem.

Conclusão

Use esta postagem como inspiração para criar aquele bot que você sempre imaginou, mas nunca tirou do papel. Aproveite, pois demorará um tempo até que sua aplicação cresça e seja cobrado por algum dos serviços utilizados. No entanto, tome cuidado e leia atentamente as páginas de pricing desses serviços.

Essa é uma das minhas primeiras aplicações que geram interações com pessoas aleatórias da internet, achei isso muito legal.

Ex.:

image

Infelizmente o twiter mudou os planos da API e, por enquanto, o bot está suspenso :/

Discordão da massa segue 100% :)

meu github: @xmatheus

Carregando publicação patrocinada...
2

Rapaz, achei simplesmente demais sua postagem haha! Já comecei gostando de quando tu falou de ser programador e entusiasta de academia. Vejo poucos desses, e como um deles, me indentifiquei haha. Bora quebrar com o esteriótipo de que programador não pode ficar forte.

Em relação ao conteúdo em sí, muito bom, e extremamente útil e inteligente! Você conseguiu ir numa dor que o pessoal (eu incluso) tinha, e solucionar o problema! Meus parabéns aí e sucesso com a ideia. Espero que a API volte a funcionar e tu consiga voltar a usá-lo (e até poder usar também haha)

1

Valeu, meu camarada! Fico feliz que tenha curtido a postagem. Acredito que eu tenha que modificar a quantidade de postagens diárias do bot para se adequar as novas regras do twitter. Irei fazer alguns testes :)

(programador e marombeiro é uma combinação de sucesso kkkkkk)

1
1

Cara, estou embasbacado com esse projeto. Gerou um engajamento da galera no twitter com uma informação que muitos queriam. Muito interessante, me abriu a mente pra muitas possibilidades.

1
1
0
1

Muito legal. Parabéns pela iniciativa e pela postagem aqui.
Eu tbm fico o tempo todo pensando em implementar funcionalidades de que dar para usar com uma infra gratuita ou de baixo custo. Inclusive, no momento vou implementar uma API com integração ao bot do Telegram (seria uma alternativa para vc tbm ou seu público não optaria pelo Telegram?).

1
1

Eu me lembro que na época do ensino médio eu criava projetos assim só de brincadeira e tinha que gastar o mínimo possível. Parabéns pela ousadia e por conseguir manter o projeto dentro do orçamento de um estudante médio brasileiro.

0
0
0
0
0
1
0