• Publicidad

No escribe POE::Component::IRC::Plugin::Logger

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

No escribe POE::Component::IRC::Plugin::Logger

Notapor Kamikaze » 2009-07-21 10:20 @472

Hola a todos

Estoy haciendo un bot en Perl usando POE::Component::IRC; todo perfecto por ahora; para lo que quiero hacer va de lujo.

Pero, siempre hay un pero, me estoy dando de cabezazos con la carga del plugin 'Logger', de la misma colección POE. He estado documentándome sobre la carga de los plugins, y no tengo ningún problema con otros, pero éste falla. Y en apariencia no sale ningún error. Es más, cuando no pongo una variable que necesita salta...

En fin, os posteo lo necesario para ver el código, y quizás haya por aquí alguien que se haya pegado antes.

Datos:
Perl Version: 5.10.0-19
POE Version: 6.09

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use POE qw(Component::IRC);
  6. use POE::Component::IRC::Plugin::BotTraffic;
  7. use POE::Component::IRC::Plugin::Logger;
  8.  
  9. my $nickname = 'Fulgor101';
  10. my $ircname = 'Observando';
  11. my $server = 'dune.irc-hispano.org';
  12. my $username = 'Fulgor';
  13. my @channels = ('#pruebas');
  14.  
  15. # We create a new PoCo-IRC object
  16. my $irc = POE::Component::IRC->spawn(
  17.     nick => $nickname,
  18.     ircname => $ircname,
  19.     username => $username,
  20.     server => $server,
  21. ) or die "Oh noooo! $!";
  22.  
  23. POE::Session->create(
  24.      package_states => [
  25.          main => [ qw(_default _start irc_001 irc_public irc_bot_public) ],
  26.      ],
  27.      heap => { irc => $irc },
  28. );
  29.  
  30. sub _start {
  31.      my $heap = $_[HEAP];
  32.      # retrieve our component's object from the heap where we stashed it
  33.      my $irc = $heap->{irc};
  34.      $irc->yield( register => 'all' );
  35.      $irc->yield( connect => { } );
  36.      $irc->plugin_add( 'BotTraffic', POE::Component::IRC::Plugin::BotTraffic->new() );
  37.      $irc->plugin_add('Logger', POE::Component::IRC::Plugin::Logger->new(Path =>'home/user',Private => 1,Public => 1,DCC => 1, ));
  38.      return;
  39. }
  40. .
  41. .
  42. .
  43. sub irc_bot_public {
  44.      my ($kernel, $heap) = @_[KERNEL, HEAP];
  45.      my $channel = $_[ARG0]->[0];
  46.      my $what = $_[ARG1];
  47.      print "I said '$what' on channel $channel\n";
  48.      return;
  49. }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Tras lanzarlo, todo parece hacerse correctamente, el BotTraffic, realiza perfectamente su función. Y el 'Logger', no da ningún error al cargarlo.

Líneas que aparecen al lanzar el script.

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. user@Box:~$ perl 3cosa.pl
  2. irc_registered:  'POE::Component::IRC=HASH(0x86873c0)'
  3. irc_plugin_add:  'BotTraffic' 'POE::Component::IRC::Plugin::BotTraffic=HASH(0x86982d8)'
  4. irc_plugin_add:  'Logger' 'POE::Component::IRC::Plugin::Logger=HASH(0x86522b8)'
  5. irc_connected:  'dune.irc-hispano.org'
  6. irc_notice:  'dune.irc-hispano.org' [IP_LOOKUP] '*** Found your hostname (CACHED!).'
  7. irc_ping:  'eMa8oAUCf6UWWOKo'
  8. Connected to dune.irc-hispano.org
  9. irc_002:  'dune.irc-hispano.org' 'Your host is dune.irc-hispano.org, running version u2.10.H.10.110' [Your host is dune.irc-hispano.org, running version u2.10.H.10.110]
  10. irc_003:  'dune.irc-hispano.org' 'This server was created lun mar 2 2009 at 13:47:21 CET' [This server was created lun mar 2 2009 at 13:47:21 CET]
  11. .
  12. .
  13. .
  14.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Y he probado con distintas rutas en la variable 'path', y revisado los permisos... y nada de nada. Eso sí.. si no ponemos algo a la variable 'path', se queja y no lanza el script.

No se me ocurre nada... algo se me escapa y no sé el qué, quizás alguien vea algo más...

Un Saludo y gracias.
Última edición por Kamikaze el 2009-07-21 19:20 @847, editado 1 vez en total
Kamikaze
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2009-07-21 09:59 @458

Publicidad

Re: No escribe POE::Component::IRC::Plugin::Logger

Notapor Kamikaze » 2009-07-21 18:41 @820

¡Hola a todos!

Bueno ya di con el tema... gracias a los amigos de "perlmonks.org", andaba cerca... pero... la voz de la experiencia habló ;) . En fin, hay que hacer lo siguiente... añadir una línea en los 'use' y cambiar la forma del objeto, quedando de la siguiente forma.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use POE qw(Component::IRC);
  6. #AÑADIMOS State
  7. use POE::Component::IRC::State;
  8. use POE::Component::IRC::Plugin::BotTraffic;
  9. use POE::Component::IRC::Plugin::Logger;
  10.  
  11. my $nickname = 'Fulgor101';
  12. my $ircname = 'Observando';
  13. my $server = 'dune.irc-hispano.org';
  14. my $username = 'Fulgor';
  15. my @channels = ('#pruebas');
  16.  
  17. # We create a new PoCo-IRC object
  18. #CAMBIAREMOS ::IRC-> por ::IRC::State->
  19. my $irc = POE::Component::IRC:State->spawn(
  20.     nick => $nickname,
  21.     ircname => $ircname,
  22.     username => $username,
  23.     server => $server,
  24.     plugin_debug => 1, #Con esta linea añadida, cuando lancemos el script nos dira si falla algo.
  25. ) or die "Oh noooo! $!";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y listo... ya tendremos los LOG de los canales de nuestro Bot y todos los privados que le abran.

Espero que esto ayude a alguien más...

Un saludo y gracias por leer.

P.D Gracias, explorer, por marcar la dirección de la búsqueda.
Kamikaze
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2009-07-21 09:59 @458

Re: No escribe POE::Component::IRC::Plugin::Logger

Notapor bl4ckc00k1e » 2009-08-15 17:22 @765

Pues a mí, sí, por que justo estoy aprendiendo a hacer un bot en Perl xD.

¡¡No imaginaba que fuese tan corto el código!! Claro que para agregarle funciones será otra cosa. Yo voy a intentar hacerlo por mi mismo sin copiar códigos, pero tengo una pregunta.

¿Las librerías que usas son obligatoriamente necesarias? Me harías un gran favor si me las pudieses comentar, porque lo que encuentro es en inglés y me hago un lío. ¿Y por qué puerto se conecta? ¡No lo veo por ningún lado!

Gracias de antemano.
Imagen
Avatar de Usuario
bl4ckc00k1e
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2009-08-14 21:56 @956


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado