Código: Seleccionar todo
import socket,os,string,sys,linecache,random,time
Definimos variables
NICK = "Python_bot"
CLAVE = "Aca_Va_La_Clave_Del_Bot"
IDENT = "blog"
REALNAME = "Un bot compilado en Python"
SERVIDOR = "ircchat.terra.cl"
PUERTO = 7000
CANAL = "#bot"
COMANDO_PARA_IDENTIFICAR = "PRIVMSG NickServ :identify "+CLAVE
COMANDO_PARA_LOGEARSE = IDENT+" localhost "+SERVIDOR+" :"+REALNAME
SALTO = '\r\n'
SALIDA = 0
readbuffer = ""
Definimos funciones
def isInt(str): # ¿str es entero?
try:int(str)
except ValueError:return 0
else:return 1
def mostrar_salida(s): # Si SALIDA = 1 muestra salidas en consola
recvd = s.recv(4096)
if SALIDA == 1:
print "Recibido: "+recvd
def mandar_pong(s): # Con esta funcion respondemos el PONG
recvd = s.recv(4096)
recvd = recvd.replace("PING", "PONG")
s.send(recvd+'\r\n')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('%s' % SERVIDOR,PUERTO))
Nos logeamos al servidor
s.send('NICK %s\r\n' % NICK)
mostrar_salida(s)
mandar_pong(s)
s.send('USER %s\r\n' % COMANDO_PARA_LOGEARSE)
mostrar_salida(s)
s.send('%s\r\n' % COMANDO_PARA_IDENTIFICAR)
Entramos al canal
s.send('JOIN %s\r\n' % CANAL)
mostrar_salida(s)
Procesamos info del servidor
while 1:
readbuffer=readbuffer+s.recv(1024)
temp=string.split(readbuffer, "\n")
readbuffer=temp.pop()
for line in temp:
line=string.rstrip(line)
line_list=string.split(line)
if(line_list[0]=='PING'):
s.send("PONG %s\r\n" % line_list[1])
elif(line.find(NICK+ ': saluda') != -1):
elems = len(line_list)
if(line_list[elems-1] == 'saluda'):
s.send("PRIVMSG %s :Hola!\r\n" % CANAL)
else:
s.send("PRIVMSG %s :Hola %s\r\n" % (CANAL,line_list[elems-1]))
if(line.find(NICK+ ': desconectate') != -1):
salir(line)