# HG changeset patch # User Dominic Cleal # Date 1228604052 0 # Node ID 7bcc70b2121aabea3581528b8f3ce889b5338fce # Parent 40154257e632cd1aff921dc25551b66b18fb82d4 Adding !eta handler to report current training status diff -r 40154257e632 -r 7bcc70b2121a skillbot.pl --- a/skillbot.pl Sat Dec 06 19:58:31 2008 +0000 +++ b/skillbot.pl Sat Dec 06 22:54:12 2008 +0000 @@ -106,6 +106,7 @@ $self->add_handler('cversion', \&on_cversion); $self->add_handler('cping', \&on_ping); $self->add_handler('join', \&on_join); + $self->add_handler('public', \&on_public); } sub irc_debug @@ -219,6 +220,34 @@ } } +sub on_public +{ + my ($self, $event) = @_; + my ($their_nick, $msg) = ($event->nick, $event->args); + + if ($msg =~ /^\!eta/i) { + my $found = 0; + for my $f (@friends) { + if ($f->{nick} eq $their_nick) { + my $text = (defined $f->{skill} + ? sprintf("Currently training %s (finish in %s)", + $f->{skill}->name, + $f->{skill}->time_remaining) + : "No skill currently training"); + + $self->privmsg('#' . $config{channel}, sprintf( + chr(2) . "%s:" . chr(15) . " %s", + $f->{char}->name, encode("utf8", $text))); + $found++; + } + } + + if ($found == 0) { + $self->privmsg('#' . $config{channel}, "No characters found"); + } + } +} + sub on_notice { my ($self, $event) = @_;