Skip to main content

Python wrapper for the WhatsApp Cloud API

Project description

PyWa Logo

PyWa • Python wrapper for the WhatsApp Cloud API

PyPi Downloads PyPI Version Tests Docs License CodeFactor Telegram


PyWa is a Fast, Simple, Modern and easy-to-use Python framework for building WhatsApp bots using the WhatsApp Cloud API.

📄 Quick Documentation Index

Get StartedWhatsApp ClientHandlersFiltersUpdatesFlowsExamples


Features

  • 🚀 Fast and simple to use. No need to worry about the low-level details.
  • 💬 Send text messages with interactive keyboards, images, videos, documents, audio, locations, contacts, etc.
  • 📩 Receive messages, callbacks, message status updates, etc.
  • ♻️ Create, send and listen to Flows (NEW!)
  • 🔄 Built-in support for webhooks (Flask, FastAPI, etc.)
  • 🔬 Filters for handling incoming updates
  • 📄 Send and create templates
  • ✅ Fully typed, documented and tested

👨‍💻 Usage

  • Create a WhatsApp client and send a message

See Getting Started for more information.

from pywa import WhatsApp

wa = WhatsApp(
    phone_id="100458559237541",
    token="EAAEZC6hUxkTIB"
)

wa.send_message(
    to="9876543210",
    text="Hello from PyWa!"
)
  • To listen to updates, create a WhatsApp client, pass a web server app (Flask in this example) and register callbacks:

See Handlers for more information.

from pywa import WhatsApp, filters
from pywa.types import Message, CallbackButton, Button
from flask import Flask

flask_app = Flask(__name__)
wa = WhatsApp(
    phone_id="1234567890",
    token="xxxxxxx",
    server=flask_app,
    callback_url="https://xyz.ngrok-free.app",
    verify_token="xyz123",
    app_id=123456,
    app_secret="yyyyyy"
)

@wa.on_message(filters.matches("Hello", "Hi"))
def hello(client: WhatsApp, msg: Message):
    msg.react("👋")
    msg.reply_text(
        text=f"Hello {msg.from_user.name}!",
        buttons=[
            Button(
                title="Click me!",
                callback_data="id:123"
            )
        ]
    )

@wa.on_callback_button(filters.startswith("id"))
def click_me(client: WhatsApp, clb: CallbackButton):
    clb.reply_text("You clicked me!")

flask_app.run()  # Run the flask app to start the server

🎛 Installation

  • Install using pip3:
pip3 install -U pywa
  • Install from source (the bleeding edge):
pip3 install -U git+https://github.com/david-lev/pywa.git
  • If you going to use the webhook features, here is shortcut to install the required dependencies:
pip3 install -U "pywa[flask]"
pip3 install -U "pywa[fastapi]"
  • If you going to use the Flow features and want to use the default FlowRequestDecryptor and the default FlowResponseEncryptor, here is shortcut to install the required dependencies:
pip3 install -U "pywa[cryptography]"

💾 Requirements

📖 Setup and Usage

See the Documentation for detailed instructions

☑️ TODO

  • Add support for async
  • Add support for more web frameworks (Django, Starlette, etc.)
  • Add support for more types of updates (account_alerts, phone_number_quality_updates, template_category_updates, etc.)
  • Add more examples and guides

Feel free to open an issue if you have any suggestions. or even better - submit a PR!

📝 License

This project is licensed under the MIT License - see the LICENSE file for details

🔱 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywa-1.19.0rc2.tar.gz (144.0 kB view details)

Uploaded Source

Built Distribution

pywa-1.19.0rc2-py3-none-any.whl (143.3 kB view details)

Uploaded Python 3

File details

Details for the file pywa-1.19.0rc2.tar.gz.

File metadata

  • Download URL: pywa-1.19.0rc2.tar.gz
  • Upload date:
  • Size: 144.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for pywa-1.19.0rc2.tar.gz
Algorithm Hash digest
SHA256 a815d7b3d397b5d1cdf60c2f11a1cd29b697d2b310dce9ae94994ea86a1471fa
MD5 e6cb89d01dd2307a7a801e0686189620
BLAKE2b-256 417bc7cdce279409421da7dc2d2090fa3be5bb23387b0225daa52b3935a73a91

See more details on using hashes here.

File details

Details for the file pywa-1.19.0rc2-py3-none-any.whl.

File metadata

  • Download URL: pywa-1.19.0rc2-py3-none-any.whl
  • Upload date:
  • Size: 143.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for pywa-1.19.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 982bcee4bc4770db0a14542ce8b3c3e0ae6dab1d083836480208157af8b2861d
MD5 5535b27be43d83f1426ddf296ee99aef
BLAKE2b-256 8037aafb2d26d09c0e4fd20605d65e5cfa1bc1f6c6b674bca91579e1a603dba1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page