# HG changeset patch # User Goffi # Date 1348786132 -7200 # Node ID 64ff046dc201eaa67f727558bc9914b33e74026b # Parent 7c6609dddb2c80eb668e171d65617389f3c1343b plugin text commands: added /join command diff -r 7c6609dddb2c -r 64ff046dc201 src/plugins/plugin_misc_text_commands.py --- a/src/plugins/plugin_misc_text_commands.py Fri Sep 28 00:31:10 2012 +0200 +++ b/src/plugins/plugin_misc_text_commands.py Fri Sep 28 00:48:52 2012 +0200 @@ -90,6 +90,22 @@ return False + def cmd_join(self, mess_data, profile): + debug("Catched join command") + + if mess_data['type'] != "groupchat": + #/leave command does nothing if we are not on a group chat + info("Ignoring /join command on a non groupchat message") + return True + + if mess_data["unparsed"].strip(): + room = self._getRoomJID(mess_data["unparsed"].strip(), mess_data["to"].host) + nick = (self.host.plugins["XEP-0045"].getRoomNick(mess_data["to"].userhost(), profile) or + self.host.getClient(profile).jid.user) + self.host.plugins["XEP-0045"].join(room, nick, {}, profile) + + return False + def cmd_leave(self, mess_data, profile): debug("Catched leave command") diff -r 7c6609dddb2c -r 64ff046dc201 src/plugins/plugin_xep_0045.py --- a/src/plugins/plugin_xep_0045.py Fri Sep 28 00:31:10 2012 +0200 +++ b/src/plugins/plugin_xep_0045.py Fri Sep 28 00:48:52 2012 +0200 @@ -117,15 +117,15 @@ result.append((room.roomJID.userhost(), [user.nick for user in room.roster.values()], room.nick)) return result - def getRoomNick(self, room_jid, profile_key='@DEFAULT@'): + def getRoomNick(self, room_jid_s, profile_key='@DEFAULT@'): """return nick used in room by user - @param room_jid: unicode room id + @param room_jid_s: unicode room id @profile_key: profile @return: nick or empty string in case of error""" profile = self.host.memory.getProfileName(profile_key) - if not self.__check_profile(profile) or not self.clients[profile].joined_rooms.has_key(room_jid): + if not self.__check_profile(profile) or not self.clients[profile].joined_rooms.has_key(room_jid_s): return '' - return self.clients[profile].joined_rooms[room_jid].nick + return self.clients[profile].joined_rooms[room_jid_s].nick def getRoomsSubjects(self, profile_key='@DEFAULT@'): """Return received subjects of rooms"""