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 }