# infobot :: Kevin Lenzo (c) 1997 sub update { my($lhs, $verb, $rhs) = @_; my($reply) = $lhs; $lhs =~ s/^\s*=?//; # handle dcc =oznoid and stuff $lhs =~ s/^i (heard|think) //i; $lhs =~ s/^some(one|1|body) said //i; $lhs =~ s/ +/ /g; # this really needs cleaning up if ($verb eq "is") { $also = ($rhs =~ s/^also //i); my $also_or = ($also and $rhs =~ s/\s*\|\s*//); if ($exists = &get("is", $lhs)) { chomp $exists; if ($exists eq $rhs and not $main::googling) { if ($msgType =~ /public/) { &performSay("i already had it that way, $who."); } else { &msg($who, "it already was $rhs"); } return 'NOREPLY'; } $skipReply = 0; if ($also) { if ($also_or) { $rhs = $exists . '|'.$rhs; } else { if ($exists ne $rhs) { $rhs = $exists .' or '.$rhs; } } if (length($rhs) > getparam('maxDataSize')) { if ($msgType =~ /public/) { if ($addressed) { if (rand() > 0.5) { &performSay("that is too long, ".$who); } else { &performSay("i'm sorry, but that's too long, $who"); } } } else { &msg($who, "The text is too long"); } return 'NOREPLY'; } if ($msgType =~ /public/) { &performSay("okay, $who."); } else { &msg($who, "okay."); } $updateCount++; &status("update: <$who> \'$lhs =is=> $rhs\'; was \'$exists\'"); &set("is", $lhs, $rhs); } else { # not "also" if (($correction_plausible == 0) && ($exists ne $rhs)) { if ($addressed) { if (not $main::googling) { if ($msgType =~ /public/) { &performSay("...but $lhs is $exists..."); } else { &msg($who, "...but $lhs is $exists.."); } &status("FAILED update: <$who> \'$lhs =$verb=> $rhs\'"); } } else { &status("FAILED update: <$who> \'$lhs =$verb=> $rhs\' (not addressed, no reply)"); # we were not addressed, so just # ignore it. return 'NOREPLY'; } } else { if (IsFlag("m") ne "m") { performReply("You have no access to change factoids"); return 'NOREPLY'; } if ($msgType =~ /public/) { &performSay("okay, $who."); } else { &msg($who, "okay."); } $updateCount++; &status("update: <$who> '$lhs =is=> $rhs\'; was \'$exists\'"); &set("is", $lhs, $rhs); } } $reply = 'NOREPLY'; } else { &status("enter: <$who> $lhs =$verb=> $rhs"); $updateCount++; $factoidCount++; if ($factoidCount == 31337) { # particular count $mySaveChannel = &channel(); &say("That would be factoid $factoidCount given on $mySaveChannel by $who."); &status("FACTOID NUMBER $factoidCount on channel $mySaveChannel by $who."); &say("woohoo!"); &channel($mySaveChannel); } &set("is", $lhs, $rhs); $is{"theCount"}++; } } else { # 'is' failed if ($verb eq "are") { $also = ($rhs =~ s/^also //i); if ($exists = &get("are", $lhs)) { if ($also) { if ($exists ne $rhs) { $rhs = $exists .' or '.$rhs; } if ($msgType =~ /public/) { &performSay("okay, $who.") unless $rhs eq $exists; } else { &msg($who, "okay."); } $updateCount++; &status("update: <$who> \'$lhs =are=> $rhs\'; was \'$exists\'"); &set("are", $lhs, $rhs); } else { # not 'also' if (($correction_plausible == 0) && ($exists ne $rhs)) { if ($addressed) { &status("FAILED update: \'$lhs =$verb=> $rhs\'"); if ($msgType =~ /public/) { &performSay("...but $lhs is $exists..."); } else { &msg($who, "...but $lhs is $exists.."); } } else { &status("FAILED update: $lhs $verb $rhs (not addressed, no reply)"); # we were not addressed, so just # ignore it. return 'NOREPLY'; } if ($msgType =~ /public/) { &performSay("...but $lhs are $exists..."); } else { &msg($who, "...but $lhs are $exists..."); } } else { if ($msgType =~ /public/) { &performSay("okay, $who.") unless $rhs eq $exists; } else { &msg($who, "okay.") unless grep $_ eq $who, split /\s+/, $param{friendlyBots}; } $updateCount++; &status("update: <$who> \'$lhs =are=> $rhs\'; was \'$exists\'"); &set("are", $lhs, $rhs); } $reply = 'NOREPLY'; } } else { &status("enter: <$who> $lhs =are=> $rhs"); $updateCount++; &set("are", $lhs, $rhs); $are{"theCount"}++; } } } $lhs .= " $verb $rhs"; if ($reply ne 'NOREPLY') { $reply = $lhs; } return $reply; } # --- 1;