Thu, 18 Mar 2010 14:16:05 +0100
groupchat.lua: make the occupant-left event work
tell.lua: double check the room and clear told tellings.
plugins/groupchat.lua | file | annotate | diff | comparison | revisions |
--- a/plugins/groupchat.lua Thu Mar 18 12:51:48 2010 +0100 +++ b/plugins/groupchat.lua Thu Mar 18 14:16:05 2010 +0100 @@ -60,23 +60,21 @@ local occupants = room.occupants; room:hook("presence", function (presence) local nick = presence.nick; - if not occupants[nick] then - if presence.type ~= "unavailable" then - occupants[nick] = { - nick = nick; - jid = presence.stanza.attr.from; - presence = presence.stanza; - }; - if nick == room.nick then - room.bot:event("groupchat/joined", room); - else - room:event("occupant-joined", occupants[nick]); - end + if not occupants[nick] and presence.stanza.attr.type ~= "unavailable" then + occupants[nick] = { + nick = nick; + jid = presence.stanza.attr.from; + presence = presence.stanza; + }; + if nick == room.nick then + room.bot:event("groupchat/joined", room); else - occupants[nick].presence = presence.stanza; - room:event("occupant-left", occupants[nick]); - occupants[nick] = nil; + room:event("occupant-joined", occupants[nick]); end + elseif occupants[nick] and presence.stanza.attr.type == "unavailable" then + occupants[nick].presence = presence.stanza; + room:event("occupant-left", occupants[nick]); + occupants[nick] = nil; end end); self:send(st.presence({to = jid.."/"..nick}));