changeset 21:7bcc70b2121a

Adding !eta handler to report current training status
author Dominic Cleal <dominic@computerkb.co.uk>
date Sat, 06 Dec 2008 22:54:12 +0000
parents 40154257e632
children 1d57373d1c04
files skillbot.pl
diffstat 1 files changed, 29 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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) = @_;