From 053c3f0ae6e061f69fd989ecd9f5255317df23f5 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Sat, 4 Sep 2010 12:26:50 -0500 Subject: [PATCH] properly call admin functions within do. before this, recursion type stuff wasn't responded to properly because do wasn't returning the methods' text --- modules/IrcAdmin.py | 129 ++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 66 deletions(-) diff --git a/modules/IrcAdmin.py b/modules/IrcAdmin.py index fc1ac64..0610d67 100644 --- a/modules/IrcAdmin.py +++ b/modules/IrcAdmin.py @@ -59,85 +59,82 @@ class IrcAdmin(Module): except NoOptionError: pass def do(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - # this could be more sophisticated, but i'm too lazy to do a real port - # right now. + """Try all the admin methods.""" + # TODO: sophisticate. also, document all of these - self.sub_join_channel(connection, event, nick, userhost, replypath, what, admin_unlocked) - self.sub_part_channel(connection, event, nick, userhost, replypath, what, admin_unlocked) - self.sub_quit_irc(connection, event, nick, userhost, replypath, what, admin_unlocked) - self.sub_autojoin_manipulate(connection, event, nick, userhost, replypath, what, admin_unlocked) - self.sub_save_config(connection, event, nick, userhost, replypath, what, admin_unlocked) - self.sub_change_nick(connection, event, nick, userhost, replypath, what, admin_unlocked) + + whats = what.split(' ') + + if whats[0] == 'join' and admin_unlocked and len(whats) >= 2: + return self.sub_join_channel(connection, event, nick, userhost, replypath, what, admin_unlocked) + elif whats[0] == 'part' and admin_unlocked and len(whats) >= 2: + return self.sub_part_channel(connection, event, nick, userhost, replypath, what, admin_unlocked) + elif whats[0] == 'quit' and admin_unlocked: + return self.sub_quit_irc(connection, event, nick, userhost, replypath, what, admin_unlocked) + elif whats[0] == 'autojoin' and admin_unlocked and len(whats) >= 3: + return self.sub_autojoin_manipulate(connection, event, nick, userhost, replypath, what, admin_unlocked) + elif whats[0] == 'config' and whats[1] == 'save' and admin_unlocked: + return self.sub_save_config(connection, event, nick, userhost, replypath, what, admin_unlocked) + elif whats[0] == 'nick' and admin_unlocked and len(whats) >= 2: + return self.sub_change_nick(connection, event, nick, userhost, replypath, what, admin_unlocked) def sub_join_channel(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - whats = what.split(' ') - if whats[0] == 'join' and admin_unlocked and len(whats) >= 2: - channel = whats[1] - if irclib.is_channel(channel): - connection.join(channel) - replystr = 'joined ' + channel - return self.reply(connection, replypath, replystr) + channel = whats[1] + if irclib.is_channel(channel): + connection.join(channel) + replystr = 'joined ' + channel + return self.reply(connection, replypath, replystr) def sub_part_channel(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - whats = what.split(' ') - if whats[0] == 'part' and admin_unlocked and len(whats) >= 2: - channel = whats[1] - if irclib.is_channel(channel): - connection.part(channel, ' '.join(whats[2:])) - replystr = 'parted ' + channel - return self.reply(connection, replypath, replystr) + channel = whats[1] + if irclib.is_channel(channel): + connection.part(channel, ' '.join(whats[2:])) + replystr = 'parted ' + channel + return self.reply(connection, replypath, replystr) def sub_quit_irc(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - whats = what.split(' ') - if whats[0] == 'quit' and admin_unlocked: - if replypath is not None: - connection.privmsg(replypath, 'quitting') - connection.quit(' '.join(whats[1:])) - self.save_config() - sys.exit() + if replypath is not None: + connection.privmsg(replypath, 'quitting') + connection.quit(' '.join(whats[1:])) + self.save_config() + sys.exit() def sub_autojoin_manipulate(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - whats = what.split(' ') - if whats[0] == 'autojoin' and admin_unlocked and len(whats) >= 3: - if whats[1] == 'add': - try: - # get existing list - channel = whats[2] - if irclib.is_channel(channel): - channelset = set(self.config.get(self.__class__.__name__, 'autojoin').split(',')) - channelset.add(channel) - self.config.set(self.__class__.__name__, 'autojoin', ','.join(channelset)) - replystr = 'added ' + channel + ' to autojoin' - return self.reply(connection, replypath, replystr) - except NoOptionError: pass - elif whats[1] == 'remove': - try: - # get existing list - channel = whats[2] - if irclib.is_channel(channel): - channelset = set(self.config.get(self.__class__.__name__, 'autojoin').split(',')) - channelset.discard(channel) - self.config.set(self.__class__.__name__, 'autojoin', ','.join(channelset)) - replystr = 'removed ' + channel + ' from autojoin' - return self.reply(connection, replypath, replystr) - except NoOptionError: pass + if whats[1] == 'add': + try: + # get existing list + channel = whats[2] + if irclib.is_channel(channel): + channelset = set(self.config.get(self.__class__.__name__, 'autojoin').split(',')) + channelset.add(channel) + self.config.set(self.__class__.__name__, 'autojoin', ','.join(channelset)) + replystr = 'added ' + channel + ' to autojoin' + return self.reply(connection, replypath, replystr) + except NoOptionError: pass + elif whats[1] == 'remove': + try: + # get existing list + channel = whats[2] + if irclib.is_channel(channel): + channelset = set(self.config.get(self.__class__.__name__, 'autojoin').split(',')) + channelset.discard(channel) + self.config.set(self.__class__.__name__, 'autojoin', ','.join(channelset)) + replystr = 'removed ' + channel + ' from autojoin' + return self.reply(connection, replypath, replystr) + except NoOptionError: pass def sub_save_config(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - whats = what.split(' ') - if whats[0] == 'config' and whats[1] == 'save' and admin_unlocked: - with open('dr.botzo.cfg', 'w') as cfg: - self.config.write(cfg) - replystr = 'saved config file' - return self.reply(connection, replypath, replystr) + with open('dr.botzo.cfg', 'w') as cfg: + self.config.write(cfg) + replystr = 'saved config file' + return self.reply(connection, replypath, replystr) def sub_change_nick(self, connection, event, nick, userhost, replypath, what, admin_unlocked): - whats = what.split(' ') - if whats[0] == 'nick' and admin_unlocked and len(whats) >= 2: - newnick = whats[1] - connection.nick(newnick) - self.config.set('dr.botzo', 'nick', newnick) - replystr = 'changed nickname' - return self.reply(connection, replypath, replystr) + newnick = whats[1] + connection.nick(newnick) + self.config.set('dr.botzo', 'nick', newnick) + replystr = 'changed nickname' + return self.reply(connection, replypath, replystr) # Save the config file. def save_config(self):