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 CodeFactor Docs Telegram

PyWa is a Python framework for building WhatsApp bots using the WhatsApp Cloud API. The goal is to provide a uniform, fully typed, convenient and usable layer.

📄 Quick Documentation Index

Get StartedWhatsApp ClientHandlersFiltersUpdatesExamples

👨‍💻 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:

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='xxxxxxxxxxxxxxx',
    server=flask_app,
    verify_token='XYZXYZ',
)

@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}!',
        keyboard=[
            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

  • Add support for typed template messages

  • Media URL caching

  • 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.0.0.tar.gz (38.8 kB view details)

Uploaded Source

Built Distribution

pywa-1.0.0-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pywa-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4effbfb51b189c656f8e26a52398971b2c2c04e0ef01e32643da31efa55202d8
MD5 3a9fd87829fd835ec9b26c8d93fb6d9e
BLAKE2b-256 3133765672f50a92e72021d161ea8001f2682fe5f76851f7fbcf2c2d0f90c0bb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pywa-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7edd2fb1f1ee6d90ba62d7445f5a988c58e2830d5344f60eda43596ef3553c71
MD5 4969e3af173af262b68bbbee3b73d650
BLAKE2b-256 77347e76d7d07ca1c40b99f5083ac0a9dc250d72f906892632ac0586d0fcb843

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