use SOAP::Lite; use Data::Dumper; use strict; BEGIN { unless (exists $::{"Irssi::"}) { require Pod::Usage; Pod::Usage::pod2usage(-verbose => 2); } } use Text::ParseWords; use vars qw!$VERSION %IRSSI %SA_DATA!; use Irssi qw ( command_bind settings_get_bool settings_add_bool settings_get_str settings_add_str signal_add ); #%SA_DATA = (); $VERSION = '0.01'; %IRSSI = ( authors => 'Justin Lee', contact => 'kool.name@gmail.com', name => 'auto-msgr', description => 'Scipt for automessaging when set to away.', license => 'GPL', ); # Start of man page =head1 DESCRIPTION This script is for auto messaging those who send a pm whilst you are away. =head2 Methods =over 5 =item C<< Something! >> =back =head1 AUTHOR Dean - L =cut # Start of script signal_add('event privmsg', 'irc_privmsg'); sub compareTime { my @old = $_[0]; my @new = split(/\s+/, $_[1], 2); return 1 if (@old[0] ne @new[0]); # exits if the day's not the same, returning 1 my $old = convertTime(@old[1]); # day is the same, my $new = convertTime(@new[1]); # discard useless info (y-m-d) my $diff = $new - $old; # get the difference return 1 if ($diff >= 60); return 0; } sub checkTime { my ($data, $date, $server) = @_; return 1 unless $SA_DATA{$data}; return 1 if compareTime($SA_DATA{$data}, $date); return 0; } sub irc_privmsg { my ($server, $data, $from, $address) = @_; my ($to, $message) = split(/\s+:/, $data, 2); chomp(my $date = `date --rfc-3339=seconds`); $date =~ s/^(\S)+(-\d:\d)$/$1/; # $date == yyyy-mm-dd hh:mm:ss my $target = find_target($to, $from); if($server->{'usermode_away'}) { # check for away if($target){ # check for pm if(checkTime($target, $date, $server)) { # splits up $date to get y-m-d and h:m:s $SA_DATA{$target} = split(/\s+/, $date, 2); #$server->command("SEND_AWAY $target"); $server->command("echo HERE: \u$target, $date! GOT IT"); return 1; } $SA_DATA{$target} = split(/\s+/, $date, 2); $server->command("echo HERE: \u$target, $date! LOST IT!"); } } } sub convertTime { my $time = @_; my @times = split(/:/, $time, 3); $times[2] += (($times[0] * 3600) + ($times[1] * 60)); return $times[2]; } sub find_target { my ($to, $from) = @_; if($to =~ /^#/){ return 0; # from a channel do not SEND_AWAY } return $from; # from a private message }