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:

bot_en_python

El codigo que ocupé para esto es el siguiente:

PLAIN TEXT
PYTHON:
  1. #!/usr/bin/python
  2. # coding: iso-8859-15
  3.  
  4. # Iniciamos Python
  5.  
  6. import socket,os,string,sys,linecache,random,time
  7.  
  8. # Definimos variables
  9.  
  10. NICK = "Python_bot"
  11. CLAVE = "Aca_Va_La_Clave_Del_Bot"
  12. IDENT = "blog"
  13. REALNAME = "Un bot compilado en Python"
  14.  
  15. SERVIDOR = "ircchat.terra.cl"
  16. PUERTO = 7000
  17. CANAL = "#bot"
  18.  
  19. COMANDO_PARA_IDENTIFICAR = "PRIVMSG NickServ :identify "+CLAVE
  20. COMANDO_PARA_LOGEARSE = IDENT+" localhost "+SERVIDOR+" :"+REALNAME
  21.  
  22. SALTO = '\r\n'
  23. SALIDA = 0
  24. readbuffer = ""
  25.  
  26. # Definimos funciones
  27.  
  28. def isInt(str): # ¿str es entero?
  29.    try:int(str)
  30.    except ValueError:return 0
  31.    else:return 1
  32.    
  33. def mostrar_salida(s): # Si SALIDA = 1 muestra salidas en consola
  34.    recvd = s.recv(4096)
  35.    if SALIDA == 1:
  36.       print "Recibido: "+recvd
  37.  
  38. def mandar_pong(s): # Con esta funcion respondemos el PONG
  39.    recvd = s.recv(4096)
  40.    recvd = recvd.replace("PING", "PONG")
  41.    s.send(recvd+'\r\n')
  42.    
  43. # Nos conectamos al servidor
  44.  
  45. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  46. s.connect(('%s' % SERVIDOR,PUERTO))
  47.  
  48. # Nos logeamos al servidor
  49.  
  50. s.send('NICK %s\r\n' % NICK)
  51. mostrar_salida(s)
  52. mandar_pong(s)
  53. s.send('USER %s\r\n' % COMANDO_PARA_LOGEARSE)
  54. mostrar_salida(s)
  55. s.send('%s\r\n' % COMANDO_PARA_IDENTIFICAR)
  56.  
  57. # Entramos al canal
  58.  
  59. s.send('JOIN %s\r\n' % CANAL)
  60. mostrar_salida(s)
  61.  
  62. # Procesamos info del servidor
  63.  
  64. while 1:
  65.  
  66.    readbuffer=readbuffer+s.recv(1024)
  67.    temp=string.split(readbuffer, "\n")
  68.    readbuffer=temp.pop()
  69.  
  70.    for line in temp:
  71.       
  72.       line=string.rstrip(line)
  73.       line_list=string.split(line)
  74.      
  75. # Respondemos PONG al servidor
  76.  
  77.       if(line_list[0]=='PING'):
  78.          s.send("PONG %s\r\n" % line_list[1])
  79.       
  80.       elif(line.find(NICK+ ': saluda') != -1):
  81.          elems = len(line_list)
  82.          if(line_list[elems-1] == 'saluda'):
  83.         s.send("PRIVMSG %s :Hola!\r\n" % CANAL)
  84.      else:
  85.             s.send("PRIVMSG %s :Hola %s\r\n" % (CANAL,line_list[elems-1]))
  86.       
  87.       
  88.       # quit #
  89.       if(line.find(NICK+ ': desconectate') != -1):
  90.          salir(line)

Compartir Si te gustó esta publicación, la puedes Compartir y Guardar en tu sitio favorito.

Categorías: General, Scripts • Etiquetas: , , , , Volver al principio


Escribe un comentario:


*
A continuacion, debe escribir el codigo mostrado en la imagen.
Anti-Spam Image