Implementing Plugin Hooks
The Delta Chat Python bindings use pluggy for managing global and per-account plugin registration, and performing hook calls. There are two kinds of plugins:
Global plugins that are active for all accounts; they can implement hooks at account-creation and account-shutdown time.
Account plugins that are only active during the lifetime of a single Account instance.
Registering a plugin
Register a global plugin which implements one or more of the
- Account.add_account_plugin(plugin, name=None)
add an account plugin which implements one or more of the
Per-Account Hook specifications
- class deltachat.hookspec.PerAccount
per-Account-instance hook specifications.
All hooks are executed in a dedicated Event thread. Hooks are generally not allowed to block/last long as this blocks overall event processing on the python side.
process a CFFI low level events for a given account.
ffi_event has “name”, “data1”, “data2” values as specified with DC_EVENT_*.
log a message related to the account.
- ac_configure_completed(success, comment)
Called after a configure process completed.
Called on any incoming message (both existing chats and contact requests).
Called on each outgoing message (both system and “normal”).
Called when message reactions changed.
Called when an outgoing message has been delivered to SMTP.
message – Message that was just delivered.
Chat was created or modified regarding membership, avatar, title.
chat – Chat which was modified.
- ac_member_added(chat, contact, actor, message)
Called for each contact added to an accepted chat.
chat – Chat where contact was added.
contact – Contact that was added.
actor – Who added the contact (None if it was our self-addr)
message – The original system message that reports the addition.
- ac_member_removed(chat, contact, actor, message)
Called for each contact removed from a chat.
chat – Chat where contact was removed.
contact – Contact that was removed.
actor – Who removed the contact (None if it was our self-addr)
message – The original system message that reports the removal.
Global Hook specifications
- class deltachat.hookspec.Global
global hook specifications using a per-process singleton plugin manager instance.
called when Account::__init__() function starts executing.
Called when account configuration successfully finished.
This hook can be used to perform extra work before ac_configure_completed is called.
Called after the account has been shutdown.