class ProbeBot(bot.BenderJab): def __init__(self, *args, **kwargs): super(ProbeBot, self).__init__(*args, **kwargs) self.argparse = BotArgumentParser() self.subparsers = self.argparse.add_subparsers() helpparser = self.subparsers.add_parser('help') helpparser.set_defaults(func=self.format_help) def logon(self, jid=None, password=None, resource=None): super(ProbeBot, self).logon(jid, password, resource) print("registering") self.cl.RegisterHandler('iq', self.iqCB) def list_commands(self, arg): return "Available commands: " + ", ".join(list(self.commands.keys())) def messageCB(self, conn, msg): tree = fromstring(str(msg)) dump(tree) return super(ProbeBot, self).messageCB(conn, msg) def presenceCB(self, conn, msg): tree = fromstring(str(msg)) dump(tree) return super(ProbeBot, self).presenceCB(conn, msg) def iqCB(self, dis, stanza): #print "dis:", unicode(dis) tree = fromstring(str(stanza)) dump(tree) def format_help(self, args): return self.argparse.format_help() def _parser(self, message, who): if message: cmdline = shlex.split(message) args = self.argparse.parse_args(cmdline) print("args", args) args.frm = who if args.func: return args.func(args) return "Didn't understand:" + str(message) def command(self, name, **kwargs): def wrapper(func): if not hasattr(func, SUBPARSER): func.subparser = self.subparsers.add_parser(name, **kwargs) func.subparser.prog = name func.subparser.set_defaults(func=func) func.subparser.set_defaults(bot=self) return func return wrapper def argument(self, *args, **kwargs): def wrapper(func): if not hasattr(func, SUBPARSER): raise RuntimeError("Please use bot.command first") func.subparser.add_argument(*args, **kwargs) return func return wrapper
class ProbeBot(bot.BenderJab): def __init__(self, *args, **kwargs): super(ProbeBot, self).__init__(*args, **kwargs) self.argparse = BotArgumentParser() self.subparsers = self.argparse.add_subparsers() helpparser = self.subparsers.add_parser("help") helpparser.set_defaults(func=self.format_help) def logon(self, jid=None, password=None, resource=None): super(ProbeBot, self).logon(jid, password, resource) print("registering") self.cl.RegisterHandler("iq", self.iqCB) def list_commands(self, arg): return "Available commands: " + ", ".join(list(self.commands.keys())) def messageCB(self, conn, msg): tree = fromstring(str(msg)) dump(tree) return super(ProbeBot, self).messageCB(conn, msg) def presenceCB(self, conn, msg): tree = fromstring(str(msg)) dump(tree) return super(ProbeBot, self).presenceCB(conn, msg) def iqCB(self, dis, stanza): # print "dis:", unicode(dis) tree = fromstring(str(stanza)) dump(tree) def format_help(self, args): return self.argparse.format_help() def _parser(self, message, who): if message: cmdline = shlex.split(message) args = self.argparse.parse_args(cmdline) print("args", args) args.frm = who if args.func: return args.func(args) return "Didn't understand:" + str(message) def command(self, name, **kwargs): def wrapper(func): if not hasattr(func, SUBPARSER): func.subparser = self.subparsers.add_parser(name, **kwargs) func.subparser.prog = name func.subparser.set_defaults(func=func) func.subparser.set_defaults(bot=self) return func return wrapper def argument(self, *args, **kwargs): def wrapper(func): if not hasattr(func, SUBPARSER): raise RuntimeError("Please use bot.command first") func.subparser.add_argument(*args, **kwargs) return func return wrapper