You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
3.4 KiB
Perl

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

# infobot :: Kevin Lenzo (c) 1997
# with thanks to Patrick Cole
use Socket;
# send info to devnull
sub devnull {
return '';
}
# ask frendly bots
sub askFriendlyBots {
my $request = $_[0];
return if ($request =~ /^no\,?\s+/);
foreach $bot (split /\s+/, $param{'friendlyBots'}) {
$request =~ s/^(is|are) //i;
&msg($bot, ":INFOBOT:QUERY <$who> $request");
}
}
# format a public message
sub FormatText {
my($nick, $msg) = @_;
undef @ret;
undef %str;
my $msgLen = length($msg);
my $nickLen = length($nick);
my $tot = 0;
my $cnt = 0;
foreach (split //, $msg) {
if ($cnt == (80 - $nickLen - 3)) {
$tot++;
$cnt=0;
}
$str{$tot} .= $_;
$cnt++;
}
foreach (keys %str) {
push(@ret, $str{$_}."\n");
}
return @ret;
}
sub status {
$statcount++;
my($input) = @_;
if ($param{'VERBOSITY'} > 0) {
if ($param{ansi_control}) {
printf $_green."[%5d] ".$ob, $statcount;
$input =~ s/[\cA-\c_]//ig; # (Derek Moeller)++
my $printable = $input;
if ($printable =~ s/^(<\/\S+>) //) {
# it's me saying something on a channel
my $name = $1;
print "$b_yellow$name $printable$ob\n";
} elsif ($printable =~ s/^(<\S+>) //) {
my $name = $1;
if ($addressed) {
print "$b_red$name $printable$ob\n";
} else {
print "$b_cyan$name$ob $printable\n";
}
} elsif ($printable =~ s/^(-\S+-) //) {
# notice
print "$_green$1 $printable$ob\n";
} elsif ($printable =~ s/^(\[\S+\]) //) {
# message from someone
print "$b_red$1 $printable$ob\n";
} elsif ($printable =~ s/^(>\S+<) //) {
# i'm messaging someone
print "$b_magenta$1 $printable$ob\n";
} elsif ($printable =~ s/^(!\S+!) //) {
# i'm messaging someone
print "$_red$1 $printable$ob\n";
} elsif ($printable =~ s/^(enter:|update:|forget:) //) {
# something that should be SEEN
print "$b_green$1 $printable$ob\n";
} else {
print "$printable\n";
}
} else {
printf ("[%5d] $input\n", $statcount) if ($input !~ /^\s*$/);
}
}
&log_line("[$statcount] ".$input);
}
sub performSay {
my($in) = @_;
if (!defined($prevIn)) { $prevIn = ""; };
if (($skipReply == 0) && ($in !~ 'NOREPLY')) {
$prevIn = $in;
if (0) { # for mac speech manager niceties
$in =~ s/ at (ht|f)/ $1/ig;
$in =~ s/((ht|f)tp:\S+)/here [[cmnt $1 ]]/ig;
}
&say($in);
}
# this could echo everything to somewhere
# &msg('somebody', ".say $in");
return '';
}
sub performReply {
if ($msgType eq 'private') {
&msg($who, $_[0]);
} else {
&say("$_[0]");
}
}
sub log_line {
my($line) = @_;
my($logwrite) = 0;
my $s = time();
if ($param{'logfile'} ne '') {
$line =~ s/\n*$/\n/;
open(TRACK, ">>$param{logfile}");
$loglines++;
$total_loglines++;
print TRACK "$s $line";
close(TRACK); # if (TRACK);
}
}
sub getAllKeys {
@myIsKeys = getDBMKeys("is");
@myAreKeys = getDBMKeys("are");
$factoidCount = $#myIsKeys + $#myAreKeys + 2;
$updateCount = 0;
}
sub purifyNick {
my $safeWho = $_[0];
$safeWho =~ s/\*//g;
$safeWho =~ s/\\/\\\\/g;
$safeWho =~ s/\[/\\\[/g;
$safeWho =~ s/\]/\\\]/g;
$safeWho =~ s/\|/\\\|/g;
$safeWho =~ tr/A-Z/a-z/;
$safeWho = substr($safeWho, 0, 9);
$safeWho =~ s/\s+.*//;
return $safeWho;
}
1;
__DATA__
/dimer\[0\/: trailing \ in regexp at /usr/users/infobot/infobot-current/src/Misc.pl line 164, <FH> chunk 98.