Current directory :
Root directory

Tree directory :
sef@njs.netlab.cz
  Filter :
  Language :  
 
#$ neutron_plugin 01
import random
TRIGGERDB_FILE = 'dynamic/tiggerdb.txt'
TRIGGERCACHE ='dynamic/tiggercache.txt'
initialize_file(TRIGGERDB_FILE, '{}')
initialize_file(TRIGGERCACHE, '{}')
 
def handler_list(type, source, parameters):
	localdb = eval(read_file(TRIGGERDB_FILE))
	out = ''
	for key in localdb.iterkeys():
		out += '\n' + key
		for x in localdb[key]:
			out+='\n\t %s' % x
	smsg(type, source, out)
 
def handler_talk(type, source, parameters):
	print parameters
	parameters = parameters.split(' ')
	if len(parameters) == 2 and type == 'private':
		localdb = eval(read_file(TRIGGERCACHE))
		if parameters[0] == 'on':
			localdb[parameters[1]] = True
		elif parameters[0] == 'off':
			localdb[parameters[1]] = False
		write_file(TRIGGERCACHE, str(localdb))
		smsg(type, source, 'Talking is now  "%s" on %s'%(parameters[0],parameters[1]))
 
def alter(msg, source, tnick):
	out = msg.replace('%nick', source[2])
	out = out.replace('%date', time.strftime('%x'))
	out = out.replace('%time', time.strftime('%X'))
##	if out.find('%tnick')>-1 and GROUPCHATS.has_key(source[1]):
##		parts = out.split('%tnick')
##		for part in parts[1:]:
##			nick = part.split(
	if tnick!='':
		out = out.replace('%tnick', tnick)
	return out
def can_talk(room):
	talk = eval(read_file(TRIGGERCACHE))
	if talk.has_key(room):
		return talk[room]
	else:
		return False
def handler_learn_get(type, source, parameters):
	#print type, source, parameters
	if get_nick(source[1]) != source[2] and type == 'public' and can_talk(source[1]):
		localdb = eval(read_file(TRIGGERDB_FILE))
		replies = []
		tnick = ''
		for key in localdb.iterkeys():
			if parameters.find(key) > -1:
				replies.append(key)
			elif parameters.find(key.replace('%tnick',''))> -1:
				remainder = parameters.replace(key.replace('%tnick',''),'')
				if remainder.split(' ')[0] in GROUPCHATS[source[1]]:
					tnick = remainder.split(' ')[0]
					replies.append(key)
		if len(replies)>0:
			key = random.choice(replies)
			if len(localdb[key])>0:
				mesg = random.choice(localdb[key])
				msg(source[1], alter(mesg, source, tnick))
 
def handler_learn_del(type, source, parameters):
	localdb = eval(read_file(TRIGGERDB_FILE))
	pars = parameters.split(' ')
	try:
		index = int (pars[0])
	except:
		return
	key = ' '.join(pars[1:])
	#print str(index),key
	if localdb.has_key(key):
		try:
			del localdb[key][index-1]
		except:
			return
		smsg(type, source, 'Record %s from %s is deleted'%(str(index),key))
		write_file(TRIGGERDB_FILE, str(localdb))
 
def handler_learn_set(type, source, parameters):
	localdb = eval(read_file(TRIGGERDB_FILE))
	keyval = string.split(parameters, '=', 1)
	if len(keyval)==2:
		key = keyval[0].strip()
		value = keyval[1].strip()
		if not value:
			return
		else:
			if localdb.has_key(key):
				localdb[key].append(keyval[1].strip())
			else:
				localdb[key] = []
				localdb[key].append(keyval[1].strip())
			smsg(type, source, key + ' == ' + keyval[1].strip())
		write_file(TRIGGERDB_FILE, str(localdb))
 
register_message_handler(handler_learn_get)
register_command_handler(handler_learn_set, '!learn', 0, 'Teaches bot new trigger.', '!learn <query> = <definition>', ['!learn neutron = the best!'])
register_command_handler(handler_talk, '!talk', 50, 'Starts/stops bot\'s random responses.', '!talk <on|off> <room>', ['!talk on talk@conf.netlab.cz'])
register_command_handler(handler_list, '!list', 50, 'Lists bot\'s random responses.', '!list', [''])
register_command_handler(handler_learn_del, '!forget', 50, 'Deletes bot\'s response.', '!forget <n> <trigger>', ['!forget 1 ping'])
 
VIP: No | Used: 622M/101M | 0.059 sec / GZIP-2