Message Filters#

Usefully filters to use in your handlers.

>>> from pywa import WhatsApp, types, filters
>>> wa = WhatsApp(...)
>>> @wa.on_message(filters.command("start"))
... def on_hi_msg(_: WhatsApp, m: types.Message):
...     print("This is a welcome message!")
filters.forwarded: Filter[Message] = forwarded#
filters.forwarded_many_times: Filter[Message] = filters.forwarded_many_times#
filters.reply: Filter[Message] = filters.reply#
pywa.filters.replays_to(*msg_ids)#

Filter for updates that reply to any of the given message ids.

>>> replays_to("wamid.HBKHUIyNTM4NjAfiefhwojfMTNFQ0Q2MERGRjVDMUHUIGGA=")
Return type:

Filter[Any]

filters.has_referred_product = has_referred_product#
filters.text: Filter[Message] = filters.text#
filters.is_command: Filter[Message] = is_command#
pywa.filters.command(*cmds, prefixes='/!', ignore_case=False)#

Filter for text messages that are commands.

>>> command("start", "hello", prefixes="/", ignore_case=True)
Parameters:
  • *cmds (str) – The command/s to filter for (e.g. β€œstart”, β€œhello”).

  • prefixes (str | Iterable[str]) – The prefix/s to filter for (default: β€œ/!”, i.e. β€œ/start”).

  • ignore_case (bool) – Whether to ignore case when matching (default: False).

Return type:

Filter[Message]

filters.media: Filter[Message] = filters.media#
pywa.filters.mimetypes(*mmtps)#

Filter for media messages that match any of the given mime types.

>>> mimetypes("application/pdf", "image/png")
Return type:

Filter[Message]

pywa.filters.extensions(*exts)#

Filter for media messages that match any of the given extensions.

>>> extensions(".pdf", ".png")
Return type:

Filter[Message]

filters.has_caption: Filter[Message] = media_has_caption#
filters.image: Filter[Message] = filters.image#
filters.video: Filter[Message] = filters.video#
filters.audio: Filter[Message] = filters.audio#
filters.audio_only: Filter[Message] = audio_only#
filters.voice: Filter[Message] = filters.voice#
filters.document: Filter[Message] = filters.document#
filters.sticker: Filter[Message] = filters.sticker#
filters.animated_sticker: Filter[Message] = animated_sticker#
filters.static_sticker: Filter[Message] = static_sticker#
filters.reaction: Filter[Message] = filters.reaction#
filters.reaction_added: Filter[Message] = reaction_added#
filters.reaction_removed: Filter[Message] = reaction_removed#
pywa.filters.reaction_emojis(*emojis)#

Filter for custom reaction messages. pass emojis as strings.

>>> reaction_emojis("πŸ‘", "πŸ‘Ž")
Return type:

Filter[Message]

filters.unsupported: Filter[Message] = filters.unsupported#
filters.location: Filter[Message] = filters.location#
filters.current_location: Filter[Message] = current_location#
pywa.filters.location_in_radius(lat, lon, radius)#

Filter for location messages that are in a given radius.

>>> location_in_radius(lat=37.48508108998884, lon=-122.14744733542707, radius=1)
Parameters:
  • lat (float) – Latitude of the center of the radius.

  • lon (float) – Longitude of the center of the radius.

  • radius (float) – Radius in kilometers.

Return type:

Filter[Message]

filters.contacts: Filter[Message] = filters.contacts#
filters.contact_info_shared: Filter[Message] = contact_info_shared#
filters.contacts_has_wa: Filter[Message] = contacts_any_has_wa#
filters.order: Filter[Message] = filters.order#