ooPhBot: Bot para IRC escrito en PHP
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.




Noviembre 5th, 2008 at 6:27 pm
borraste el archivo?
excelente blog saludos.
Noviembre 6th, 2008 at 12:01 am
deb: gracias por avisar. Tenia mal linkeado los archivos, ahora funcionan.
saludos
Noviembre 6th, 2008 at 9:59 pm
De nada.
Y lo otro funciona con mysql?
debo crear una base de datos ?
Sorry si las preguntas son muy obvias.
Noviembre 6th, 2008 at 11:08 pm
Tiene un script que se llama install.php, miralo.
Diciembre 19th, 2008 at 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
Diciembre 19th, 2008 at 8:48 pm
Es que no el bot se instala pero luego al ejectutar el bot.php no pasa nada…
Diciembre 20th, 2008 at 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
Diciembre 21st, 2008 at 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
Diciembre 22nd, 2008 at 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