--- a/mod_muc_restrict_pm/mod_muc_restrict_pm.lua Tue May 21 01:09:12 2024 -0500
+++ b/mod_muc_restrict_pm/mod_muc_restrict_pm.lua Wed May 22 21:11:24 2024 -0500
@@ -50,14 +50,14 @@
{ value = 'none', label = 'Everyone', default = affilpm == 'none' }
}
});
-
+
table.insert(event.form, {
name = 'muc#restrict_pm_to';
type = 'boolean';
label = 'Allow PMs to everyone';
value = can_pm_anyone(event.room);
});
-
+
table.insert(event.form, {
name = 'muc#restrict_pm_visitor';
type = 'boolean';
@@ -91,19 +91,26 @@
end
module:hook("muc-private-message", function(event)
- local from_occupant, to_occupant = event.room:get_occupant_by_nick(event.stanza.attr.from), event.room:get_occupant_by_nick(event.stanza.attr.to);
-
+ local stanza, room = event.stanza, event.room;
+ local from_occupant = room:get_occupant_by_nick(stanza.attr.from);
+ local to_occupant = room:get_occupant_by_nick(stanza.attr.to);
+
-- To self is always okay
if to_occupant.bare_jid == from_occupant.bare_jid then return; end
-
+
-- To moderation is okay
if to_occupant and to_occupant.role == 'moderator' then return; end
-
- if not is_visitor_pm_off(event.room) or (from_occupant == nil or from_occupant.role ~= 'visitor') then
+
+ if not is_visitor_pm_off(room) or (from_occupant == nil or from_occupant.role ~= 'visitor') then
-- If visitors disabled
- if can_user_pm(event.room, from_occupant.bare_jid) and (can_pm_anyone(event.room) or can_user_pm(event.room, to_occupant.bare_jid)) then return; end;
+ if can_user_pm(room, from_occupant.bare_jid) and (can_pm_anyone(room) or can_user_pm(room, to_occupant.bare_jid)) then
+ return;
+ end;
end
-
- event.room:route_to_occupant(from_occupant, st.error_reply(event.stanza, "cancel", "policy-violation", "Private messages are disabled", event.room.jid));
+
+ room:route_to_occupant(
+ from_occupant,
+ st.error_reply(stanza, "cancel", "policy-violation", "Private messages are disabled", room.jid)
+ );
return false;
end, 1);