changeset 509:64ff046dc201

plugin text commands: added /join command
author Goffi <goffi@goffi.org>
date Fri, 28 Sep 2012 00:48:52 +0200
parents 7c6609dddb2c
children 886754295efe
files src/plugins/plugin_misc_text_commands.py src/plugins/plugin_xep_0045.py
diffstat 2 files changed, 20 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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")
         
--- 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"""