html/countdown.pl


   1 # countdown.pl
   2 
   3 # adds public countdown command
   4 
   5 # ver 1.0 
   6 #   - initial release
   7 
   8 use Irssi;
   9 use strict;
  10 use Time::Local;
  11 use vars qw($VERSION %IRSSI);
  12 
  13 $VERSION = "1.0";
  14 %IRSSI = (
  15     authors     => 'Mikko \'Quidz\' Salmi',
  16     name        => 'countdown',
  17     contact	=> 'mikko@quidz.net',
  18     description => 'adds public channel command for counting down something',
  19     license     => 'Public Domain',
  20     changed	=> 'Thu Aug 8 12:06:46 EET 2002'
  21 );
  22 
  23 Irssi::settings_add_str('misc','countdown_target','2003 01 01 00 00 00');
  24 Irssi::settings_add_str('misc','countdown_message','New year 2003:');
  25 Irssi::settings_add_str('misc','countdown_command','!countdown');
  26 Irssi::settings_add_str('misc','countdown_chan','#countdown');
  27 
  28 sub sig_public {
  29 	my ($server, $msg, $nick, $address, $target) = @_;
  30 	my $ctarget = Irssi::settings_get_str("countdown_target");
  31 	my $cinfo = Irssi::settings_get_str("countdown_message");
  32 	my $ccmd = Irssi::settings_get_str("countdown_command");
  33 	my $cchan = Irssi::settings_get_str("countdown_chan");
  34 	if ($msg eq $ccmd and lc($target) eq lc($cchan))
  35 	{
  36 		if ($ctarget =~ /^(\d+?) (\d+?) (\d+?) (\d+?) (\d+?) (\d+?)$/)
  37 		{
  38 			my $sec = timelocal($6,$5,$4,$3,$2-1,$1-1900);
  39 			$sec -= time;
  40 			my $min = ($sec/60)-(($sec%60)/60);
  41 			my $hour = ($min/60)-(($min%60)/60);
  42 			my $day = ($hour/24)-(($hour%24)/24);
  43 			$sec = ($sec%60);
  44 			$min = ($min%60);
  45 			$hour = ($hour%24);
  46 			if ($day) { $cinfo = $cinfo." $day d"; }
  47 			if ($hour) { $cinfo = $cinfo." $hour h"; }
  48 			if ($min) { $cinfo = $cinfo." $min m"; }
  49 			if ($sec) { $cinfo = $cinfo." $sec s"; }
  50 			$server->command("msg $target $cinfo");
  51 		} else
  52 		{
  53 			Irssi::print("Error: countdown.pl misc.countdown_target sould be format <year> <month> <day> <hour> <minute> <second>");
  54 		}
  55 	}
  56 }
  57 
  58 Irssi::signal_add_last('message public', 'sig_public');
  59 Irssi::print("Script : countdown.pl loaded");