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 ClientHandlersFiltersUpdatesExamples


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.

  • 🔄 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

from pywa import WhatsApp

wa = WhatsApp(
    phone_id='100458559237541',
    token='xxxxxxxxxxxxxxx'
)

wa.send_message(
    to='9876543210',
    text='Hello from PyWa!'
)
  • Create a WhatsApp client, pass a web server app (Flask in this example) and start the webhook:

    > See Handlers for more information.

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

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(text.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(callback.data_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):

git clone https://github.com/david-lev/pywa.git
cd pywa && pip3 install -U .
  • 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]

💾 Requirements

📖 Setup and Usage

See the Documentation for detailed instructions

☑️ TODO

  • Add tests

  • Add support for async

  • Move from threading

  • Add support for more web frameworks (Django, etc.)

  • Add support for more types of updates (account_alerts, message_template_status_updates, etc.)

  • Add more examples

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.

🙏 Acknowledgments

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.12.1.tar.gz (64.7 kB view details)

Uploaded Source

Built Distribution

pywa-1.12.1-py3-none-any.whl (68.1 kB view details)

Uploaded Python 3

File details

Details for the file pywa-1.12.1.tar.gz.

File metadata

  • Download URL: pywa-1.12.1.tar.gz
  • Upload date:
  • Size: 64.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for pywa-1.12.1.tar.gz
Algorithm Hash digest
SHA256 820eaa1b1b621f3672296e7b30d4122a2cc85c1da24d380722e3b7a0bb5a62ce
MD5 7a6b9135485c7604de6892df75392ca5
BLAKE2b-256 d745ae4290cc8e751642b40ad8dd4a055de5d51b0a68d0fb4a9a581af5ad6f9e

See more details on using hashes here.

File details

Details for the file pywa-1.12.1-py3-none-any.whl.

File metadata

  • Download URL: pywa-1.12.1-py3-none-any.whl
  • Upload date:
  • Size: 68.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for pywa-1.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 09b061f199295e9187755f3f21856beffa52cba1c558675df95179063f9e5739
MD5 a89b446a79dd036acc4a7dbc79c13ffa
BLAKE2b-256 038a1cc2f80986001c23fa3d0db134abf9aa7551d4d3fe2a32e6ff602621faa1

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