⚠️ Errors

⚠️ Errors#

Exceptions are important part of the pywa library. They are used to tell you what went wrong and why. For example, if you try to send_message() to a user that the last time you sent a message to him was less than 24 hours ago, if this message is not a template message, you will get a ReEngagementMessage exception.

Most of the exceptions are raised when you try to do something like sending a message, but some of them not raised by the library, but come from the webhook as part of new Message or MessageStatus. For example, you can sometimes send a message to a user, and you won’t get any exception, but you will get a message status with status of FAILED and with error of MessageUndeliverable. That’s why it’s important to always register a handler for failed delivery messages, here is an example:

import logging
from pywa import WhatsApp
from pywa.types import MessageStatus
from pywa import filters as fil

wa = WhatsApp(...)

@wa.on_message_status(fil.message_status.failed)  # filter for failed message statuses
def handle_failed_message(client: WhatsApp, msg: MessageStatus):
    logging.error("Message %s failed to send to %s: %s", status.id, status.from_user.wa_id, status.error.message)

Another example is for unsupported messages: if the user sends unsupported message type (like pool), you will get the message with type of UNSUPPORTED and with error of UnsupportedMessageType.

from pywa import WhatsApp
from pywa.types import Message
from pywa import filters as fil

wa = WhatsApp(...)

@wa.on_message(fil.unsupported)
def handle_unsupported_message(client: WhatsApp, msg: Message):
    msg.reply_text("Sorry, I don't support this message type yet")

All the exceptions are inherited from WhatsAppError, so you can catch all of them with one exception:

from pywa import WhatsApp
from pywa.errors import WhatsAppError

wa = WhatsApp(...)

try:
    wa.send_message(...)
except WhatsAppError as e:
    print(f"Error: {e}")

Base Exception#

class pywa.errors.WhatsAppError#

Bases: Exception

Base exception for all WhatsApp errors.

Variables:
  • error_code – The error code.

  • message – The error message.

  • details – The error details (optional).

  • fbtrace_id – The Facebook trace ID (optional).

  • href – The href to the documentation (optional).

  • status_code – The status code (in case of response, else None).


The exceptions are divided into 4 categories: