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.
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?
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.