Diff

plugins/muc/muc.lib.lua @ 11498:d61ec5e6ee16

MUC: Allow overriding occupant object from groupchat message event Use case: Enable module that provides a virtual occupant object for bots Before, if there is no occupant then either some other part of MUC would reject the message or `occupant.nick` would have caused an error.
author Kim Alvefur <zash@zash.se>
date Thu, 25 Mar 2021 13:18:23 +0100
parent 11246:ab189e707705
child 11713:7623767df468
line wrap: on
line diff
--- a/plugins/muc/muc.lib.lua	Thu Apr 01 12:30:55 2021 +0200
+++ b/plugins/muc/muc.lib.lua	Thu Mar 25 13:18:23 2021 +0100
@@ -1186,10 +1186,15 @@
 	if not stanza.attr.id then
 		stanza.attr.id = new_id()
 	end
-	if module:fire_event("muc-occupant-groupchat", {
-		room = self; origin = origin; stanza = stanza; from = from; occupant = occupant;
-	}) then return true; end
-	stanza.attr.from = occupant.nick;
+	local event_data = {room = self; origin = origin; stanza = stanza; from = from; occupant = occupant};
+	if module:fire_event("muc-occupant-groupchat", event_data) then
+		return true;
+	end
+	if event_data.occupant then
+		stanza.attr.from = event_data.occupant.nick;
+	else
+		stanza.attr.from = self.jid;
+	end
 	self:broadcast_message(stanza);
 	stanza.attr.from = from;
 	return true;