1# countdown.pl
2
3# adds public countdown command
4
5# ver 1.0
6#   - initial release
7
8use Irssi;
9use strict;
10use Time::Local;
11use 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
23Irssi::settings_add_str('misc','countdown_target','2003 01 01 00 00 00');
24Irssi::settings_add_str('misc','countdown_message','New year 2003:');
25Irssi::settings_add_str('misc','countdown_command','!countdown');
26Irssi::settings_add_str('misc','countdown_chan','#countdown');
27
28sub 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 should be format <year> <month> <day> <hour> <minute> <second>");
54		}
55	}
56}
57
58Irssi::signal_add_last('message public', 'sig_public');
59Irssi::print("Script : countdown.pl loaded");
60