kaerez / pywa

πŸ’¬ Python wrapper for the WhatsApp Cloud API

Home Page:https://pywa.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 Started β€’ WhatsApp Client β€’ Handlers β€’ Filters β€’ Updates β€’ Flows β€’ Examples


⚑ 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
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]"
  • 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.

πŸ™ Acknowledgments

About

πŸ’¬ Python wrapper for the WhatsApp Cloud API

https://pywa.readthedocs.io

License:MIT License


Languages

Language:Python 100.0%