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!;
use Irssi qw (
command_bind settings_get_bool
settings_add_bool settings_get_str
settings_add_str signal_add
);
my %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 <kool.name@gmail.com> - L<http://dean.dnsalias.com/>
=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
}