Skocz do zawartości

Bot Na Net::irc


morsik

Rekomendowane odpowiedzi

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

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ę
×
×
  • Dodaj nową pozycję...