#!/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')