How I Created a WhatsApp Bot to Talk With My Friends

Here is the full code if you want to jump right to it.


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.


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.

  1. 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:

View it on GitHub


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.

This UrIoTNews article is syndicated fromDzone