Hace algun tiempo programé un bot para IRC en PHP, este bot tenia varias caracteristicas y opciones, usaba una base de datos mysql para almacenar lo que iba “aprendiendo”. Dentro de ellas están:
- Distintos niveles de privilegios (administrador, owner de un canal, access de un canal)
- Funcion para realizar busquedas en Google (!google <palabra>)
- Function para buscar definiciones en Google (!define <termino>)
- Distintas funciones de administracion de usuarios (!admin|access add|del|list)
- etc
Algunas de las caracteristicas de este bot es su proteccion anti flood que se define por el owner del canal y el Oráculo (Oracle; término puesto por mi a esta funcionalidad) que permite enseñar al bot definiciones de palabras para luego ser consultadas (!learn palabra significado, ?? palabra).
Este bot corre bajo php-cli (command line interface), es decir, por consola y tambien puede ser ejecutado desde la web. Queda trabajando como un demonio.
Version Actual:
La version actual es la misma desde enero del año 2007, no he vuelto a tocar el codigo (aunque sigo usando el bot), funciona todo menos las busquedas de terminos y definiciones en Google que, me imagino, hay que hacerle un par de modificaciones al codigo para que parsee bien las busquedas.
Changelog
VERSION 1.0.4 – 26 ENE 2007
- Cambiado el sistema de autentifiacion. Se verifica que el usuario
este identificado con NickServ.VERSION 1.0.3 – 19 ENE 2007
- Se agrego a la clase Bot el metodo TXTflood( … ) que verifica
el flood de texto de un usuario en un canal especifico, esta opcion
puede ser habilitada o desactivada por usuarios con privilegios mediante
!flood on|off en el canal.
- Se ha reescrito la clase que permite la identificacion y permite que los usuarios
tengan distintos privilegios. (CHAdmin.)
- Corregido el bug que expulsaba de manera distinta a !k o !kick (0 nick o [spacio] nick)
- Agregada la clase Google con los metodos !define y !google.VERSION 1.0.2 – 16 ENE 2007
- El bot corre en segundo plano (fork).
- Agregada una funcion extra en la clase del bot usando el binario ‘numerador’
ubicado en el directorio extras, la funcion es !num NUMERO.
- Fixeado bug que causaba la caida del bot al enviar dos veces el comando
para setear una clave. (reportado por Pons)
- Agregado soporte para unrealircd (antes solo habia sido probado en bahamut).
- Testeado en dancer-ircd, bahamut, Hyperion y unrealircd.VERSION 1.0.0 – 15 ENE 2007
- Corregido el fallo que cerraba la conexion a la base de datos por idle.
Descargar:
Version 1.0.4: zip | tar.gz | tar.bz2





19 respuestas hasta ahora ↓
1
deb
// Nov 5, 2008 a las 6:27 pm
borraste el archivo?
excelente blog saludos.
2
Zerial
// Nov 6, 2008 a las 12:01 am
deb: gracias por avisar. Tenia mal linkeado los archivos, ahora funcionan.
saludos
3
deb
// Nov 6, 2008 a las 9:59 pm
De nada.
Y lo otro funciona con mysql?
debo crear una base de datos ?
Sorry si las preguntas son muy obvias.
4
Zerial
// Nov 6, 2008 a las 11:08 pm
Tiene un script que se llama install.php, miralo.
5
Cibort
// Dic 19, 2008 a las 7:12 pm
Hola disculpa por hacerte esta pregunta pero mira que debo poner en:
$pid = pcntl_fork(); // el papa tendra un hijo, el hijo mata al papaif ($pid == -1)
{
die("Se produjo un error al iniciar el bot\n");
}
else if ($pid)
{
exit(); //Dejamos al hijo huerfano
No lo entiendo…
Espero que me ayudes ^^
Un saludo hermano
6
Cibort
// Dic 19, 2008 a las 8:48 pm
Es que no el bot se instala pero luego al ejectutar el bot.php no pasa nada…
7
Zerial
// Dic 20, 2008 a las 5:23 am
Cibort: Tu no debes tocar el código fuente. El fichero bot.php no tienes para que modificarlo, basta con que modifique el fichero de configuracion y ya está.
Saludos
8
Cibort
// Dic 21, 2008 a las 3:59 am
Pero es que cuando lo instalo esta todo perfecto, pero cuando abro el bot.php para que se conecte me aparece esto:
Fatal error: Call to undefined function pcntl_fork() in /home/webcindario/c/o/conceptnet/super/bot.php on line 6
Y bueno por eso te pregunte si debía editar algo.
Y no funciona… al comienzo pensé que era el host, lo probé en 3 host distintos y todo lo mismo, luego pensé que yo era el del problema (XD) y lo intento un amigo de España y le paso lo mismo.
Lo queremos meter en ogamenet (irc://irc.onlinegamenet.net:6667) es un poco distinta a lo que el bot esta hecho (funciona con cuentas de usuario no con nicks, en otras palabras tenemos un AuthServ y no un NickServ, pero debería funcionar de todas maneras) y nada…
He estado tratando de instalarlo casi desde que pusiste el articulo (como el 10 de noviembre o algo así), es que buscamos un BOT como ese hace bastante tiempo :/
Un saludo hermano, y gracias por responder
9
Zerial
// Dic 22, 2008 a las 3:08 pm
Cibort: Verifica la version y configuracion de php, todo indica que está desactivada esa funcion o bien fue compilado sin la opcion correcta. En otras palabras, tu php no “soporta” esa función, no tienes que modificar nada en el código.
saludos
10
mama21mama
// Ene 29, 2009 a las 11:29 am
o/ el anti-food funciona muy bien; pero el buscador de gooble no funca.
11
Zerial
// Ene 29, 2009 a las 1:25 pm
mama21mama: hola! \o/
Debe ser un error de parseo en la funcion de busqueda. El buscador obtiene los resultados en html desde Google y los parsea segun un patron especifico, quizas google cambio de posicion un tag o agrego o elimino cosas y dejo el script inservible. Vere si puedo solucionarlo.. tambien puedes meterle mano a ver si lo puedes solucionar.
Saludos!
12
TiaN
// May 21, 2009 a las 12:17 pm
yo fuí el primer betatester
saludos amiga!
13
deb
// May 24, 2009 a las 3:12 am
Hola tu bot es genial, pero me gustaría si es posible areglaras la parte de la busque de google
saludos y suerte
14
Zerial
// May 24, 2009 a las 5:28 pm
@deb: Pronto publicare la siguiente version del bot, con esa funcionalidad ya corregida.
saludos!
15
Zerial
// May 26, 2009 a las 2:12 pm
@deb: Aca esta la nueva version: http://blog.zerial.org/proyectos/oophbot-v105/
16
Bahal
// Dic 9, 2009 a las 3:29 pm
Hola, me gustaria probar el bot pero estoy teniendo un problema al ejecutarlo desde el navegador, Fatal error: Call to undefined function pcntl_fork() in C:\AppServ\www\oophbot\bot.php on line 6
;\ sabes como podria solucionar eso?
17
Zerial
// Dic 9, 2009 a las 3:54 pm
Hola @Bahal:
En Windows la funcion pcntl_fork() no está por defecto, debes compilar php con el soporte o bien instalar el modulo.
saludos
18
Bahal
// Dic 9, 2009 a las 4:31 pm
Gracias, voy a ver como me va con eso, gracias por responder tan rapido
19
Zerial
// Dic 9, 2009 a las 4:34 pm
Si te resulta podrias comentarlo aca, para ayudar a mas gente que lo necesite!
Deja un Comentario