
Here is the full code if you want to jump right to it.
Why?
The title seems kinda rude and lazy, right? But if you think about the situation I am in, then you’ll understand. Here in India, it’s important to be socially active. If you don’t reply or send a few “good morning” messages in a few groups, people would think you are actually dead or taunt you for being busy and not spending time with them.
Now, the thing with me and social media is, I want to use it on my time, not when they send me a notification. So, there are situations where I reply to a post after 4–5 days, and by that time, my reply would not matter. Let’s consider posting on, for example, birthdays, anniversaries, etc. But the thing is I don’t want to be that guy who replies after 4-5 days. We all have 24 hours, and I try my best to allocate it to all the things and priorities I have at my disposal. I’d get disappointed if someone replies to me after a week, so I don’t want to be that guy for them.
So, I have come up with a solution to automate this scenario, which will save my screen time.
How?
I was looking to do an automation on the web, and just like Google’s top result, Selenium popped up in my mind, but as a JavaScript enthusiast, I choose JS as my ally. As a matter of fact, I found a few modules in npm for Selenium but wasn’t really impressed by that.
While searching for that, I stumbled upon this video from google IO 2018 and then this one, which got me thinking like

How I did it
First, I learned about a few tricks from this post.
Then, I realized that relying on DOM is not a good idea. What if classes or selectors I have used got updated in the page? So I decided not to use DOM (but I ended up using it anyway for other feature. I will write about it in another post; stay tuned).
Just like a production issue solved before the deadline, I found one repo that gives programmable access to WhatsApp, which works the way I want it to.
Enough…show me the code
Here’s the gist of it. I have added a link to the repo as well.
- First, I created a puppeteer browser window and opened Whatsapp like this:

2. Then, I created a JSON file to manage messages and it’s equivalent reply and also to add some configs.

3. Next, I added a function inside inject.js
, which would be called every time I get a new message.

Final results
With some garnishing with libraries like Ora, Cli-progress, and qrcode-terminal on the top,

I got this:

Here is the full code:
Conclusion
This is what technology is all about. Identify the problem and fix it with the right tools/tech. There are so many possibilities with the combination of tools like Google Puppeteer and NodeJS. We just need to be self-aware enough to look for a solution to the problem we have in our day-to-day lives.