#!/usr/ug/bin/perl5 # # sample use: # gsub -akf ~whuang/prog/gale/8ball cmd/8ball:@ugcs.caltech.edu/user/8ball.whuang # # by Wei-Hwa Huang (whuang@ugcs.caltech.edu) # sections of code stolen from jtr@ugcs.caltech.edu use strict; use POSIX qw(strftime); # gale info use vars qw($FROM $ENC $CAT $SIGN $TIME @MESSAGE $NEWCAT $FTIME); # misc use vars qw($GALE $HOME $LOGDIR $USER %LOGGEDTO); $FROM= $ENV{'HEADER_FROM'}; $TIME= $ENV{'HEADER_TIME'}; $CAT= $ENV{'GALE_CATEGORY'}; $CAT =~ s-zephyr/message-zephyr/MESSAGE-gi; print STDERR "incoming message from category: $CAT\n"; $ENC= $ENV{'GALE_ENCRYPTED'}; $SIGN= $ENV{'GALE_SIGNED'}; $HOME= $ENV{'HOME'}; $GALE= $HOME . "/.gale/"; $LOGDIR= $HOME . "/gale/"; $USER= $ENV{'USER'}; $FTIME= $ENV{'GALE_TIME_ID_TIME'}; @MESSAGE = <>; print STDERR "$CAT\n"; my @cats = split(":",$CAT); my (@cmdcats, @botcats, @othercats) = ((),(),()); my $singlecat; foreach $singlecat (@cats) { if ($singlecat =~ /^bot\./) { push(@botcats,$singlecat); } elsif ($singlecat eq '@ugcs.caltech.edu/user/8ball.whuang/') { push(@cmdcats,$singlecat); } elsif ($singlecat =~ /^cmd\./) { push(@cmdcats,$singlecat); } else { push(@othercats,$singlecat); } } foreach $singlecat (@cmdcats) { my $outstring; if ($singlecat eq '@ugcs.caltech.edu/user/8ball.whuang/') { $outstring = (@othercats == ()) ? "| gsend $SIGN" : "| gsend $SIGN -c ".join(':',@othercats); } else { $outstring = (@othercats == ()) ? "| gsend -c bot.8ball" : "| gsend -c bot.8ball:".join(':',@othercats); } if (join('',@MESSAGE) =~ /^\s*help\s*$/) { @MESSAGE = (); $MESSAGE[0] = <<'End of Help Message'; 8-Ball Bot version 1.2 by Wei-Hwa Huang (whuang@ugcs.caltech.edu) Duh! Privately: Send a private puff to 8ball.whuang@ugcs.caltech.edu Publically: Send a puff to cmd.8ball. The bot will respond in bot.8ball, along with any crosspuffed categories. End of Help Message } else { # Add your code here. my $roll; $roll = int(rand(20)); @MESSAGE = ("OUTLOOK GOOD") if $roll == 0; @MESSAGE = ("OUTLOOK NOT SO GOOD") if $roll == 1; @MESSAGE = ("MY REPLY IS NO") if $roll == 2; @MESSAGE = ("DON'T COUNT ON IT") if $roll == 3; @MESSAGE = ("YOU MAY RELY ON IT") if $roll == 4; @MESSAGE = ("ASK AGAIN LATER") if $roll == 5; @MESSAGE = ("MOST LIKELY") if $roll == 6; @MESSAGE = ("CANNOT PREDICT NOW") if $roll == 7; @MESSAGE = ("YES") if $roll == 8; @MESSAGE = ("YES DEFINITELY") if $roll == 9; @MESSAGE = ("BETTER NOT TELL YOU NOW") if $roll == 10; @MESSAGE = ("IT IS CERTAIN") if $roll == 11; @MESSAGE = ("VERY DOUBTFUL") if $roll == 12; @MESSAGE = ("IT IS DECIDEDLY SO") if $roll == 13; @MESSAGE = ("CONCENTRATE AND ASK AGAIN") if $roll == 14; @MESSAGE = ("SIGNS POINT TO YES") if $roll == 15; @MESSAGE = ("MY SOURCES SAY NO") if $roll == 16; @MESSAGE = ("WITHOUT A DOUBT") if $roll == 17; @MESSAGE = ("REPLY HAZY, TRY AGAIN") if $roll == 18; @MESSAGE = ("AS I SEE IT, YES") if $roll == 19; } $ENV{'GALE_FROM'}= 'The Gale 8-Ball'; open(FHAND, $outstring); print FHAND @MESSAGE; close(FHAND); }