Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lc-at/kyros

Python wrapper for WhatsApp Web API websocket communication (based on https://github.com/sigalor/whatsapp-web-reveng)
https://github.com/lc-at/kyros

hacktoberfest kyros python-api python3 unofficial-api whatsapp whatsapp-automation

Last synced: about 1 month ago
JSON representation

Python wrapper for WhatsApp Web API websocket communication (based on https://github.com/sigalor/whatsapp-web-reveng)

Awesome Lists containing this project

README

        

# Important Note

**This project is no longer maintained**. As per this commit, I decided not to
maintain the project anymore. Since last year, WhatsApp has been making many
changes (most notably the offline feature) that directly affected this project.
I have been so busy that I can't keep up with the pace, and I don't plan to
continue it in the future either.

Thanks to anyone who has been using and/or helping with the development of this
project.

If someone wants to continue the project (e.g. by making a fork), I would
appreciate that.

# Kyros

Kyros, for now, is a Python interface to communicate easier with WhatsApp Web
API. It provides an interface to connect and communicate with WhatsApp Web's
websocket server. Kyros will handle encryption and decryption kind of things. In
the future, Kyros is aimed to provide a full implementation of WhatsApp Web API
which will give developers a clean interface to work with (more or less like
[go-whatsapp](https://github.com/Rhymen/go-whatsapp)). This module is designed
to work with Python 3.6 or latest. Special thanks to the creator of
[whatsapp-web-reveng](https://github.com/sigalor/whatsapp-web-reveng) and
[go-whatsapp](https://github.com/Rhymen/go-whatsapp). This project is largely
motivated by their work. Please note that Kyros is not meant to be used actively
in production servers as it is currently not production ready. Use it at your
own risk.

## Installation

Kyros could be installed by using `pip` or directly cloning it then invoking
`setup.py`. For example, if you want to use pip, run the following command:

pip install git+https://[email protected]/ttycelery/kyros

## Documentation

### A simple example

``` {.python}
import asyncio
import logging

import pyqrcode

import kyros

logging.basicConfig()
# set a logging level: just to know if something (bad?) happens
logging.getLogger("kyros").setLevel(logging.WARNING)

async def main():
# create the Client instance using create class method
whatsapp = await kyros.Client.create()

# do a QR login
qr_data, scanned = await whatsapp.qr_login()

# generate qr code image
qr_code = pyqrcode.create(qr_data)
print(qr_code.terminal(quiet_zone=1))

try:
# wait for the QR code to be scanned
await scanned
except asyncio.TimeoutError:
# timed out (left unscanned), do a shutdown
await whatsapp.shutdown()
return

# how to send a websocket message
message = kyros.WebsocketMessage(None, ["query", "exist", "[email protected]"])
await whatsapp.websocket.send_message(message)

# receive a websocket message
print(await whatsapp.websocket.messages.get(message.tag))

if __name__ == "__main__":
asyncio.run(main())
```

A "much more detailed documentation" kind of thing for this project is available
[here](https://ttycelery.github.io/kyros/). You will see a piece of nightmare,
happy exploring! Better documentation are being planned.

## Contribution

This work is still being slowly developed. Your contribution will of course make
the development process of this project even faster. Any kind of contribution is
highly appreciated.

## License

This project is licensed with MIT License.

## Disclaimer

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.