plugin text commands: added /join command

This commit is contained in:
Goffi 2012-09-28 00:48:52 +02:00
commit 4225b694d0
2 changed files with 20 additions and 4 deletions

View file

@ -90,6 +90,22 @@ class TextCommands():
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")

View file

@ -117,15 +117,15 @@ class XEP_0045():
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"""