From 1f00a4fd8e369b2b9680f2a3f09c748c8db60e23 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 25 Mar 2021 13:18:23 +0100 Subject: 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. --- plugins/muc/muc.lib.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'plugins') diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index d1449af1..f34b579c 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -1186,10 +1186,15 @@ function room_mt:handle_groupchat_to_room(origin, stanza) 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; -- cgit v1.2.3