plugins/groupchat.lua

changeset 9
8c3bec93087b
parent 0
7d84f4403d67
child 14
3df63aaba9e3
--- 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}));

mercurial