3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-09 21:49:34 +01:00
pbot/modules/seen.pl
Pragmatic Software 2c44e648fb Initial import
2007-05-20 20:44:44 +00:00

84 lines
1.3 KiB
Perl
Executable File

#!/usr/bin/perl -w
use strict;
if($#ARGV != 0)
{
print "Usage: !seen nick\n";
exit 0;
}
my $nick = $ARGV[0];
my $file = "/home/msmud/irclogs/freenode/##c.log";
open(FILE, "< $file")
or die "Can't open $file for reading: $!\n";
seek(FILE, 0, 2); # seek to end of file
my $pos = tell(FILE) - 2;
my $char;
my $result;
while(seek(FILE, $pos--, 0))
{
read(FILE, $char, 1);
if($char eq "\n")
{
my $line = <FILE>;
chomp $line;
next if not defined $line;
if($line =~ m/^(\d\d:\d\d) -!- $nick (.*?)$/i)
{
$result = "date at $1: $nick $2\n";
}
elsif($line =~ m/^(\d\d:\d\d) <\s*$nick> (.*?)$/i)
{
$result = "date at $1: <$nick> $2\n";
}
elsif($line =~ m/^(\d\d:\d\d) * $nick (.*?)$/i)
{
$result = "date at $1: $nick $2\n";
}
last if defined $result;
}
}
if(defined $result)
{
my $date;
while(seek(FILE, $pos--, 0))
{
read(FILE, $char, 1);
if($char eq "\n")
{
my $line = <FILE>;
chomp($line);
if($line =~ m/^--- Log opened (.*?) \d\d:\d\d:\d\d(.*?)$/)
{
$date = $1 . $2;
last;
}
elsif($line =~ m/^--- Day changed (.*?)$/)
{
$date = $1;
last;
}
}
}
$result =~ s/^date/$date/;
print $result;
}
else
{
print "I haven't seen $nick.\n";
}
close(FILE);