Software / code / verse
Comparison
plugins/groupchat.lua @ 187:7ad218bd5fde
plugins.groupchat: Fix prev commit.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 25 Jan 2011 19:33:15 +0100 |
| parent | 186:bb34b8bc00ae |
| child | 189:033f1bd7420d |
comparison
equal
deleted
inserted
replaced
| 186:bb34b8bc00ae | 187:7ad218bd5fde |
|---|---|
| 11 stream:add_plugin("presence") | 11 stream:add_plugin("presence") |
| 12 stream.rooms = {}; | 12 stream.rooms = {}; |
| 13 | 13 |
| 14 stream:hook("stanza", function (stanza) | 14 stream:hook("stanza", function (stanza) |
| 15 local room_jid = jid.bare(stanza.attr.from); | 15 local room_jid = jid.bare(stanza.attr.from); |
| 16 local room = stream.rooms[room_jid] or stream.rooms[stanza.attr.to.." "..room_jid] or nil | 16 if not room_jid then return end |
| 17 local room = stream.rooms[room_jid] | |
| 18 if not room and stanza.attr.to and room_jid then | |
| 19 room = stream.rooms[stanza.attr.to.." "..room_jid] | |
| 20 end | |
| 17 if room and room.opts.source and stanza.attr.to ~= room.opts.source then return end | 21 if room and room.opts.source and stanza.attr.to ~= room.opts.source then return end |
| 18 if room then | 22 if room then |
| 19 local nick = select(3, jid.split(stanza.attr.from)); | 23 local nick = select(3, jid.split(stanza.attr.from)); |
| 20 local body = stanza:get_child("body"); | 24 local body = stanza:get_child("body"); |
| 21 local delay = stanza:get_child("delay", xmlns_delay); | 25 local delay = stanza:get_child("delay", xmlns_delay); |
| 35 | 39 |
| 36 function stream:join_room(jid, nick, opts) | 40 function stream:join_room(jid, nick, opts) |
| 37 if not nick then | 41 if not nick then |
| 38 return false, "no nickname supplied" | 42 return false, "no nickname supplied" |
| 39 end | 43 end |
| 44 opts = opts or {}; | |
| 40 local room = setmetatable({ | 45 local room = setmetatable({ |
| 41 stream = stream, jid = jid, nick = nick, | 46 stream = stream, jid = jid, nick = nick, |
| 42 subject = nil, | 47 subject = nil, |
| 43 occupants = {}, | 48 occupants = {}, |
| 44 opts = opts, | 49 opts = opts, |
| 114 | 119 |
| 115 function room_mt:send(stanza) | 120 function room_mt:send(stanza) |
| 116 if stanza.name == "message" and not stanza.attr.type then | 121 if stanza.name == "message" and not stanza.attr.type then |
| 117 stanza.attr.type = "groupchat"; | 122 stanza.attr.type = "groupchat"; |
| 118 end | 123 end |
| 119 if stanza.name == "presence" or not stanza.attr.to then | 124 if stanza.name == "presence" then |
| 120 stanza.attr.to = self.jid .."/"..self.nick; | 125 stanza.attr.to = self.jid .."/"..self.nick; |
| 121 end | 126 end |
| 122 if stanza.attr.type == "groupchat" or not stanza.attr.to then | 127 if stanza.attr.type == "groupchat" or not stanza.attr.to then |
| 123 stanza.attr.to = self.jid; | 128 stanza.attr.to = self.jid; |
| 124 end | 129 end |