# HG changeset patch # User Goffi # Date 1348785070 -7200 # Node ID 7c6609dddb2c80eb668e171d65617389f3c1343b # Parent f98bef71a9189ec05c132c758d6aa7068e77c3ed plugin text commands: /leave management: - _getRoomJid manage room jid argument: the argument can be full jid or a shortcut. in case of shortcut, room or room@ can be used for shortcut room@service.domain.tld where service.domain.tld is the same as the one of the room where the command is entered - /leave alone leave the current room, /leave [room] leave the given room - /part is a synonym of /leave diff -r f98bef71a918 -r 7c6609dddb2c src/plugins/plugin_misc_text_commands.py --- a/src/plugins/plugin_misc_text_commands.py Fri Sep 28 00:26:24 2012 +0200 +++ b/src/plugins/plugin_misc_text_commands.py Fri Sep 28 00:31:10 2012 +0200 @@ -19,6 +19,7 @@ along with this program. If not, see . """ +from twisted.words.protocols.jabber import jid from logging import debug, info, warning, error PLUGIN_INFO = { @@ -60,6 +61,18 @@ pass return True + def _getRoomJID(self, arg, service_jid): + """Return a room jid with a shortcut + @param arg: argument: can be a full room jid (e.g.: sat@chat.jabberfr.org) + or a shortcut (e.g.: sat or sat@ for sat on current service) + @param service_jid: jid of the current service (e.g.: chat.jabberfr.org) + """ + nb_arobas = arg.count('@') + if nb_arobas == 1: + if arg[-1] !='@': + return jid.JID(arg) + return jid.JID(arg+service_jid) + return jid.JID(u"%s@%s" % (arg, service_jid)) def cmd_nick(self, mess_data, profile): debug("Catched nick command") @@ -76,3 +89,25 @@ self.host.plugins["XEP-0045"].nick(room,nick,profile) return False + + def cmd_leave(self, mess_data, profile): + debug("Catched leave command") + + if mess_data['type'] != "groupchat": + #/leave command does nothing if we are not on a group chat + info("Ignoring /leave command on a non groupchat message") + return True + + if mess_data["unparsed"].strip(): + room = self._getRoomJID(mess_data["unparsed"].strip(), mess_data["to"].host) + else: + room = mess_data["to"] + + self.host.plugins["XEP-0045"].leave(room,profile) + + return False + + def cmd_part(self, mess_data, profile): + """just a synonym of /leave""" + return self.cmd_leave(mess_data, profile) +