@plugin
class AdminTools(object):
    def __init__(self, server):
        self.server = server
        self.server.pluginManager.loadPlugin("auth")
        self.commands = [ "nick", "join", "part", "kick", "ban", "mute", "unban", "unmute", "op", "deop", "voice", "devoice", "unop", "unvoice" ]
        self.server.handle("command", self.handle_command, self.commands)
        
    def handle_command(self, channel, user, cmd, args):
        if self.server.getPlugin("auth").isAdmin(user):
            if cmd == "op":
                if len(args) < 1:
                    self.server.doMode(channel, "+o", user)
                else:
                    self.server.doMode(channel, "+o", args[0])
            elif cmd == "deop" or cmd == "unop":
                if len(args) < 1:
                    self.server.doMode(channel, "-o", user)
                else:
                    self.server.doMode(channel, "-o", args[0])
            elif cmd == "voice":
                if len(args) < 1:
                    self.server.doMode(channel, "+v", user)
                else:
                    self.server.doMode(channel, "+v", args[0])
            elif cmd == "devoice" or cmd == "unvoice":
                if len(args) < 1:
                    self.server.doMode(channel, "-v", user)
                else:
                    self.server.doMode(channel, "-v", args[0])
            else:
                    
                if len(args) < 1:
                    self.server.doMessage(channel, user+": Not enough arguments.")
                    return
                
                if cmd == "join":
                    self.server.doJoin(args[0])
                elif cmd == "part":
                    self.server.doPart(args[0])
                elif cmd == "nick":
                    self.server.doNick(args[0])
                elif self.server.config["nickname"] not in args[0]:
                    if cmd == "ban":
                        self.server.doMode(channel, "+b", args[0])
                        self.server.doKick(channel, args[0], "Banned!")
                    elif cmd == "unban":
                        self.server.doMode(channel, "-b", args[0])
                    elif cmd == "mute":
                        self.server.doMode(channel, "+q", args[0])
                    elif cmd == "unmute":
                        self.server.doMode(channel, "-q", args[0])
                    elif cmd == "kick":
                        self.server.doKick(channel, args[0], "Kicked!")
                        
        if self.server.getPlugin("auth").isOwner(user):
            if cmd == "die":
                self.server.doMessage(channel, user + " wants me to leave, but I'll be back!")
                self.server.doQuit()