Como eu mandei mensagem para mais de 400 contatos com Node.js Streams

Antes de mais nada, queria falar que tudo que será discutido aqui é com o intuito de compartilhar conhecimento, todos os contatos que enviei as mensagens estavam de acordo em recebê-las. Caso você use isso para algum fim que não seja aprendizado (até mesmo para aprendizado), a responsabilidade será inteiramente sua!

Vamos lá

Recentemente precisei enviar uma mensagem pra uma lista de números de whatsapp, porém a lista possuia 430 contatos. Olhando de forma computacional é um número relativamente pequeno, mas se precisar mandar 1 a 1, cara... Então logo pensei, "por que não automatizar isso?". E conversando com um amigo, ele me mandou uma biblioteca chamada WPPCONNECT, um projetinho open source muuuuito daora que pode proporcionar funções do Whatsapp Web para o Node.

A essa altura já tinha minha lista e uma lib que podia enviar as mensagens, então estava com a faca e o queijo na mão, certo? Errado!!!! Inocentemente comecei a rodar um script que iterava a lista e mandava a mensagem para o contato, porém depois de poucas mensagens enviadas, logo o Whatsapp detectou o comportamento estranho e me deslogou do app, encerrando assim a sessão na lib.

Me encontrava em um cenário em que tinha que enviar uma determinada quantidade de mensagens (1 nesse caso) em um determinado limite de tempo (rate limit), e assim que me toquei disso, me lembrei de um vídeo do Erick Wendel que ele basicamente ensina step by step a como fazer isso usando uma ferramenta MONSTRA do Nodejs, que são as Streams.

E somente com isso consegui automatizar o envio de mensagens para mais de 400 contatos usando Node.js Streams.

Para vcê que deseja ver como ficou o simples código, pode dar uma olhadinha aqui.

Muito foda sua ideia e projeto! Obrigado por compartilhar.

Gostei bastante da forma que descreveu o seu problema e como chegou a solução e ainda compartilhou tudo! fenomenal, parabéns.

Po so eu que fiquei querendo ler mais como vc doi esbarrou num problema e ia resolvendo, tipo uma trhead?

valeeeu, meu camarada!! cara, não sou muito bom em produzir haha, se puder dar um pouquinho mais do que você acha interessante eu falar acho que posso desenrolar.

Primeiramente, massa demais a solução cara.

Como Juninho, fiquei com um pensamento aqui, além da escalabilidade, qual o motivo de usar streams ao invés de só ler o csv com os dados e depois executar isso com um intervalo entre as requisições pro whatsapp? pergunta honesta haha.

Valeeeu, meu nobre!! Então, no meu pensamento também de Juninho, com as Streams a gente consegue fazer todo esse processo direto no pipeline, em que todos o middlewares serão apenas extensões do Transform, aí não é preciso separar, saca?