Mercurial > hg > skillbot
comparison skillbot.pl @ 57:fabae7870b52
Avoid updating during downtime windows
author | Dominic Cleal <dominic@computerkb.co.uk> |
---|---|
date | Sun, 28 Dec 2008 16:41:53 +0000 |
parents | c604d8d6ccc5 |
children | 7d43407a9214 |
comparison
equal
deleted
inserted
replaced
56:c604d8d6ccc5 | 57:fabae7870b52 |
---|---|
238 { | 238 { |
239 check_friend($self, $f); | 239 check_friend($self, $f); |
240 my $text; | 240 my $text; |
241 if (defined $f->{skill}) { | 241 if (defined $f->{skill}) { |
242 my $downtime = ''; | 242 my $downtime = ''; |
243 if (skill_finish_in_downtime($f->{skill_finish})) { | 243 if (timestamp_in_downtime($f->{skill_finish})) { |
244 $downtime = ", coincides with downtime"; | 244 $downtime = ", coincides with downtime"; |
245 } | 245 } |
246 | 246 |
247 my $finish = DateTime->from_epoch( | 247 my $finish = DateTime->from_epoch( |
248 epoch => $f->{skill_finish}, | 248 epoch => $f->{skill_finish}, |
479 sub check_friend | 479 sub check_friend |
480 { | 480 { |
481 my $self = shift; | 481 my $self = shift; |
482 my $f = shift; | 482 my $f = shift; |
483 | 483 |
484 # Don't attempt updates during downtime, can cause crash | |
485 return if (timestamp_in_downtime(time)); | |
486 | |
484 my $skill = $f->{char_api}->skill->in_training; | 487 my $skill = $f->{char_api}->skill->in_training; |
485 | 488 |
486 # Nothing training | 489 # Nothing training |
487 unless (defined $skill) | 490 unless (defined $skill) |
488 { | 491 { |
522 $f->{skill_finish} = $skill->finish_time; | 525 $f->{skill_finish} = $skill->finish_time; |
523 $f->{skill_countdown} = $skill->time_remaining; | 526 $f->{skill_countdown} = $skill->time_remaining; |
524 $f->{skill_name} = sprintf("%s %d", $skill->name, $skill->level); | 527 $f->{skill_name} = sprintf("%s %d", $skill->name, $skill->level); |
525 | 528 |
526 # Check if the finish time is within scheduled EVE downtime | 529 # Check if the finish time is within scheduled EVE downtime |
527 if (skill_finish_in_downtime($f->{skill_finish})) | 530 if (timestamp_in_downtime($f->{skill_finish})) |
528 { | 531 { |
529 $self->privmsg('#' . $config{channel}, sprintf( | 532 $self->privmsg('#' . $config{channel}, sprintf( |
530 "\002%s:\002 Completion time of %s's %s " . | 533 "\002%s:\002 Completion time of %s's %s " . |
531 "skill will coincide with scheduled downtime at %s", | 534 "skill will coincide with scheduled downtime at %s", |
532 $f->{nick}, $f->{char}, $f->{skill_name}, | 535 $f->{nick}, $f->{char}, $f->{skill_name}, |
559 }); | 562 }); |
560 } | 563 } |
561 | 564 |
562 =pod | 565 =pod |
563 | 566 |
564 Indicate whether the passed skill object is due to finish during a normal, | 567 Indicate whether the passed timestamp is due to finish during a normal, |
565 scheduled downtime window. | 568 scheduled downtime window. |
566 | 569 |
567 =cut | 570 =cut |
568 sub skill_finish_in_downtime | 571 sub timestamp_in_downtime |
569 { | 572 { |
570 my $skill = shift; | 573 my $ts = shift; |
571 | 574 |
572 # Check if the finish time is within 11:00-11:59 (EVE downtime) | 575 # Check if the finish time is within 11:00-11:59 (EVE downtime) |
573 return ([gmtime($skill)]->[2] == 11); | 576 return ([gmtime($ts)]->[2] == 11); |
574 } | 577 } |
575 | 578 |
576 END { | 579 END { |
577 cleanup_and_die(); | 580 cleanup_and_die(); |
578 } | 581 } |