morsik Napisano Marzec 15, 2008 Zgłoszenie Share Napisano Marzec 15, 2008 Po krótce. Tworzę bota IRC w Perlu, mam już zrobiony prawie cały moduł logowania tego co się dzieje na danym kanale, z jednym wyjątkiem. Gdy ktoś wpisze /quit on zamiast to pisać do danego pliku kanału, pisze do jakiegoś dziwnego, do nieczego nie pasującego pliku. Normalnie pliki są zapisywane do logs/channel-#<nazwa_kanału>.log a w przypadku wydania /quit do logs/channel-<nazwa_użytkownika>.log. mods/log/main.pl: sub log_public { my ($conn, $event) = @_; my $text = $event->{args}[0]; open(FILE, '>>./logs/channel-'.$event->{to}[0].'.log'); print FILE clock."<".$event->{nick}."> ".$text."\n"; close(FILE); } push(@publics, \&log_public); sub log_quit { my ($conn, $event) = @_; save_action("-!- ".$event->{nick}." [".$event->userhost."] has quit (".$event->{args}[0].")", $event->{nick}." (".$event->from.") ", $event->{to}[0]); } push(@quits, \&log_quit); sub log_part { my ($conn, $event) = @_; save_action("-!- ".$event->{nick}." [".$event->userhost."] has left ".$event->{to}[0]." (".$event->{args}[0].")", $event->{nick}, $event->{to}[0]); } push(@parts, \&log_part); sub log_join { my ($conn, $event) = @_; save_action("-!- ".$event->{nick}." [".$event->userhost."] has joined", $event->{nick}, $event->{to}[0]); # debug(" * ".$event->{to}[0].": ".$event->{nick}." przyszedł na kanał"); } push(@joins, \&log_join); sub log_mode { my ($conn, $event) = @_; save_action("-!- mode/".$event->{to}[0]." [".$event->{args}[0]." ".$event->{args}[1]."] by ".$event->{nick}, $event->{nick}, $event->{to}[0]); # debug(" * ".$event->{to}[0].": ".$event->{nick}." zmienił tryb na ".join(" ",$event->args).""); } push(@modes, \&log_mode); sub log_kick { my ($conn, $event) = @_; save_action("-!- ".$event->{to}[0]." was kicked from ".$event->{args}[0]." by ".$event->{nick}." (".$event->{args}[1].")", $event->{nick}, $event->{args}[0]); # debug(" * ".($event->to)[0]." został wykopany z kanału ".$event->{args}[0]); } push(@kicks, \&log_kick); sub log_action { my ($conn, $event) = @_; my $text = $event->{args}[0]; open(FILE, '>>logs/channel-'.$event->{to}[0].'.log'); print FILE clock." * ".$event->{nick}." ".$text."\n"; close(FILE); } push(@actions, \&log_action); sub log_changenick { my ($conn, $event) = @_; save_action("-!- ".$event->{nick}." changed nick to (".$event->{args}[0].")", $event->{nick}." (".$event->from.") ", $event->{to}[0]); # debug(" * ".$event->{nick}." opuścił serwer"); } push(@nicks, \&log_changenick); sub save_action { my $action = shift; my $nick = shift; my $to = shift; open(FILE, '>>logs/channel-'.$to.'.log'); print FILE clock()." ".$action."\n"; close(FILE); } 1; Wiem że Net::IRC jest już niewspierane, ale jakoś nie bardzo wiem jak teraz to przepisać do POE::Component::IRC PS> Na dole widać jeszcze funkcję log_changenick która ma logować zmianę nicka, jednak nie działa, jeśli ktoś wpadnie na pomysł jak to zrobić, to proszę o info Z góry dzięki za pomoc Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się