Tue, 09 Nov 2010 03:19:19 +0100
plugins.groupchat: Cleanup properly when leaving a room, even if kicked.
plugins/groupchat.lua | file | annotate | diff | comparison | revisions |
--- a/plugins/groupchat.lua Tue Nov 09 03:01:30 2010 +0100 +++ b/plugins/groupchat.lua Tue Nov 09 03:19:19 2010 +0100 @@ -86,9 +86,14 @@ 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; + if nick == room.nick then + room.bot:event("groupchat/left", room); + self.rooms[room.jid] = nil; + else + occupants[nick].presence = presence.stanza; + room:event("occupant-left", occupants[nick]); + occupants[nick] = nil; + end end end); self:send(st.presence({to = jid.."/"..nick}) @@ -115,7 +120,6 @@ function room_mt:leave(message) self.bot:event("groupchat/leaving", room); self:send(st.presence({type="unavailable"})); - self.bot:event("groupchat/left", room); end function room_mt:event(name, arg)