NOTE: pywa follows the semver versioning standard.
- [callback] treat missing message context as no
reply_to_message - [types] deprecate
callerandcalleeproperties as part of BSUID changes - [sent_update] better recipient type resolving
- [enums] adding copy-paste-compatible repr for
UploadedByandUserIdentifier
- [filters] make
Filterclass generic - [signups] adding support for creating listing and updating signups
- [templates] add documentation and strict typing for
ContactInfoRequestButton - [message] deprecate
senderandrecipientproperties and update user identifier priority - [cli] move uvicorn import to runtime and improve error handling
- [errors] add more error codes for throttling, sending, and migration, and fix template error code
- [others] fix parsing contact with field
request contact - [others] fix parsing contact without name
- [client] fix parsing
get_reserved_usernames() - [api] using
jsoninstead ofdatafor encryption and template requests
- [filters] allowing
filters.newto be used as decorator: - [contacts] adding
first_wa_idproperty toContactList - [api] fix
recipient_typeinsend_marketing_message
- [client] add
archive_templatesandunarchive_templatesmethods for template archival management - [client] add
force_transferoption toset_usernamemethod for username management - [client] add
request_contact_infomethod to request customer contact information - [listners] add
wait_for_contact_infomethod to wait for contact info requests - [filters] add
webhook_fieldsfilter for filtering raw updates by fields - [cli] improve error handling during CLI command execution
- [handlers] improve handler typing and inline documentation examples
- [api] add internal utility methods for filtering
Nonevalues and joining fields
- User Identity & BSUID Readiness:
- Full support for BSUIDs (Business-Scoped User IDs), parent BSUIDs, usernames, and
country_code. types.User.wa_idis now optional (users who enable usernames may no longer expose a phone-number-based WhatsApp ID).types.User.preferred_idresolves IDs using the newWhatsApp(user_identifier_priority=...)priority configuration.filters.from_users(...)now accepts BSUIDs, parent BSUIDs, WA IDs, and formatted phone numbers.- Phone number change updates now expose BSUID-related fields (
new_user_id,new_parent_id).
- Full support for BSUIDs (Business-Scoped User IDs), parent BSUIDs, usernames, and
- Groups & Chat-Aware Updates:
- Full group management support: create, update, delete, fetch groups, manage invite links, handle join requests, and add/remove participants.
- Incoming messages now expose
msg.chat(aChatobject withidandtype) to distinguish private chats from groups. - Added
filters.private,filters.group, andfilters.from_groups(...). - Added
GroupMessageStatusesHandlerandwa.on_group_message_statuses(...)for group status updates. - Sent messages now expose
sent.chatand support pinning/unpinning.
- Webhooks, CLI, & Local Development:
- Added the built-in server workflow:
pywa dev(auto-reload),pywa run(production-style), andWhatsApp.run()(quick scripts). - Added
utils.start_ngrok_tunnel(...)for easy local webhook testing. - Support for custom webhook subscription fields with
utils.WebhookFieldsviawebhook_fields. - Refactored webhook validation and endpoint registration to work consistently across built-in Starlette app, FastAPI, Flask, and manual integrations.
- Listeners now warn when no timeout is provided and prevent usage with multiple Uvicorn workers.
- Added the built-in server workflow:
- Messages, Media, Callbacks, & Account Updates:
- Added
EditedMessage,DeletedMessage,OutgoingEditedMessage, andOutgoingDeletedMessageupdates for coexistence support. - Added
AccountUpdateand related enums for account updates. - Media objects now store their
caption, and media upload internals support async pending uploads withPendingMedia. - Added
ContactInfoRequestButton,ContactList, and carousel message support (send_carousel,reply_carousel).
- Added
- Business Management & Templates:
- Retrieve shared/owned WABAs, create/verify phone numbers, and manage usernames (
set_username, etc.). - Added WABA settings updates, including
degrees_of_freedom_spec. - Enhanced template validation, lookup, parameter introspection (
param_names), and error reporting. - Support for
target_waba_idinTemplate.duplicate(...)and helper states inCreativeFeaturesSpec.
- Retrieve shared/owned WABAs, create/verify phone numbers, and manage usernames (
- [helpers] fix incoming updates in
fastapiandstarlette - [helpers] hide webhook endpoints from OpenAPI schema
- [ci] streamline publish workflow for PyPI
- [client] add
runmethod to start the webhook server and listen for updates - [server] refactor webhook handling to include validation and improve endpoint management
- [user] make
profiletemporary optional for testing - [utils] add
start_ngrok_tunnelfunction to facilitate local webhook testing - [templates] enhance
duplicatemethod to includetarget_waba_idparameter for template creation - [templates] add validation for URL variables in
URLButtonto enforce constraints on example and variable usage
- [client] add methods for creating and verifying phone numbers on WhatsApp Business Account
- [templates] enhance
TemplateandTemplateDetailswith new methods for component retrieval and validation - [templates] add
param_namesproperty for introspection of named parameters - [templates] enhance error handling for positional and named examples in
HeaderTextandBodyText - [templates] enhance
CreativeFeaturesSpecwith new attributes for improved media handling and text optimization - [templates] remove
TemplateSubCategoryclass and updatesub_categorytype to string - [message] fix reply to message in
EditedMessageandDeletedMessage
- [client] update
webhook_fieldstype to supportutils.WebhookFieldsand enhance handling logic - [client] replace
business_account_idwithwaba_idacross the codebase - [client] add methods to retrieve shared and owned WABAs
- [message] add
OutgoingMessage,OutgoingEditedMessageandOutgoingDeletedMessageclasses for message updates - [message] add
EditedMessageandDeletedMessageclasses for message updates - [contacts] add
ContactListclass for shared contacts handling - [media] store
captioninside media objects - [groups] add
GroupOperationclass and update group-related methods to return operation responses - [callback] update
VoiceCallButtonto supporttimedeltaforttl_minutes - [errors] add
rawerror field and new group/template error classes
- [client] add
SUPPORTS_BSUID_APIflag and update user identifier resolution logic - [templates] fix summary fields in
TemplatesResult - [ci] update checkout action to use workflow_run head_sha reference
- [user] implement BSUID changes
- [user] added
country_codefield - [groups] add group management features
- [handlers] implement
GroupMessageStatusesclass and handler for group message status updates - [message_status] add new
PricingCategory:general_purpose_ai - [filters] update
from_countriesto supportcountry_code - [filters] add filters for
privateandgroupchat messages - [templates] add
ContactInfoRequestButtoncomponent - [templates] add to
CreativeFeaturesSpectwo classmethods:all_enabledandall_disabled - [others] add
BlockedUserandUnblockedUserfor user blocking functionality - [types] remove
ChatOpenedreferences and related code
- [base_update] edit
reply_templateto acceptTemplateobj - [templates] fix template params validation in async
- [templates] fix filters import in
wait_until_approved - [templates] add
auto_promotion_tagfield toCreativeFeaturesSpec
- [templates] enhance template parameters validation and improve component handling
- [types] update
BusinessProfileto allow optional 'about' field
- [media] allow to override the default 1-hour TTL for
No Storage-enabledbusiness phone numbers - [types] add
QRCodeImageTypeand enhanceQRCodemethods for image handling - [templates] adding
product_extensionsandtext_formatting_optimizationtoCreativeFeaturesSpec - [api] add method to exchange Embedded Signup token for business access token
- [ci] update GitHub Actions workflows for improved publishing and testing
- [core] support Python 3.14
- [helpers] fix media URL in template param
- [tests] test resolve_media_param
- [client] allow any media type in
update_business_profile(profile_picture=...)arg` - [sent_message] adding new
SentReactiontype for replying and reacting to the original message - [media] allowing usage in context manager to delete media after use
- [templates] moving
TemplateStatusUpdatefields into objects - [message_status] fixing
MessageStatus.pricing.typeparsing - [utils] bump
flow_data_apito4.0
- [message] adding
voiceshortcut - [sent_message] adding
wait_for_call_permissionandwait_for_incoming_voice_calllisteners and validate interactive types - [templates] added
categorytoTemplateStatusUpdate - [filters] Fix filters
template_status_approved,template_status_rejected
- [helpers] Fix
get_media_msgwithbuttons - [message] Fix
copy_messagewithbuttons
- [client] adding
send_voiceandwait_until_playedlistener - [listeners] adding
wait_for_locationwhen sending location request - [sent] adding
SentMediaMessagewithuploaded_mediaattr for sent messages - [message] adding
unsupportedattr - [message] adding support for copy
voicemessage - [base_update] add
identity_key_hashparameter to message methods for identity verification - [templates] adding
text_extraction_for_headlineandtext_extraction_for_tap_targettoCreativeFeaturesSpec - [flows] fixing
indexinFlowCompletion.get_media
- [templates] adding support for
HeaderGIF - [templates] override mimetype when sending template with media
- [helpers] fix closing file
- [templates] allowing to override header example mime-type
- [helpers] stream template examples when possible (sync/async)
- [helpers] fix template example resolving for
Mediatype
- [media] adding
uploaded_by,uploaded_atand more helpers toMediatype - [client] implementing Identity Change Check
- [client] adding
get_media_bytesandstream_media - [client] adding support for voice messages
- [client] updating
update_business_phone_number_settingsmethod to take specific settings - [base_update] adding method to handle the update again
- [message] fix typing of
buttonsforcopyand remove'copy'system message -
- [templates] adding
image_background_genoption toCreativeFeaturesSpec
- [templates] adding
- [sent_update] moving the
inputfrom user to theSentMessagelevel - [helpers] stream downloads and uploads
- [utils] bump
GRAPH_APIversion to24.0
- [server] Fix
filter updates
- [types] adding
RawUpdatetype - [flows] update
enabledandrequiredfields to useConditiontype - [flows] added support for
DataExchangeActioninDataSource(on_select_actionandon_unselect_action) - [flows] update
FLOW_JSONversion to7.3 - [client] refactoring media resolving
- [templates] adding
filenamewhen sending document - [media] allow to re-upload media to another phone id
This release is a major update with significant improvements, new features, and some breaking changes. Please review the migration guide before upgrading.
- [templates] Complete refactor of template support: creation, retrieval, sending, deleting, and status updates
- [calls] Added full support for calls: making and receiving calls, call status updates, and call settings management
- [user_preferences] Added full support for user preferences
- [listeners] Unified listener handling with better safety checks
- [system] Restructured system updates into
PhoneNumberChangeandIdentityChange - [client]
upload_medianow returns aMediaobjectmark_message_as_readand otherupdate...methods now returnSuccessResultinstead ofbool- New methods:
delete_media,get_business_phone_number_settings,update_business_phone_number_settings,update_display_name,get_business_account,deregister_phone_number - Support for mm-lite-api when sending templates
- Support for getting and setting
StorageConfiguration
- [callback]
- Added
is_quick_replytoCallbackButton - Stricter dataclass validation (no
kw_only)
- Added
- [updates]
- All user updates now include
waba_id Messageinclude newreferralfield
- All user updates now include
- [types]
- Added
is_on_biz_apptoBusinessPhoneNumber SuccessResultintroduced for extensibility
- Added
- [security] Fixed XSS vulnerability
- [api]
httpx.RequestErrornow suggests providing a customhttpx.Client - [errors] Error messages are now more descriptive
- [utils]
- Enum values handled case-sensitively
- Return
FlowRequestDecryptedMediaobject instead of raw tuple - New
APIObjecthelper for dataclasses
- [deprecations] All previously deprecated attributes and types have been removed
- [docs] New pywa logo 🚀
- [templates]
paramsis now can be called on class level - [templates] adding support for
library_inputwhen creating library templates - [templates] adding support for
degrees_of_freedom_specwhen creating template - [listeners] handling old
toparameter inlistenand update migration guide
- [client] allowing to use mm-lite-api when sending a template
- [templates] allowing to set app-depplinks in
URLButton's - [templates] adding
TopBlockReasonTypeenum - [client] adding
get_business_accountmethod - [client] adding
deregister_phone_numbermethod - [client] allowing to get and set
StorageConfiguration - [callback] adding
is_quick_replytoCallbackButton - [callback] validate not
kw_onlyin dataclasses - [client] fix creating
LibraryTemplate - [system] support old
customer_changed_numbersys type - [docs] new logo for pywa!
- [templates] refactored and improved templates support
- [calls] added full support for calls
- [user_preferences] added full support for user preferences
- [server] continued handling if listener is not using the update
- [system] moved
systemmessages toPhoneNumberChangeandIdentityChangeupdates - [client] forced keyword-only for context args in
send_message,send_image, and othersend_...methods - [types] returned
SuccessResultinstead ofboolto allow future extension with other attributes - [client]
upload_mediareturnsMediaobject - [client] added
get_business_phone_number_settingsandupdate_business_phone_number_settingsto get and update calling settings - [client] added
update_display_namemethod to update the WhatsApp display name - [security] fixed XSS vulnerability
- [api] suggest to provide custom
httpx.Clientonhttpx.RequestError - [handlers] added
on_completiondecorator to flow request callback wrapper - [errors] show more descriptive error messages
- [base_update] added
waba_idfor all user updates - [message] added
referralfield - [types] support
is_on_biz_appinBusinessPhoneNumber - [client] added
delete_mediamethod - [listeners] check if
serverexists before starting to listen - [utils] handled enum values case-sensitively
- [utils] returned
FlowRequestDecryptedMediainstead of(media_id, filename, data)tuple - [utils] new
APIObjectto get fields from datacls - [deprecations] removed attrs and types marked as deprecated
- [flows] adding support for
ImageCarousel - [flows] adding
with_paramstoFlowPreviewto configure the interactive web preview - [client] adding
get_business_phone_numbersmethod - [types] adding
allmethod toResultand fixnextandpreviousto return empty result - [sent_message] fix
wait_for_clickto wait only for reply-clicks and not to samedata - [api] fix
update_conversational_automationrequest - [utils] try to import
cryptographyglobally - [utils] bump graph-api version to
23.0
- [client] allow to migrate flows from one WABA to another
- [client] improve mime-type handling when downloading media
- [message_status] adding support for per-message pricing
- [base_update] shortcuts to un/block user in update level
- [tests] test the same docstring in async
- [updates] add timezone (UTC) information to timestamps
- [client] get qr-codes and flow-assets inside
Resultto allow pagination - [docs] update examples
- [client] indicate text typing status when preparing a message
- [client] adding methods to block/unblock and get blocked users
- [types] adding
ResultandPaginationclasses to help paginate results in some methods - [user] adding
.block()and.unblock()shortcuts - [user] adding
inputfield, available when sending a message to a user - [flows] adding
label_varianttoTextInputandTextArea - [flows] adding generics to prevent type errors when using
ScreenDataandComponentsas refs - [flows] adding
CalendarRangeValuesto use whenCalendarPickermode isrange - [utils] update Version
FLOW_JSONto 7.0 andGRAPH_APIto 22.0
- [flows] adding support for
ChipsSelectorcomponent - [flows]
flow_nameinstead offlow_idwhile sending.flow_tokenis now optional - [client] allowing to create flow with flow json and publish it with one request
- [utils] update flow json latest version to 6.3
- [base_update] adding
shared_datato help sharing context between handlers & filters - [flows] adding
FlowStr- A helper class to create strings containing vars and math expressions without escaping and quoting them
- [handlers] sub-handlers ignoring flow requests with errors when
call_on_errorset to False - [handlers] fix
WhatsApp.on_flow_requeston class level to mark theFlowRequestHandlerinstance - [callback] callback data generic can be
str
- [project] hot fix to include missing files in the package
- [handlers] adding
on_init,on_data_exchangeandon_backdecorators for flow request callback wrapper - [flows]
FlowRequest.responddefaults to request flow token - [flows] adding
FlowRequest.token_no_longer_validshortcut - [flows] deprecate
FlowRequest.is_health_checkandFlowRequestActionType.PING
- [sent_message] adding
SentTemplatewithSentTemplateStatus - [flows] adding
patternforTextInput - [flows] adding support for
NavigationList - [flows] defaulting action's payload to empty dict
- [flows] deprecating
ActionNextandActionNextType
- [client] allowing to specify the callback url scope
- [client] expose methods to override callback url in waba and phone scopes
- [flows] typing
DataSourceto acceptRefs
- [flows] adding
ScreenDataUpdateto use inUpdateDataAction - [flows] using math operators between math objs
- [flows] renaming
ActionNexttoNextandActionNextTypetoNextType
- [flows] adding
CalendarPickercomponent - [flows] allow string concatenation with refs
- [flows] adding support for math expressions
- [flows] allowing to use condition in
visible - [flows] new action: open url
- [flows] new action: update data
- [flows]
init_valueavailable outside form - [flows] allow to use
screen/refas shortcut for.ref_in(screen) - [flows] separating
Actionand addingon_unselect_action
- [client] fix
send_templatereturn typeSentMessage
- [client] fix
reply_to_message
- [client] override
_flow_req_cls - [handlers] descriptive repr for
Handler
- [server] rely on update hash instead of update id to avid duplicate updates
- [server] fix skip update in process (async)
BREAKING CHANGES!! READ THE MIGRATION GUIDE
- [listeners]: Listeners are a new way to handle incoming user updates (messages, callbacks, etc.). They are more flexible, faster, and easier to use than handlers.
- [sent_message]: The
SentMessageobject returned bysend_message,send_image, etc., contains the message ID and allows to act on the sent message with methods likereply_x,wait_for_xetc. - [filters]: Filters are now objects that can be combined using logical operators. They are more powerful and flexible than the previous filter system.
- [handlers] allow to register callbacks without WhatsApp instance
- [flows] allow pythonic conditionals in
Ifcomponent - [flows]: A new method
FlowCompletion.get_media(types.Image, key="img")allows you to construct a media object and perform actions like.download()on it. - [flows]: Decrypt media directly from FlowRequest using
.decrypt_media(key, index). - [flows] rename
.data_keyand.from_refto.ref - [client]: The client can run without a token but won’t allow API operations (only webhook listening).
- [callback] allow to override callback data id
- [utils] bump graph-api version to
21.0
- [flows] adding support of
RichText - [flows] adding support of
markdowninTextBodyandTextCaption - [flows] adding
sensitiveattr to Screen, allowing to hide specific fields from the response summary - [client] adding
reply_to_messagearg tosend_location,request_location,send_sticker, andsend_audio - [message] adding
reply_location_request
- [handlers] adding priority
- [client] adding QR methods (create update get and delete)
- [client] adding
get_flow_metricsmethod - [flows] adding to
DataSourcesupport for images/colors - [flows] support
datetimeobjs inDatePicker - [flows] support
Screenwhen using.data_key_of(...)and.form_ref_of(...) - [flows] update flow json with indent and without ensuring ascii
- [flows] adding
health_statustoFlowDetails
- [server] validating
X-Hub-Signature-256header - [requirements] removing
requests - [server] default callback url registration delay to 3 sec
- [client] allowing to manage multiple numbers from the same client (Partner solutions)
- [flows] adding
.respond()shortcut forFlowRequest - [flows] allowing body in
FlowResponseErrorsubclasses
- [handlers] introducing
FlowRequestCallbackWrapperto help split flow endpoint logic to multiple handlers - [client] adding
add_flow_request_handlermethod to registerFlowRequestHandlers - [flows] pop
flow_tokenfromFlowCompletion.response - [docs] update examples
- [flows] added new components
PhotoPicker,DocumentPicker,IfandSwitch - [flows] added
.data_key_ofand.form_ref_ofto refer from other screens - [flows] added
descriptiontoCheckboxGroupand toRadioButtonsGroup - [utils] adding
flow_request_media_decryptorfunction to decrypt medias from flow requests - [client] allow updating flow application id with
update_flow_metadata - [server] remove event loop
- [docs] update examples
- [version] bump
FLOW_JSONversion to4.0
- [server] improve continue/stop handling
- [api] fix downloading media content-type
- [client] adding official support for async (limited support for now)
- [api] fix uploads
- [server] expose
webhook_challenge_handler,webhook_update_handlerandflow_request_handler
- [client] adding
skip_duplicate_updateswhen callbacks take too long to return (~25s), defaults to True - [client,handlers] allow to override
continue_handling - [message] fix async constructors
- [api] remove
requests_toolbeltfrom deps - [handlers] fix dynamic field name when
factory_before_filters
- [async] adding beta support for async!
- [client] fix document filename
- [client] allow to modify token and remove handlers/callbacks
- [tests] test client methods
- [client,message_status] Added param
trackerto all send-message-methods in order to track the message status, allowing to passCallbackDatasubclasses totrackerparam - [client,api] adding
update_conversational_automationandget_business_phone_numberto add and getcommands,ice_breakersand enableChatOpenedevents - [filters] adding
send_to_mefilters shortcut andreplays_tofilters. mark as deprecated all match-specific-type filters and create genericmatches,regexfilters for all text containing updates - [flows] adding
updated_attoFlowDetails - [message] fix
from_userin system messages - [errors] adding optionals
error_subcodeandtypeto all errors - [logging] improve loggers performance
- [utils] bump graph api version to 19.0 and expose
Versionin the package level - [docs] switch readme to markdown
- [client] fix sending single contact
- [filters] prioritize
/over!infilters.command(...)andfilters.is_command
- [chat_opened] adding a new type:
ChatOpened - [server] improve handlers and logs
- [types] warning on missing enum constant
- [flows] handle cases where there is no
flow_tokeninFlowCompletion(When the flow completion sent from iOS) - [tests] adding more tests
- [client] Added
register_phone_numbermethod - [client] mark the
bodyarg in send image/video/doc as deprecated. usecaptioninstead - [utils] bump
FLOW_JSONversion to 3.1 - [flows] allow
DataSourceinFlowResponsedata - [flows]
Image.src can be dynamic - [flows] default
ActionNextto SCREEN - [flows] adding
.successfor screen and adding in-docs examples
- [flows] define
Forminit_valuesfrom childreninit_value - [flows] adding a new
ScreenDatatype to be used in screen.data - [flows] adding
.form_refand.form_ref_of(form_name)to form components - [docs] adding s real-world example for a complex flow
- [flows] adding full support for WhatsApp Flows!
- [client] adding
request_locationmethod toWhatsAppclient - [base_update] adding
.rawattr to hold the original update - [utils] adding
Versionto provide the latest versions to the api & flows, and to perform min checks
- [utils] adding
Versionto provide the latest versions to the api & flows, and to perform min checks
- [flows] add supported types for Layout and Form
.childrenand fix FlowPreview.expires_at - [webhook] validate
cryptographyis installed when using the default flows decryptor/encryptor
- [client] expose
set_business_public_key - [flows] adding
DataKeyandFormRefto use when building aFlowJSON - [template] adding support to create and send template with
FlowButton - [errors] remove
FlowInvalidError(Too broad error code)
- [errors] adding flows specific errors
- [flows] allow to
@on_flow_requestcallbacks to return or raiseFlowResponseErrorsubclasses
- [base_update] adding
.rawattr to hold the original update - [requirements] set
cryptographyas extra dependency
- [flows] Adding beta support for WhatsApp Flows!
- [filters] adding new filter called
sent_toto filter updates even ifWhatsApp(..., filter_updates=False) - [webhook] renaming route callbacks names to allow multiple
WhatsAppinstances to use the same server - [message_type] default missing to
UNKNOWN - [bugs] fix bug on interactive message without data
- [reply_to_msg] adding
ReferredProductto message context - [filters] adding filter for messages that has
referred_productin their context - [types] unfrozen editable types
- [base_update] hash updates by their update ID
- [client] adding
dl_sessionparam of typerequests.Sessionto.upload_mediawhen uploading locally from URL - [errors] adding more
templateandflowexceptions; fix typo inTooManyMessages
- [reaction] hot-fix for reaction when "unreacting" to a message
- [filters] adding
.extensions(...)filter for all media filters
- [callback] adding support for
Optional[x]annotation inCallbackDatasubclasses - [media] allowing to pass
pathlib.Pathas a media file path - [system] make all fields nullable in system update
- [template] adding support for
OtpType.ZERO_TAPin new authentication template - [callback] adding support for optional fields in
CallbackData - [tests] update
CallbackDatatests
- [handlers] add
StopHandlingto raise if you want to stop handling the update - [errors] include
requests.Responsewith all api errors - [client] mark
keyboardargument in.send_messageas deprecated. usebuttonsinstead
- [webhook] allow to register callback url by @david-lev in #18
- [callback] Treat the Template's
QuickReplyButtonDataas an incomingCallbackButton(Reported by @bcombes in #17) - [handlers] adding
@functools.wrapsto all on_x decorators to preserve callbacks metadata
- [reply] reply to
CallbackButton.id instead of to.reply_to_messageby @yehuda-lev in #16 - [callback] change default
CallbackDataseparators to unused characters (¶for clb sep,~for data sep and§for True boolean
- [callback] hot-fix for last booleans fields on
CallbackData(WhatsApp Cloud API consider "1: " and "1:" as duplicate datas)
- [types] new
ButtonUrltype - [client] allowing to provide
mime_typewhen sending media as bytes, open file or file path without extensions
- [handlers] apply callback data factory before filters by setting
factory_before_filtersto True when registering the handler
- [template] fix media key
- [webhook] faster field-to-handler matching
- [message-status] make
.pricing_modeloptional
- [callback] better typing for
callback_dataandfactory
- [build] Fix package imports
- [callback] allowing to override separators in
CallbackDatasubclasses - [tests] starting to adding tests
- [message] reaction messages are also replays (.is_reply)
- [api] bump api version to 18.0
- [template] new update type -
TemplateStatus; remove deprecated headers - [build] move to
pyproject.toml - [docs] tips and improvements
- [reaction] Fix ReactionFilter and TextFilter by @yehuda-lev in #12
- [callback] allowing to provide
factoryto construct callback data (ButtonandSelection) into custom object. - [callback] adding type-safe
CallbackDatainterface in order to send and receive typed callback data. - [webhook] add protocols for supported web frameworks.
- [template] adding support for
CopyCodeButtonand addLanguageenum for better typing - [filters] adding
from_countriesfilter - [typing] fix typos by @nallon in #10
- [template] adding support for
MPMButtonandCatalogButton. - [template] rename and mark as deprecated template headers.
- [template] adding support for sending and creating template messages
- [errors] adding more errors
- FIRST STABLE RELEASE - VERSION 1.0.0