Bot irc con python

19 06 2011

Buenas otra ves,hacia tiempo que no colgaba un post…

Despues de leerme el libro de python para todos que es gratuito y lo podeis encontrar en internet facilmente en el cual viene un capítulo sobre sockets y otro sobre comunicacion con webs me decidi a hacer un bot para el irc,la verdad es que con código prestado en gran parte(no se mucho del protocolo IRC) aunque he añadido algunas cosillas,como poder guardar logs.

Basicamente lo que necesitamos es el servidor al que conectar,el puerto,el nick del bot y poco mas, luego tenemos que crear un objeto socket y conectar a ese servidor y puerto,identificarnos en el irc y responder alos pings que manda el servidor para seguir conectados.

El codigo es este:

#Programa que crea un bot para el IRC

botnick = "Manolo"
server = "irc.irc-hispano.org"
puerto = 6667
canal = "#barcelona"        #escogeis el canal al que querais entrar
cont=1

f = open("log.txt", "w") #abrimos un fichero para guardar las lineas
socket_bot = socket.socket() #creamos el socket
socket_bot.connect((server, puerto)) #conectamos al server y puerto
socket_bot.send('USER martinez perez luis :amateur\n')#nos identificamos
socket_bot.send('NICK ' +botnick+'\n') #nos ponemos un nick

while True:
   line = socket_bot.recv(4096) #Aqui empezamos a recibir datos
   print line    #IMPORTANTE,imprimimos las lineas

#En este if respondemos al PING que nos envia el servidor con un PONG  mas la clave

   if line.find('PING')!=-1:
       socket_bot.send('PONG ' +line.split()[1]+'\r\n')

   socket_bot.send("JOIN " +canal+'\n') #Entramos a un canal

   f.write(line) #Comenzamos a guardar cada linea de texto que nos llega
   cont=cont+1
   if cont==200: #si ha leido 200 lineas cerramos el fichero y el socket
       f.close()
       socket_bot.close()

   if line.find('hola MAnolo')!=-1:
       socket_bot.send('PRIVMSG #eskizofrenia :caro caro ahun no te he saludado y ya saludas\n')
   if line.find('como estas Manolo?')!= -1:
       socket_bot.send('PRIVMSG #eskizofrenia :hecho kakitas amigo hecho kakitas\n')
   if line.find('porque?')!= -1:
       socket_bot.send('PRIVMSG #eskizofrenia :si,porque? porque pepe? porque manchester?, porque?\n')

Os dejo una captura donde se ve el código.

Advertisement

Acciones

Información

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s




Seguir

Get every new post delivered to your Inbox.