def handler(self, **args): """ gives a nick/host mask a privileve """ from irclib import Event, IrcStringIO import database if checkPriv(args["source"], "list_priv") == 0: return Event("privmsg", "", self.return_to_sender(args), [ "You don't have permission to do that." ]) privs = database.doSQL("SELECT priv_type,hostmask FROM grants ORDER BY priv_type,hostmask") buffer = IrcStringIO("Privileges List:") last = None for i in privs: if last == i[0]: buffer.write(' ' + i[1] + ' ;;') else: last = i[0] buffer.write(' [' + i[0] + '] ' + i[1] + ' ;;') return Event("privmsg", "", self.return_to_sender(args), [ buffer.getvalue() ])
def handler(self, **args): """ gives a nick/host mask a privileve """ from irclib import Event, IrcStringIO import database if checkPriv(args["source"], "list_priv") == 0: return Event("privmsg", "", self.return_to_sender(args), ["You don't have permission to do that."]) privs = database.doSQL( "SELECT priv_type,hostmask FROM grants ORDER BY priv_type,hostmask" ) buffer = IrcStringIO("Privileges List:") last = None for i in privs: if last == i[0]: buffer.write(' ' + i[1] + ' ;;') else: last = i[0] buffer.write(' [' + i[0] + '] ' + i[1] + ' ;;') return Event("privmsg", "", self.return_to_sender(args), [buffer.getvalue()])
def handler(self, **args): from irclib import Event import priv argv = self.spaces.split((args["text"]).strip()) # case: ~ab if len(argv) < 3: cmd = None argv = [] argc = 0 # case ~ab ... else: cmd = argv[2].lower() argv = argv[3:] argc = len(argv) reply = None channel = self.return_to_sender(args) from irclib import nm_to_n yournick = nm_to_n(args['source']) try: from irclib import is_channel from ValueModifier import IntValueModifier if not is_channel(channel): reply = "this is a channel only command" elif cmd == "grant": if argc != 3: raise StopReply() import priv nick, ability, score = argv try: score = IntValueModifier(score) except ValueError: reply = "%s: score must be number" % yournick raise StopReply() curscore = self.getUserAbilityScore(nick, channel, ability) or 0 score = score.apply(curscore) # normal users? if priv.checkPriv(args["source"], "ab_admin_priv") == 0 \ and priv.checkPriv(args["source"], "all_priv") == 0: if nick == yournick: reply = "You're so proud, %s" % yournick raise StopReply() yourscore = self.getUserAbilityScore( yournick, channel, ability) # apply rules if not yourscore or yourscore < score: yourscore = self.getUserAbilityScore( yournick, channel, '*') if not yourscore or yourscore < score: reply = "You don't have enough ability score, %s" % yournick raise StopReply() if curscore >= score: reply = "%s's %s ability is %d already" % ( nick, ability, curscore) raise StopReply() abilityid = self.getAbilityId(ability, True) self.setUserAbilityScore(nick, channel, abilityid, score, yournick) reply = "%s's %s ability is set to %d" % (nick, ability, score) elif cmd == "despise": if argc != 2: raise StopReply() ability, score = argv try: score = IntValueModifier(score) except ValueError: reply = "%s: score must be number" % yournick raise StopReply() curscore = self.getUserAbilityScore(yournick, channel, ability) if not curscore: reply = "%s: You have no %s ability despise for" % ( ability, yournick) raise StopReply() score = score.apply(curscore) if curscore == score: reply = "%s: You're yourself" % yournick elif curscore <= score: reply = "%s: Are you conceited?" % yournick else: abilityid = self.getAbilityId(ability, True) self.setUserAbilityScore(yournick, channel, abilityid, score, yournick) reply = "%s has despise him/herself to %d on %s ability" % ( yournick, score, ability) elif cmd == "top" or cmd == "help": if cmd == "help": if argc != 1: # module help raise StopReply() reply = "This function is in TODO" raise StopReply() from irclib import IrcStringIO if argc == 1: ability = argv[0] user_scores = self.getTopAbilityUsers(channel, ability) if not user_scores: reply = "no one is capable of %s" % ability raise StopReply() buffer = IrcStringIO("top user(s) that capable of %s:" % ability) for user_score in user_scores: buffer.write(" %s*%s" % user_score) elif argc == 0: abilityScoreUsers = self.getTopAbilities(channel) if not abilityScoreUsers: reply = "no one is superman" raise StopReply() from irclib import IrcStringIO buffer = IrcStringIO("top abilities:") for abilityScoreUser in abilityScoreUsers: buffer.write(" %s*%s/%s" % abilityScoreUser) reply = buffer.getvalue() else: nick = None ability = None name = None # name to guess if argc == 0: # quick query if cmd: name = cmd else: nick = yournick elif cmd != "query": raise StopReply() elif argc == 1: # "query $nick" name = argv[0] elif argc == 2: # "query $nick $ability" [nick, ability] = argv else: raise StopReply() # guess if it's nick or ability if name: abilityid = self.getAbilityId(name) if abilityid: ability = name nick = yournick else: nick = name ability = None if nick: if ability: score = self.getUserAbilityScore( nick, channel, ability) or 0 if yournick == nick: reply = "Your %s ability is %d" % (ability, score) if score < 0: reply = reply + ". rats!" else: reply = "%s's %s ability is %d" % (nick, ability, score) else: ability_scores = self.getUserAbilities(nick, channel) if not ability_scores: reply = nick + " doesn't have any ability, is he/she disabled?" else: from irclib import IrcStringIO buffer = IrcStringIO(nick + " is capable of") for ability_score in ability_scores: buffer.write(" %s*%s" % ability_score) reply = buffer.getvalue() else: reply = nick + " not found" except StopReply: pass if not reply: if cmd == "help" and argc == 0 or not self.helps.has_key(cmd): reply = "AbilityProfile: " + " ;; ".join(self.helps.values()) else: reply = "AbilityProfile: " + self.helps[cmd] result = Event("privmsg", "", channel, [reply]) return result
def handler(self, **args): from irclib import Event import priv argv = self.spaces.split((args["text"]).strip()) # case: ~ab if len(argv) < 3: cmd = None argv = [] argc = 0 # case ~ab ... else: cmd = argv[2].lower() argv = argv[3:] argc = len(argv) reply = None channel = self.return_to_sender(args) from irclib import nm_to_n yournick = nm_to_n(args['source']) try: from irclib import is_channel from ValueModifier import IntValueModifier if not is_channel(channel): reply = "this is a channel only command" elif cmd == "grant": if argc != 3: raise StopReply() import priv nick, ability, score = argv try: score = IntValueModifier(score) except ValueError: reply = "%s: score must be number" % yournick raise StopReply() curscore = self.getUserAbilityScore(nick, channel, ability) or 0 score = score.apply(curscore) # normal users? if priv.checkPriv(args["source"], "ab_admin_priv") == 0 \ and priv.checkPriv(args["source"], "all_priv") == 0: if nick == yournick: reply = "You're so proud, %s" % yournick raise StopReply() yourscore = self.getUserAbilityScore(yournick, channel, ability) # apply rules if not yourscore or yourscore < score: yourscore = self.getUserAbilityScore(yournick, channel, '*') if not yourscore or yourscore < score: reply = "You don't have enough ability score, %s" % yournick raise StopReply() if curscore >= score: reply = "%s's %s ability is %d already" % (nick, ability, curscore) raise StopReply() abilityid = self.getAbilityId(ability, True) self.setUserAbilityScore(nick, channel, abilityid, score, yournick) reply = "%s's %s ability is set to %d" % (nick, ability, score) elif cmd == "despise": if argc != 2: raise StopReply() ability, score = argv try: score = IntValueModifier(score) except ValueError: reply = "%s: score must be number" % yournick raise StopReply() curscore = self.getUserAbilityScore(yournick, channel, ability) if not curscore: reply = "%s: You have no %s ability despise for" % (ability, yournick) raise StopReply() score = score.apply(curscore) if curscore == score: reply = "%s: You're yourself" % yournick elif curscore <= score: reply = "%s: Are you conceited?" % yournick else: abilityid = self.getAbilityId(ability, True) self.setUserAbilityScore(yournick, channel, abilityid, score, yournick) reply = "%s has despise him/herself to %d on %s ability" % (yournick, score, ability) elif cmd == "top" or cmd == "help": if cmd == "help": if argc != 1: # module help raise StopReply() reply = "This function is in TODO" raise StopReply() from irclib import IrcStringIO if argc == 1: ability = argv[0] user_scores = self.getTopAbilityUsers(channel, ability) if not user_scores: reply = "no one is capable of %s" % ability raise StopReply() buffer = IrcStringIO("top user(s) that capable of %s:" % ability) for user_score in user_scores: buffer.write(" %s*%s" % user_score) elif argc == 0: abilityScoreUsers = self.getTopAbilities(channel) if not abilityScoreUsers: reply = "no one is superman" raise StopReply() from irclib import IrcStringIO buffer = IrcStringIO("top abilities:") for abilityScoreUser in abilityScoreUsers: buffer.write(" %s*%s/%s" % abilityScoreUser) reply = buffer.getvalue() else: nick = None ability = None name = None # name to guess if argc == 0: # quick query if cmd: name = cmd else: nick = yournick elif cmd != "query": raise StopReply() elif argc == 1: # "query $nick" name = argv[0] elif argc == 2: # "query $nick $ability" [nick, ability] = argv else: raise StopReply() # guess if it's nick or ability if name: abilityid = self.getAbilityId(name) if abilityid: ability = name nick = yournick else: nick = name ability = None if nick: if ability: score = self.getUserAbilityScore(nick, channel, ability) or 0 if yournick == nick: reply = "Your %s ability is %d" % (ability, score) if score < 0: reply = reply + ". rats!" else: reply = "%s's %s ability is %d" % (nick, ability, score) else: ability_scores = self.getUserAbilities(nick, channel) if not ability_scores: reply = nick + " doesn't have any ability, is he/she disabled?" else: from irclib import IrcStringIO buffer = IrcStringIO(nick + " is capable of") for ability_score in ability_scores: buffer.write(" %s*%s" % ability_score) reply = buffer.getvalue() else: reply = nick + " not found" except StopReply: pass if not reply: if cmd == "help" and argc == 0 or not self.helps.has_key(cmd): reply = "AbilityProfile: " + " ;; ".join(self.helps.values()) else: reply = "AbilityProfile: " + self.helps[cmd] result = Event("privmsg", "", channel, [reply]) return result