22. september 2001 - 17:27Der er
12 kommentarer og 1 løsning
NET::IRC
jeg har et problem. jeg er ved at skrive en bot til irc, men den vil ikke starte op. jeg bruger modulet NET::IRC, og har lavet en while løkke som sørger for at $irc->do_one_loop kører hele tiden. Der er bare det problem, at den ikke vil starte op. HVis jeg så et eller andet sted i koden skriver \"print \"\\n\"; \" så virker det indtil jeg retter et andet sted i koden. Hvad kan der være galt?
use Net::IRC; use strict; use constant (IRCNAME => \'Perl Net::IRC bot\', PORT => 6667 );
my botname = shift( ) or \'PerlWh0re\'; my server = shift( ) or \'irc.pushers.net\';
my $irc = new Net::IRC; $irc->newconn( Nick => $botname, Server => $server, Port => PORT, Ircname => IRCNAME );
$irc->add_handler( \'376\', \\&on_connect( ) );
sub on_connect { my $self = shift( ); $self->join( \'#digitalunderground\' ); $self->privmsg( \'#digitalunderground\', \'Hi - please kill me!\' ); }
$irc->start( );
Iøvrigt kan jeg anbefale, hvis du har nok panodiler til at klare at dit hoved bliver ørt det første stykke tid, at benytte POE til den slags her ( poe.perl.org ), de har det glimrende modul POE::Component::IRC, som kan findes på CPAN.
det virker fint med $irc->start, men den skal samtidig have input fra nogle andre sockets, og det kan den vel ikke med irc-> start. derfor har jeg lavet en while løkke der kører $irc->start, og derefter henter hvad der skal hentes fra de forskellige sockets
prorgammet lytter på nogle sockets efter en counterstricke log der blvier sent fra nogle games servere. disse logs kigger den så igennem og skriver noget af det ud på irc. det sjove er, at det virker fint, men hvis jeg så et eller andet sted f.eks fjerner et print statement så virker det ligepludselig ikke
Okay - mit forslag ville så være at du kunne lave et mellemled, fx en database, som du samtidig kunne bruge til at lave webstats udfra, hvilket jeg antager er en del af din fremtidige TODO liste. :-)
Men spørgsmålet er - skal reaktionen komme fordi at der kommer nye data, eller fordi at en bruger beder om det fra IRC ?
det skal skrive ud når der er en der slår en teammate ihjel, og når der er nogen der skriver admin inde i spillet. det virker fint det med admin. Det skal også vise en spillerliste og kicke eller banne dem fra irc. alt dette virker, men jeg forstår ikke hvorfor den ikke vil connecte ordentligt til irc serveren hvis man retter et eller andet ligegyldigt i koden det kan være hvis man bare fjerner \\n i slutningen af et print statement
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.