Esempio n. 1
0
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))
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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])
Esempio n. 5
0
def consoleMessage(server, message):
	if message is None: return
	if message == "": return
	
	log.edebug("[%s][%s] %s", server, "nickserv", message)
Esempio n. 6
0
def printmsgs(evname, net, message):
	log.edebug('[%s%s] %s', '<<<', net.name, str(message))