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");