comparison mod_muc_intercom/mod_muc_intercom.lua @ 285:108ac6f16d2d

mod_muc_intercom: Add a delay to the forwarded message.
author Kim Alvefur <zash@zash.se>
date Wed, 08 Dec 2010 19:01:13 +0100
parents 6d72c5172c74
children 9c894b56b4e4
comparison
equal deleted inserted replaced
284:3b96bba9f7e5 285:108ac6f16d2d
2 -- By Kim Alvefur <zash@zash.se> 2 -- By Kim Alvefur <zash@zash.se>
3 3
4 local host_session = prosody.hosts[module.host]; 4 local host_session = prosody.hosts[module.host];
5 local st_msg = require "util.stanza".message; 5 local st_msg = require "util.stanza".message;
6 local jid = require "util.jid"; 6 local jid = require "util.jid";
7 local now = require "util.datetime".datetime;
7 8
8 function check_message(data) 9 function check_message(data)
9 local origin, stanza = data.origin, data.stanza; 10 local origin, stanza = data.origin, data.stanza;
10 local muc_rooms = host_session.muc and host_session.muc.rooms; 11 local muc_rooms = host_session.muc and host_session.muc.rooms;
11 if not muc_rooms then return; end 12 if not muc_rooms then return; end
31 if not muc_rooms[bare_room] then return; end -- TODO send a error 32 if not muc_rooms[bare_room] then return; end -- TODO send a error
32 module:log("info", "message from %s in %s to %s", from_nick, from_room, target_room); 33 module:log("info", "message from %s in %s to %s", from_nick, from_room, target_room);
33 34
34 local sender = jid.join(target_room, module.host, from_room .. "/" .. from_nick); 35 local sender = jid.join(target_room, module.host, from_room .. "/" .. from_nick);
35 local forward_stanza = st_msg({from = sender, to = bare_room, type = "groupchat"}, message); 36 local forward_stanza = st_msg({from = sender, to = bare_room, type = "groupchat"}, message);
37 forward_stanza:tag("delay", { xmlns = 'urn:xmpp:delay', from = from_room_jid, stamp = now() }):up();
36 38
37 module:log("debug", "broadcasting message to target room"); 39 module:log("debug", "broadcasting message to target room");
38 muc_rooms[bare_room]:broadcast_message(forward_stanza); 40 muc_rooms[bare_room]:broadcast_message(forward_stanza);
39 end 41 end
40 42