Mercurial > prosody-modules
changeset 5944:4b677e445b8a
mod_muc_moderation: adding a new hook that can be used to cancel the moderation, or modify resulting stanzas.
author | John Livingston <git@john-livingston.fr> |
---|---|
date | Mon, 29 Jul 2024 13:08:43 +0200 |
parents | 5076b78c95ef |
children | a316fee71bed |
files | mod_muc_moderation/mod_muc_moderation.lua |
diffstat | 1 files changed, 20 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_muc_moderation/mod_muc_moderation.lua Mon Jul 29 12:35:19 2024 +0200 +++ b/mod_muc_moderation/mod_muc_moderation.lua Mon Jul 29 13:08:43 2024 +0200 @@ -109,8 +109,9 @@ announcement:reset(); + local tombstone = nil; if muc_log_archive.set and retract then - local tombstone = st.message({ from = original.attr.from, type = "groupchat", id = original.attr.id }) + tombstone = st.message({ from = original.attr.from, type = "groupchat", id = original.attr.id }) :tag("moderated", { xmlns = xmlns_moderate, by = actor_nick }) :tag("retracted", { xmlns = xmlns_retract, stamp = dt.datetime() }):up(); @@ -129,7 +130,25 @@ end end tombstone:reset(); + end + -- fire an event, that can be used to cancel the moderation, or modify stanzas. + local event = { + room = room; + announcement = announcement; + tombstone = tombstone; + stanza_id = stanza_id; + retract = retract; + reason = reason; + actor = actor; + actor_nick = actor_nick; + }; + if module:fire_event("muc-moderate-message", event) then + -- TODO: allow to change the error message? + return false, "wait", "internal-server-error"; + end + + if tombstone then local was_replaced = muc_log_archive:set(room_node, stanza_id, tombstone); if not was_replaced then return false, "wait", "internal-server-error";