Portál AbcLinuxu, 10. května 2025 05:30

Dotaz: IRC Perl Bot

9.6.2009 18:19 Mr.S1lent.cz
IRC Perl Bot
Přečteno: 413×
Odpovědět | Admin

Zdravim,

 

zacal jsem psat IRC bota v Perlu, v ramci cviceni, ponevadz jsem se tento jazyk zacal nedavno ucit. Zatim se umi jen prihlasit na zadany kanal v connection objectu. Pridal jsem tam i funkci na test obsahu "skla" IRC chatu, ktery projizdim regularem (resp command handler), avsak mi z neznamych duvodu nefunguje... Uz to resim tyden, vim, ze pred tydnem to tak pet minut slo, pote jsem tam neco prepsal a od te doby to nemuzu a nemuzu rozjet. Byl bych vam vdecny za jakekoliv rady, zdrojak mam na pastebin, tady je link:

 

http://pastebin.com/m4ccd3d6

 

moc dekuju, uz si opravdu nevim rady :-(

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.6.2009 04:54 zha
Rozbalit Rozbalit vše Re: IRC Perl Bot
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jestli nejsou problemy s pripojenim, tak mas chyby v kodu:
sub command {
...
  if ($text =~ /^\!(.+)$/) {
    command_output($conn, $text); # $1 ?

sub command_output {
...
  if (/^test$/) { # nebo vykricnik ?
A taky bude potreba neco jako
$conn->add_handler('neco', \&command);
10.6.2009 09:03 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: IRC Perl Bot

Dekuji moc, ale stale to bohuzel nefunguje, v prvnim pripade jsem $text nahradil $1, v druhem pripade jsem pridal else s negujicim vystupem (Text neprobehl uspesne), tudiz to by to melo resit pripadnou chybu (ale i tak jsem se inspiroval tutorialem, kde to meli resene takhle) a pres handler to taky checkuju, ale stale nic... problem s pripojenim, to bych nerekl, mam stabilni ping a bot se pripoji bez problemu :-)

Neni potreba jeste nejaky jiny modul, nez Net::IRC nebo kde by mohla byt chyba? Ja uz opravdu z toho sedivim :-(

 


 

10.6.2009 18:58 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: IRC Perl Bot

Resp. tady je upraveny kod v soucasne podobe: http://pastebin.com/m5b883f58

 

Pridal jsem tam vypis pomoci $conn->privmsg(); pri join, coz se provede kladne, pote jsem zjednodusil tu cast commands, ale i presto to nikdy nic nevypise, stale nikdo nevi, kde by mohla byt chyba?....

12.6.2009 00:25 zha
Rozbalit Rozbalit vše Re: IRC Perl Bot
Kde jsi prisel na 'syntax_error' ? Ja to v eventech nevidim (http://search.cpan.org/perldoc?Net::IRC::Event). Dej tam 'public'.
12.6.2009 14:10 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: IRC Perl Bot

Dekuji mnohokrat, sice jsem to vyresil, jeste nez mi bylo odpovezeno, ale i tak vas to stalo urcite nejaky ten cas...

 

Nyni funguje vsechno jak ma, ale neprisel jsem bohuzel na zpusob, jak zjistit prava jednotlivych nicku.

Mam takovou myslenku, ze bot bude zvladat radu veci na zakladne danych prikazu i kicky a bany nehlede na

nastaveni danych veci do db apod... Pouzivam tam modul Net::IRC, ktery se chova tak, ze pomoci $conn->prikaz( parametry )

muzu pouzivat defacto jakekoliv irc prikazy. Prikaz "whois" vypisuje mimojine i to, ve kterych mistnostech se dany uzivatel nachazi

a i to, jaka ma prava, coz vypisuje na zaklade prefixu u danych mistnosti - napr: +#room @#room nebo %$room, coz by se dalo

protahnout grepem a vybrat, co potrebuji, to neni slozite, problem je v tom, ze jsem udelal nasledovnou vec:

 

my $hodnota = $conn->whois( #kanal, $nick ); a pak jsem ji projel dumperem takto: dumper \$hodnota;

ale bohuzel mi to vypisuje pouze $VAR1 = '24'; mebo jine cislo (u kazdeho nicku je to jine), proto bych se chtel zeptat,

jestli ty data jdou z te promenne $hodnota nejak vydolovat, nebo jestli mam pouzit jinou metodu, v tom pripade prosim poradte jakou,

 

moc diky

 

Mr.S1lent.cz

13.6.2009 04:54 zha
Rozbalit Rozbalit vše Re: IRC Perl Bot
whois (stejne jako dalsi funkce) jen odesle ten prikaz serveru, odpoved nezpracovava. To co ti to vratilo je delka odeslanych dat. Odpoved serveru si musis ohandlovat sam (add_handler) - seznam odpovedi je treba tady: http://www.faqs.org/rfcs/rfc1459.html

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.