def oncommandfromuser(self,fromwho,fromwhere,ispm,command,args,socket): try: if fromwho == self.app.config.get('tasbot', "nick"): return if len(command) > 0 and command[0] == "!": if not self.db.AccessCheck( -1, fromwho, Roles.User ): self.sayPermissionDenied( socket, command, fromwho, fromwhere, ispm ) #log return else: return # !TODO refactor to use function dict if command == "!ladder": if not self.enabled and not self.db.AccessCheck( -1, fromwho, Roles.GlobalAdmin ): self.notifyuser( socket, fromwho, fromwhere, ispm, "Ladder functionality is temporarily disabled." ) return ladderid = -1 battleid = -2 password = "" if len(args) > 0: if args[0].isdigit(): ladderid = int(args[0]) if len(args) > 1: password = "******".join(args[1:]) else: password = "******".join(args[0:]) try: battleid = self.tsc.users[fromwho].battleid except Exception: Log.bad("User " + fromwho + " not found") if ( battleid < 0 ): self.notifyuser( socket, fromwho, fromwhere, ispm, "You are not in a battle." ) else: if not self.db.AccessCheck( ladderid, fromwho, Roles.User ): self.sayPermissionDenied( socket, command, fromwho, fromwhere, ispm ) #log return if ( battleid in self.battleswithbots ): self.notifyuser( socket, fromwho, fromwhere, ispm, "A ladder bot is already present in your battle." ) else: if ( ladderid == -1 or self.db.LadderExists( ladderid ) ): self.spawnbot( socket, battleid, password, fromwho, ladderid ) else: self.notifyuser( socket, fromwho, fromwhere, ispm, "Invalid ladder ID." ) if command == "!ladderjoinchannel": if not self.db.AccessCheck( -1, fromwho, Roles.GlobalAdmin ): self.sayPermissionDenied( socket, command, fromwho, fromwhere, ispm ) #log return if len(args) < 1: self.notifyuser( socket, fromwho, fromwhere, ispm, "Invalid command syntax, check !ladderhelp for usage." ) else: channel = " ".join(args[0:]) socket.send("JOIN " + channel + "\n") if not channel in self.channels: self.channels.append(channel) self.app.config.set('join_channels',"channels", ','.join(self.channels)) self.app.SaveConfig() if command == "!ladderleavechannel": if not self.db.AccessCheck( -1, fromwho, Roles.GlobalAdmin ): self.sayPermissionDenied( socket, command, fromwho, fromwhere, ispm ) #log return if len(args) != 1: self.notifyuser( socket, fromwho, fromwhere, ispm, "Invalid command syntax, check !ladderhelp for usage." ) else: channel = args[0] if channel in self.channels: socket.send("LEAVE " + channel + "\n") self.channels.remove(channel) self.app.config.set('join_channels',"channels", ','.join(self.channels)) self.app.SaveConfig() if command == "!ladderlist": self.notifyuser( socket, fromwho, fromwhere, ispm, "Available ladders, format name: ID:" ) for l in self.db.GetLadderList(Ladder.name): self.notifyuser( socket, fromwho, fromwhere, ispm, "%s: %d" %(l.name, l.id ) ) if command == "!ladderadd": if not self.db.AccessCheck( -1, fromwho, Roles.GlobalAdmin ): self.sayPermissionDenied( socket, command, fromwho, fromwhere, ispm ) #log return if len(args) < 1: self.notifyuser( socket, fromwho, fromwhere, ispm, "Ladder name can't be empty." ) else: try: laddername = " ".join(args[0:]) ladderid = self.db.AddLadder( laddername ) self.notifyuser( socket, fromwho, fromwhere, ispm, "New ladder created, ID: " + str(ladderid) ) except ElementExistsException, e: Log.error(e) if command == "!ladderremove": if not self.db.AccessCheck( -1, fromwho, Roles.GlobalAdmin ): self.sayPermissionDenied( socket, command, fromwho, fromwhere, ispm ) #log return if len(args) != 1 or not args[0].isdigit(): self.notifyuser( socket, fromwho, fromwhere, ispm, "Invalid command syntax, check !ladderhelp for usage." ) else: ladderid = int(args[0]) try: self.db.RemoveLadder( args[0] ) self.notifyuser( socket, fromwho, fromwhere, ispm, "Ladder removed." ) except ElementNotFoundException, e: self.notifyuser( socket, fromwho, fromwhere, ispm, "Invalid ladder ID." )