This package is used to provide a python interface for interacting with WhatsAPP Web to send and receive Whatsapp messages. It is based on the official Whatsapp Web Browser Application and uses Selenium browser automation to communicate with Whatsapp Web.
You will need to install Gecko Driver separately, if using firefox, which is the default.
pip install -r requirements.txt
to install the required packagespipenv install && pipenv install --dev
pip install webwhatsapi
It may be favorable to run Selenium and the webwhatsapi client as Docker containers. This almost completely avoids any installation problems and any messy local installation or dependency hell. The result is a more stable runtime environment for the client, which could run on a headless server. Using Docker may also help in developing the library itself.
docker network create selenium
This is based on the official Selenium image (https://github.com/SeleniumHQ/docker-selenium). The following Docker command runs a Selenium standalone Firefox browser in debug (VNC) mode. You can use VNC on port 5900 to view the browser. It uses the network "selenium" and the container is named "firefox" for later reference.
docker run -d -p 4444:4444 -p 5900:5900 --name firefox --network selenium -v /dev/shm:/dev/shm selenium/standalone-firefox-debug:3.14.0-curium
The following command uses the dockerfile to build a new image based on Python 2.7 with all required packages from requirements.txt.
docker build -t webwhatsapi .
Now to the client container. The following command installs a local webwhatsapi inside the base container and runs a client. It maps the local directory to the app directory inside the container for easy development. Also sets the network to "selenium" and an environment variable for the remote selenium url. Please note that the remote Selenium hostname must be identical to the name of the Selenium container.
docker run --network selenium -it -e SELENIUM='http://firefox:4444/wd/hub' -v $(pwd):/app webwhatsapi /bin/bash -c "pip install ./;pip list;python sample/remote.py"
For Windows (cmd):
docker run --network selenium -it -e SELENIUM='http://firefox:4444/wd/hub' -v "%cd%:/app" webwhatsapi /bin/bash -c "pip install ./;pip list;python sample/remote.py"
For Windows (PowerShell):
docker run --network selenium -it -e SELENIUM='http://firefox:4444/wd/hub' -v "$(pwd):/app".ToLower() webwhatsapi /bin/bash -c "pip install ./;pip list;python sample/remote.py"
It is also certainly possible to fully build the docker image in advance and define an entrypoint/cmd inside the dockerfile to run a full client.
See sample directory for more complex usage examples.
from webwhatsapi import WhatsAPIDriver
driver = WhatsAPIDriver(username="mkhase")
Possible arguments for constructor:
driver.get_qr()
driver.reload_qr()
driver.view_unread()
driver.get_all_chats()
<Contact Object>.send_message("Hello")
driver.send_message_to_id(id, message)
https://webwhatsapi.readthedocs.io/en/latest/
Phone needs to manually scan the QR Code from Whatsapp Web. Phone has to be on and connected to the internet.
There are issues with asynchronous calls in Chrome. Primary support of this api is for firefox. If something doesn't work in chrome, please try firefox.
Contributing is simple as cloning, making changes and submitting a pull request. If you would like to contribute, here are a few starters:
This code is in no way affiliated with, authorized, maintained, sponsored or endorsed by WhatsApp or any of its affiliates or subsidiaries. This is an independent and unofficial software. Use at your own risk.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!