comparison skillbot.pl @ 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 10587dbd634b
children 1d57373d1c04
comparison
equal deleted inserted replaced
19:40154257e632 21:7bcc70b2121a
104 $self->add_handler(376, \&on_connect); 104 $self->add_handler(376, \&on_connect);
105 $self->add_handler(433, \&on_nick_taken); 105 $self->add_handler(433, \&on_nick_taken);
106 $self->add_handler('cversion', \&on_cversion); 106 $self->add_handler('cversion', \&on_cversion);
107 $self->add_handler('cping', \&on_ping); 107 $self->add_handler('cping', \&on_ping);
108 $self->add_handler('join', \&on_join); 108 $self->add_handler('join', \&on_join);
109 $self->add_handler('public', \&on_public);
109 } 110 }
110 111
111 sub irc_debug 112 sub irc_debug
112 { 113 {
113 my ($fmt, @args) = @_; 114 my ($fmt, @args) = @_;
214 irc_debug("Disconnected from %s (%s). Attempting to reconnect...", 215 irc_debug("Disconnected from %s (%s). Attempting to reconnect...",
215 $event->from, ($event->args())[0]); 216 $event->from, ($event->args())[0]);
216 217
217 while (! $self->connect()) { 218 while (! $self->connect()) {
218 irc_debug("%s", $@); 219 irc_debug("%s", $@);
220 }
221 }
222
223 sub on_public
224 {
225 my ($self, $event) = @_;
226 my ($their_nick, $msg) = ($event->nick, $event->args);
227
228 if ($msg =~ /^\!eta/i) {
229 my $found = 0;
230 for my $f (@friends) {
231 if ($f->{nick} eq $their_nick) {
232 my $text = (defined $f->{skill}
233 ? sprintf("Currently training %s (finish in %s)",
234 $f->{skill}->name,
235 $f->{skill}->time_remaining)
236 : "No skill currently training");
237
238 $self->privmsg('#' . $config{channel}, sprintf(
239 chr(2) . "%s:" . chr(15) . " %s",
240 $f->{char}->name, encode("utf8", $text)));
241 $found++;
242 }
243 }
244
245 if ($found == 0) {
246 $self->privmsg('#' . $config{channel}, "No characters found");
247 }
219 } 248 }
220 } 249 }
221 250
222 sub on_notice 251 sub on_notice
223 { 252 {