Skip to main content

WhatsApp Cloud API is complicated, Twilio is expensive, PyGwan is the opposite of both. Free & Intuitive! ~ Tarmica Chiwara.

Project description

Pygwan

Unofficial Python wrapper for the WhatsApp Cloud API by Tarmica Chiwara.

Installation

To install the WhatsApp Python wrapper, use the following command:

pip install pygwan

Usage

Import the WhatsApp class from the package and initialize an instance with your WhatsApp token and phone number ID:

from pygwan import WhatsApp

whatsapp = WhatsApp(token="your_token", phone_number_id="your_phone_number_id")

Sending a Message

You can send a text message to a WhatsApp user using the send_message method:

whatsapp.send_message("Hello, this is a test message.", "recipient_phone_number")

Replying to a Message

Reply to a message using the reply_to_message method:

whatsapp.reply_to_message("message_id", "recipient_phone_number", "Reply message.")

Sending a Template

Send a template message using the send_template method:

components = [
    # List of template components
    # Example: {"type": "text", "text": "Hello, this is a template message."}
]
whatsapp.send_template("template_name", "recipient_phone_number", components)

Sending a Location

Send a location message using the send_location method:

whatsapp.send_location("-23.564", "-46.654", "Location Name", "Location Address", "recipient_phone_number")

Sending an Image

Send an image message using the send_image method:

image_link = "https://example.com/image.jpg"
whatsapp.send_image(image_link, "recipient_phone_number")

LATEST NOTES:

Here's what changed and why: The rabbit 🐇 — human_reply

wa.human_reply(message_id, "263779281345", "Sure, let me check that for you!")
  • One call does: read receipt → typing bubble → 1.5s pause → reply. Your bot instantly feels like a person. For even more realism, use a length-aware delay:
delay=len(response_text) * 0.03  # ~30ms per character

Template improvements

wa.send_simple_template("hello_world", "263779281345")           # static templates

wa.send_flow_template("agentd", "263779281345")                  # flow templates, zero config

wa.send_flow_template("onboarding", "263779281345",              # flow + variables
    body_variables=["Alice"], flow_token="sess-123")
  • TemplateComponents builder for anything more complex — chainable, readable, no raw dicts:
components = (
    TemplateComponents()
    .add_header("Invoice #1023")
    .add_body("Alice", "shipped")
    .add_flow_button()
    .add_quick_reply_button("CONFIRM")
    .build()
)
wa.send_template("order_update", "263779281345", components)
  • Also quietly fixed:

send_templatev2 was calling send_template without self, get_message now also handles list_reply, and create_button is kept as an alias so nothing breaks.

For more detailed usage and information, please refer to the official documentation in the code lol

License

This project is licensed under the MIT License.

Project details


Download files

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

Source Distribution

pygwan-0.3.4.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygwan-0.3.4-py3-none-any.whl (21.0 kB view details)

Uploaded Python 3

File details

Details for the file pygwan-0.3.4.tar.gz.

File metadata

  • Download URL: pygwan-0.3.4.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for pygwan-0.3.4.tar.gz
Algorithm Hash digest
SHA256 67d0961c916e35f7eca9089a80dde9bb40dea2bc0429e41fc1b252e050e1e7b6
MD5 73da3a3294d532795682b329ccefecc4
BLAKE2b-256 8a4656f5b4f2639ded720040bc3c0e90a4910f4bfe0dd7e91c40ab5e09b062f9

See more details on using hashes here.

File details

Details for the file pygwan-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: pygwan-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 21.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for pygwan-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f5a8395152dd1592eb70c3682cfbfe809a344589f1e68195a0420b222f516566
MD5 c0b034d937cac04dda2de7ff12bcdfb7
BLAKE2b-256 eee19293d19c922c395ca23fc13846cf942bd5a088a8dcddabd45c297275a0b0

See more details on using hashes here.

Supported by

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