#!/usr/bin/env python
# coding: utf-8
#       aniverbot.py
#       
#       Copyright 2009 Miquel Puig i Pey <miquel.puig.pey@est.fib.upc.edu>
#       
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#       
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#       
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.

import socket
import random

HOST='irc.freenode.net'
PORT=6667
NICK='renebot'
IDENT='purple'
REALNAME='purple'
CHAN='#wikipedia-ca'
readbuffer=''

s=socket.socket()
s.connect((HOST,PORT))
s.send("NICK %s\r\n" % NICK)
s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME))
s.send("JOIN :%s\r\n" % CHAN)

CALLA = False

def parseLine(line): #No toqueu aquesta funció si no sabeu que feu, o podeu espatllar el bot.
	missatge = ''
	sender = ''
	chan = '' # Per a futures modificacions multicanal
	if 'PRIVMSG' in line and CHAN in line:
		list1 = line.split(CHAN)
		if len(list1) > 1:
			list2 = list1[1].split(':')
			if len(list2) > 1:
				missatge = list2[1]
		list3 = line.split('!')
		list4 = list3[0].split(':')
		if len(list4) > 1:
			sender = list4[1]
	if 'JOIN' in line:
		list5 = line.split('!')
		if len(list5) > 1:
			list6 = list5[0].split(':')
			if len(list6) > 1:
				missatge = list6[1]
		sender = 'JOIN'
	if ' PART ' in line:
		list7 = line.split('PART')
		list8 = list7[1].split()
		chan = list8[0]
		list9 = line.split('!')
		list10 = list9[0].split(':')
		missatge = list10[1]
		sender = 'PART'
	return (sender, missatge)

def msgsend(msg,destination = CHAN):
	s.send("PRIVMSG %s :%s\r\n" % (destination,msg))

wait = 10

while True:
	readbuffer=readbuffer+s.recv(1024)
	temp=readbuffer.split("\n")
	readbuffer=temp.pop()
	
	for line in temp:
		line=line.rstrip()
		(sender, missatge) = parseLine(line)
		if not sender == '' or not missatge == '':
			print sender+": "+missatge
	
	if not CALLA: wait += 1
		
	if 'Gochy' in sender and not CALLA:
		dau = random.randint(0,100)
		if dau < 10: msgsend(sender+', vols sortir amb mí?')
		elif dau < 20: msgsend(sender+', Has d\'actualitzar als jugadors del Barça... si no en Piqué no et signarà cap autograf')
	        elif dau < 30: msgsend(sender+', el Krls és tant ruc com sembla?')

	if wait > 10 and not CALLA and sender != '':
		wait = 0
		dau2 = random.randint(0,30)
		if dau2 < 10: msgsend('#wikipedia-ca celebra l\'aniversari d\'en terere')

	
	if 'viquitexts' in missatge or 'Viquitexts' in missatge:
		dau3 = random.randint(0,30)
		if dau3 < 10: msgsend(sender+', lamentem comunicar-te que l\'SGAE ha demandat a Viquitexts')
		elif dau3 < 20: msgsend(sender+', viquitexts ha caigut ... llarga vida a viquillibres')
	
	if 'viquillibres' in missatge or 'Viquillibres' in missatge:
		dauesp = random.randint(0,100)
		if dauesp > 33: msgsend(sender+', viquitexts ha caigut ... llarga vida a viquillibres')
	
	if 'Eixa boqueta te perdr' in missatge and not CALLA:
		dau = random.randint(0,21)
		if dau < 10: msgsend('Carca!, deixa que faci el pobre XD')
		else: msgsend('com m\'agraden les marranades!')
	
	if missatge == '*CALLA':
		CALLA = True
		
	if missatge == '*PARLA':
		CALLA = False
	

	if 'poma' in missatge and not CALLA:
		dau = random.randint(0,21)
		if dau < 10: msgsend('Geni: et fas gran .... ')
		else: msgsend('geni, et supero en intel·ligència, ets com el windows 2003, estàs passat de rosca!')

	if '@' in missatge and not CALLA:
		dau = random.randint(0,21)
		if dau < 10: msgsend('Geni: ve feina!...')
		else: msgsend('Bot a treballar ... amb lo descansat que estava el vell')

	if 'miquel_puig' in sender and not CALLA:
		dau = random.randint(0,1000)
		if dau < 10: msgsend(sender+'! el Bassas de la Viquipèdia')
		elif dau < 20: msgsend('algú t\'ha robat el codi, '+sender)
		elif dau < 30: msgsend(sender+'salva\'m d\'en Mafoso')
		elif dau < 40: msgsend('Eiiiiii '+sender+', necessito un retoc :P')

	if 'Terere' in sender and not CALLA:
		dau = random.randint(0,100)
		if dau < 10: msgsend(sender+'! que gran ets nano!')
		elif dau < 20: msgsend('t\han fet molts regals '+sender+'?')
		elif dau < 30: msgsend(sender+'salva\'m d\'en Mafoso')
		elif dau < 40: msgsend('Eiiiiii '+sender+', com va l\'artrosis?')
		elif dau < 50: msgsend(sender+'no pesen els anys pesen les edicions XD')