# HG changeset patch # User Goffi # Date 1350753771 -7200 # Node ID 59b32c04e1054103aeab2a8de278bd54aad797e1 # Parent 7ee15fbe8c084685370e2c2fa4d979b0a1ff975a plugin text commands: added /help command diff -r 7ee15fbe8c08 -r 59b32c04e105 src/plugins/plugin_misc_text_commands.py --- a/src/plugins/plugin_misc_text_commands.py Sat Oct 20 18:18:40 2012 +0200 +++ b/src/plugins/plugin_misc_text_commands.py Sat Oct 20 19:22:51 2012 +0200 @@ -34,6 +34,9 @@ } class TextCommands(): + #FIXME: doc strings for commands have to be translatable + # plugins need a dynamic translation system (translation + # should be downloadable independently) def __init__(self, host): info(_("Text commands initialization")) @@ -75,6 +78,7 @@ return jid.JID(u"%s@%s" % (arg, service_jid)) def cmd_nick(self, mess_data, profile): + """change nickname""" debug("Catched nick command") if mess_data['type'] != "groupchat": @@ -91,6 +95,7 @@ return False def cmd_join(self, mess_data, profile): + """join a new room (on the same service if full jid is not specified)""" debug("Catched join command") if mess_data['type'] != "groupchat": @@ -107,6 +112,7 @@ return False def cmd_leave(self, mess_data, profile): + """quit a room""" debug("Catched leave command") if mess_data['type'] != "groupchat": @@ -128,6 +134,7 @@ return self.cmd_leave(mess_data, profile) def cmd_title(self, mess_data, profile): + """Change room's subject""" debug("Catched title command") if mess_data['type'] != "groupchat": @@ -143,3 +150,29 @@ return False + def cmd_help(self, mess_data, profile): + """show help on available commands""" + commands=filter(lambda method: method.startswith('cmd_'), dir(self)) + longuest = max([len(command) for command in commands]) + help_cmds = [] + + for command in commands: + method = getattr(self, command) + try: + help_str = method.__doc__.split('\n')[0] + except AttributeError: + help_str = '' + spaces = (longuest - len(command)) * ' ' + help_cmds.append(" /%s: %s %s" % (command[4:], spaces, help_str)) + + if mess_data["type"] == 'groupchat': + _from = mess_data["to"].userhostJID() + else: + _from = self.host.getJidNStream(profile)[0] + + help_mess = _(u"Text commands available:\n%s") % (u'\n'.join(help_cmds),) + + self.host.bridge.newMessage(unicode(mess_data["to"]), help_mess, mess_data['type'], unicode(_from), {}, profile=profile) + + +