Autor: Iván Alexis - Fecha: Miércoles 24 de Junio del 2009 - No hay comentarios
Contenido:
En lo personal considero que "Phyton" como lenguaje de programación es bastante simple, aunque nos dé aveces algunos problemas con la syntax, y la implementación de este lenguaje a un bot irc resulta ser muy eficiente.
Intento mostrarles una introducción a la creación de un bot con este lenguaje, mostrándoles un código que hace lo siguiente:
- Nos conecta a un servidor IRC específico
- Nos mantiene conectados al servidor con la respuesta de PING.
- Y nos obedece en algunas instrucciones.
Esta es una muestra de nuestro primer bot en Phyton, corriendo y funcionando:

El codigo que ocupé para esto es el siguiente:
PYTHON:
Compartir
Si te gustó esta publicación, la puedes Compartir y Guardar en tu sitio favorito.-
#!/usr/bin/python
-
# coding: iso-8859-15
-
-
# Iniciamos Python
-
-
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')
-
-
# Nos conectamos al servidor
-
-
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)
-
-
# Respondemos PONG al servidor
-
-
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]))
-
-
-
# quit #
-
if(line.find(NICK+ ': desconectate') != -1):
-
salir(line)