From 618a042935a6949b923264a7d3410c30532cdbc5 Mon Sep 17 00:00:00 2001 From: "Brian S. Stephan" Date: Tue, 16 Jun 2015 19:04:52 -0500 Subject: [PATCH] IrcAdmin: ported to ircbot v2. deleted --- ircbot/modules/IrcAdmin.py | 181 ------------------------------------- 1 file changed, 181 deletions(-) delete mode 100644 ircbot/modules/IrcAdmin.py diff --git a/ircbot/modules/IrcAdmin.py b/ircbot/modules/IrcAdmin.py deleted file mode 100644 index bacc4f4..0000000 --- a/ircbot/modules/IrcAdmin.py +++ /dev/null @@ -1,181 +0,0 @@ -""" -IrcAdmin - handle normal IRC functions one would expect -Copyright (C) 2010 Brian S. Stephan - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" - -from ConfigParser import NoOptionError -import time - -from extlib import irclib - -from Module import Module - -class IrcAdmin(Module): - - """Support miscellaneous IRC stuff --- joining channels, changing the nick, etc.""" - - def register_handlers(self): - self.irc.server.add_global_handler('pubmsg', self.on_pub_or_privmsg, self.priority()) - self.irc.server.add_global_handler('privmsg', self.on_pub_or_privmsg, self.priority()) - self.irc.server.add_global_handler('welcome', self.on_connect, self.priority()) - - def unregister_handlers(self): - self.irc.server.remove_global_handler('pubmsg', self.on_pub_or_privmsg) - self.irc.server.remove_global_handler('privmsg', self.on_pub_or_privmsg) - self.irc.server.remove_global_handler('welcome', self.on_connect) - - def on_connect(self, connection, event): - """Set up handlers when the bot has connected to IRC.""" - - # user modes - try: - nick = self.config.get('dr.botzo', 'nick') - usermode = self.config.get('dr.botzo', 'usermode') - connection.mode(nick, usermode) - except NoOptionError: pass - - # run automsg commands - # TODO NOTE: if the bot is sending something that changes the vhost - # (like 'hostserv on') we don't pick it up - try: - automsgs = self.config.get(self.__class__.__name__, 'automsg').split(',') - for command in automsgs: - connection.privmsg(command.split(' ')[0], - ' '.join(command.split(' ')[1:])) - except NoOptionError: pass - - # sleep for a bit before autojoining, if told to - try: - sleep = self.config.getint(self.__class__.__name__, 'sleep') - time.sleep(sleep) - except NoOptionError: pass - - # join the specified channels - try: - autojoins = self.config.get(self.__class__.__name__, 'autojoin').split(',') - for channel in autojoins: - if irclib.is_channel(channel): - connection.join(channel) - except NoOptionError: pass - - def do(self, connection, event, nick, userhost, what, admin_unlocked): - """Try all the admin methods.""" - - # TODO: sophisticate. also, document all of these - - whats = what.split(' ') - - if whats[0] == '!join' and admin_unlocked and len(whats) >= 2: - return self.irc.reply(event, self.sub_join_channel(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!part' and admin_unlocked and len(whats) >= 2: - return self.irc.reply(event, self.sub_part_channel(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!quit' and admin_unlocked: - return self.irc.reply(event, self.sub_quit_irc(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!autojoin' and admin_unlocked and len(whats) >= 3: - return self.irc.reply(event, self.sub_autojoin_manipulate(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!save' and admin_unlocked: - self.irc.save_modules() - self.irc.save_config() - return self.irc.reply(event, 'Saved.') - elif whats[0] == '!nick' and admin_unlocked and len(whats) >= 2: - return self.irc.reply(event, self.sub_change_nick(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!load' and admin_unlocked and len(whats) >= 2: - return self.irc.reply(event, self.sub_load_module(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!unload' and admin_unlocked and len(whats) >= 2: - return self.irc.reply(event, self.sub_unload_module(connection, event, nick, userhost, what, admin_unlocked)) - elif whats[0] == '!modules': - return self.irc.reply(event, self.sub_list_modules(connection, event, nick, userhost, what, admin_unlocked)) - - def sub_join_channel(self, connection, event, nick, userhost, what, admin_unlocked): - whats = what.split(' ') - - channel = whats[1] - if irclib.is_channel(channel): - connection.join(channel) - replystr = 'Joined ' + channel + '.' - return replystr - - def sub_part_channel(self, connection, event, nick, userhost, what, admin_unlocked): - whats = what.split(' ') - target = event.target() - - channel = whats[1] - if irclib.is_channel(channel): - connection.part(channel, ' '.join(whats[2:])) - if target != channel: - replystr = 'Parted ' + channel + '.' - return replystr - - def sub_quit_irc(self, connection, event, nick, userhost, what, admin_unlocked): - whats = what.split(' ') - self.irc.quit_irc(connection, ' '.join(whats[1:])) - - def sub_autojoin_manipulate(self, connection, event, nick, userhost, what, admin_unlocked): - whats = what.split(' ') - - 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 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 replystr - except NoOptionError: pass - - def sub_change_nick(self, connection, event, nick, userhost, what, admin_unlocked): - whats = what.split(' ') - - newnick = whats[1] - connection.nick(newnick) - self.config.set('dr.botzo', 'nick', newnick) - replystr = 'changed nickname' - return replystr - - def sub_load_module(self, connection, event, nick, userhost, what, admin_unlocked): - """Load a module (in both the python and dr.botzo sense) if not - already loaded. - """ - - whats = what.split(' ') - return self.irc.load_module(whats[1]) - - def sub_unload_module(self, connection, event, nick, userhost, what, admin_unlocked): - """Attempt to unload and del a module if it's loaded.""" - - whats = what.split(' ') - return self.irc.unload_module(whats[1]) - - def sub_list_modules(self, connection, event, nick, userhost, what, admin_unlocked): - """Get the list of loaded modules from DrBotIRC and display it.""" - - return ', '.join(self.irc.list_modules()) - -# vi:tabstop=4:expandtab:autoindent -# kate: indent-mode python;indent-width 4;replace-tabs on;