36 local ret = room:event(stanza.name, event); |
36 local ret = room:event(stanza.name, event); |
37 return ret or (stanza.name == "message") or nil; |
37 return ret or (stanza.name == "message") or nil; |
38 end |
38 end |
39 end, 500); |
39 end, 500); |
40 |
40 |
41 function stream:join_room(jid, nick, opts) |
41 function stream:join_room(jid, nick, opts, password) |
42 if not nick then |
42 if not nick then |
43 return false, "no nickname supplied" |
43 return false, "no nickname supplied" |
44 end |
44 end |
45 opts = opts or {}; |
45 opts = opts or {}; |
46 local room = setmetatable(verse.eventable{ |
46 local room = setmetatable(verse.eventable{ |
102 room.subject = subject; |
102 room.subject = subject; |
103 return room:event("subject-changed", { from = old_subject, to = subject, by = event.sender, event = event }); |
103 return room:event("subject-changed", { from = old_subject, to = subject, by = event.sender, event = event }); |
104 end |
104 end |
105 end, 2000); |
105 end, 2000); |
106 local join_st = verse.presence():tag("x",{xmlns = xmlns_muc}):reset(); |
106 local join_st = verse.presence():tag("x",{xmlns = xmlns_muc}):reset(); |
|
107 if password then |
|
108 join_st:get_child("x", xmlns_muc):tag("password"):text(password):reset(); |
|
109 end |
107 self:event("pre-groupchat/joining", join_st); |
110 self:event("pre-groupchat/joining", join_st); |
108 room:send(join_st) |
111 room:send(join_st) |
109 self:event("groupchat/joining", room); |
112 self:event("groupchat/joining", room); |
110 return room; |
113 return room; |
111 end |
114 end |