def rollDice(evname, net, message, args): count, sides=(1, 6) if len(args)>1: count, sides=args elif len(args)==1: dice=args[0].split("d") if len(dice)>1: count, sides=dice else: count=args[0] sides=6 try: count, sides=[int(i) for i in (count, sides)] except ValueError: message.reply("Only numbers, please!") return if count < 1: message.reply("Numbers must be equal to or greater than 1!") return if sides < 1: message.reply("Numbers must be equal to or greater than 1!") return log.edebug("Rolling %d dice, %d sides", count, sides) dice=[str(random.randint(1, sides)) for nothing in range(0, count)] dicetype="%dd%d"%(count, sides) who=message.fromnick.split("!")[0]+" rolls" if message.parameters[0].startswith("#") else "You roll" message.reply("%s %s for %s", who, dicetype, ", ".join(dice))
def listen(event, handler, position='last'): match=re.search(r"\[(.*?)\]", event) if match: match_parts=match.group(1).split(","); for part in match_parts: rangeparts=re.match(r"^(\d+)-(\d+)$", part) if rangeparts: for i in range(int(rangeparts.group(1)), int(rangeparts.group(2))+1): listen(re.sub(r"\[.*?\]", "%03d"%(i), event), handler, position) else: listen(re.sub(r"\[.*?\]", part, event), handler, position) return global registered_handlers log.edebug("Adding %s as handler for %s, position %s", handler, event, position) if not registered_handlers.has_key(event): registered_handlers[event]=[] if position=='first': registered_handlers[event].insert(0, handler) else: registered_handlers[event].append(handler)
def dispatchMessages(evname, net): global dataQueue data=net.recv() if not data: net.lostConnection('connection reset by peer') return if not data.endswith("\r\n"): if not dataQueue.has_key(net.name): dataQueue[net.name]="" dataQueue[net.name]+=data log.edebug("Queued %db for net %s", len(data), net.name) return if dataQueue.has_key(net.name) and dataQueue[net.name]: log.edebug("Unqueued %db for net %s", len(dataQueue[net.name]), net.name) data=dataQueue[net.name]+data del(dataQueue[net.name]) data=data.strip() data=re.split('\r\n', data) for line in data: message=IRCMessage.parse(net, line) event.trigger('Network/Incoming/Message/*/'+net.name, net, message) event.trigger('Network/Incoming/Message/'+message.command+'/'+net.name, net, message)
def handleChannelUserChange(evname, net, message): if message.command=='JOIN': chan=Channel.add(net, message.parameters[0]) if net.isFromMe(message.fromnick): log.edebug("I just joined %s", message.parameters[0]) else: log.info("%s: %s joined %s", net.name, message.fromnick, message.parameters[0]) chan.addUser(message.fromnick.split("!")[0]) elif message.command=='PART' or message.command=='QUIT': log.info("%s: %s left %s: %s: %s", net.name, message.fromnick, message.parameters[0], message.command, message.parameters[-1]) chan=Channel.add(net, message.parameters[0]) chan.removeUser(message.fromnick.split("!")[0]) elif message.command=='KICK': log.info("%s: %s kicked %s from %s: %s", net.name, message.fromnick, message.parameters[1], message.parameters[0], message.parameters[-1]) chan=Channel.add(net, message.parameters[0]) chan.removeUser(message.parameters[1]) elif message.command=='353': #2011-08-21 11:24:44 [EDEBUG ]: [<<<Local] :irc.local 353 fwee = #test :@alec fwee [in /home/alec/Desktop/fweebot/modules/fweebot.py/printmsgs(), line 56] chan=Channel.add(net, message.parameters[2]) for name in message.parameters[3].split(): chan.addUser(name) elif core.DEBUG and message.command=='366': chan=Channel.add(net, message.parameters[1])
def consoleMessage(server, message): if message is None: return if message == "": return log.edebug("[%s][%s] %s", server, "nickserv", message)
def printmsgs(evname, net, message): log.edebug('[%s%s] %s', '<<<', net.name, str(message))