Changeset

5162:243c156074d3

mod_muc_auto_member: New module to automatically make MUC participants members
author Matthew Wild <mwild1@gmail.com>
date Mon, 30 Jan 2023 15:07:31 +0000
parents 5161:6af2d74daa15
children 5163:41fbed2de482
files mod_muc_auto_member/README.markdown mod_muc_auto_member/mod_muc_auto_member.lua
diffstat 2 files changed, 41 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_muc_auto_member/README.markdown	Mon Jan 30 15:07:31 2023 +0000
@@ -0,0 +1,33 @@
+---
+labels:
+- 'Stage-Beta'
+summary: "Automatically register new MUC participants as members"
+...
+
+# Introduction
+
+This module automatically makes anybody who joins a MUC become a registered
+member. This can be useful for certain use cases.
+
+Note: there is no automatic cleanup of members. If you enable this on a server
+with busy public channels, your member list will perpetually increase in size.
+
+Also, there is currently no per-room option for this behaviour. That may be
+added in the future, along with membership expiry.
+
+# Configuration
+
+There is currently no configuration for this module. The module should be
+enabled on your MUC component, i.e. in the modules_enabled option under your
+Component:
+
+``` {.lua}
+Component "conference.example.com" "muc"
+    modules_enabled = {
+        "muc_auto_member";
+    }
+```
+
+# Compatibility
+
+0.12 and later.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_muc_auto_member/mod_muc_auto_member.lua	Mon Jan 30 15:07:31 2023 +0000
@@ -0,0 +1,8 @@
+module:hook("muc-occupant-joined", function (event)
+	local room = event.room;
+	local occupant_jid = event.occupant.bare_jid;
+	local aff = room:get_affiliation(occupant_jid);
+	if aff then return; end -- user already registered
+	module:log("debug", "Automatically registering %s as a member in %s", occupant_jid, room.jid);
+	room:set_affiliation(true, occupant_jid, "member");
+end);