Skip to content

jonrober/calvin-perl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

my $ub_descbot = new Calvin::Bots::Descbot;
$ub_descbot->descroot('\calvin\descs');

# Descbot: This only has one configuration worry.  Change /calvin/descs
#  to whatever main directory your descs are located in.  Descs need
#  to be in subdirectories under this directory, sorted by some sort of
#  topic.  As an example, the calvin descs on eyrie are under
#  /calvin/descs/default, /calvin/descs/aura/, /calvin/descs/area,
#  /calvin/descs/scan...
#
# As far as usage goes, the default subdirectory should likely contain
#  general appearance.  The reason for this is that
#  "@msg uberbot desc eddie" will look for a file named eddie in the
#  default subdirectory and send it.  So whatever catagory of descs
#  that you think will be most used, you should put under default.
#  The other subdirectories are accessed through "
#  @msg uberbot desc eddie aura" for the aura subdir.  So the general
#  format is "@msg uberbot desc <filename> [subdir]", where subdir
#  defaults to "default" if it's not there.
#
# So make a directory to keep all the files, make a default subdirectory
#  and whatever others needed under that, put the directory in
#  "descroot('<directory>')", then put files of descriptions in the
#  subdirectoies.


my $ub_nagbot  = new Calvin::Bots::Nagbot;

# No options needed here.
#
# Nagbot is a messaging bot, with three types of messages.  All of the
#  messages are designed to only go to the user who sends them.  You
#  *could* send a message to someone else by changing to their nick if
#  they're not around and setting a message, but that's very bad form.
#
# "@msg ub signon <msg>" will add a signon message.  These messages are
#  sent to you each time you sign on, and would generally be reminders to
#  talk to someone, do something, etc.
# "@msg ub alarm <time> <msg>" will add an alarm message at a certain
#  time.  <time> is in the format of "+<x>m" or "+<x>h<y>m".  Fairly
#  self-explainatory there.  +30m makes the alarm to off in 30 minutes. 
#  +1h20m sets the alarm message to be sent to you in an hour and twenty
#  minutes.
# "@msg ub ping <interval> <msg>" will ping you with a message over and
#  over every <interval> minutes.  So "@msg ub ping 15 Ask about pickup."
#  would sent you the msg "Ask about pickup" every 15 minutes.
#
# There are two more commands from nagbot - listmsg and clearmsg. 
#  listmsg will list all messages the bot has waiting for you, along with
#  a number.  You can then use clearmsg to remove those msgs, by the
#  number given by listmsg.  Alarms will only appear once, but pings will
#  keep going until either cleared or the bot gets a certain number of
#  responses that the user it's tried to msg doesn't exist.  This means
#  that if you set a message to ping you every half-hour, it won't stop
#  doing so if you happen to drop offline for one ping, but if you sign
#  off for the night without removing the ping, it will likely have been
#  cleared for you by the next day.  Signons will only disappear if you
#  clear them.


my $ub_cambot  = new Calvin::Bots::Cambot;
$ub_cambot->logdir('\logs\cambot');
$ub_cambot->perm_channels(2);
$ub_cambot->autojoin(1, 'The MST Place');
$ub_cambot->autojoin(2, 'Taervac\'s Bar and Grill');
$ub_cambot->add_time(1);

# Logdir is the root of where logs are kept.  Set it to where you want
#  them.  They'll be stored in subdirectories of YYYY-MM.  So there
#  you'd have "/logs/cambot/1998-09/1998-09-01-public.log", for the
#  log of September first, 1998.
#
# perm_channels is a list of channels the bot will never leave.  Comment
#  it out if there are none, or if you have multiple such, do them as
#  "perm_channels(2,3,4)".
#
# autojoin adds a channel to be automatically joined on startup, along
#  with the tag that join needs.  Note above that both /1 and /2 will be
#  automatically joined, but the bot can be dismissed from /1 and not /2.
#
# add_time adds in a timestamp to the start of each line.  This is used
#  for merging logs from two servers if there's a problem and you have to
#  move between them, or for seeking a time to start displaying lines are
#  at the standard log-display script.  You'd probably not want it, so you
#  can set to 0.  We almost never use the merge part, and the other part
#  is pretty much only used by one person, I think.  <wg>
#
# Something that's not in this list but you might want to add is
#  "$ub_cambot->use_numerics(0);"  This controls whether numerics codes
#  are used in the log.  Basically, this is a mode where the Calvin server
#  returns lines with each field clearly delimited for ease of parsing. 
#  If you want to read a log easily without a reading script, you want to
#  add this line; otherwise a line like "<1: Van> Hey, what's up?" will
#  look like "<|c1|E: |nVan|E> |1Hey, what's up?|E" in the log.  Nicer
#  for a script to parse, but not that easy to read without, no.


my $ub_standard = new Calvin::Bots::Standard;
$ub_standard->ping_ok(0);
$ub_standard->say_ok(0);

# This sets up a Standard bot, which contains a few functions that
#  don't fit into anything else, but are useful.  Even if you don't want
#  to use the commands in it, there's still some things it does for a bot
#  automatically that you'd want, so it's best to include it.
#
# All of the commands it gives are set to on by default, and you turn
#  them off by setting the <command>_ok(0) like above.
#
# ping_ok adds in a ping command that can be used for checking to see
#  if the bot is lagging.  Message it ping, it returns Pong.  You want to
#  set it off if you're using Nagbot, since it has a command of the same
#  name that I've set to work the same if you give it no arguments.
#
# time_ok controls the "time" command.  Send the bot "@msg ub time" and
#  it'll send you the current time as it knows it, in the same format as
#  the server's @time command.
#
# renick_ok controls "renick" command.  If someone's connected under
#  the default nick the bot tries to use, it adds a number to the nick to
#  connect.  As an example, if it tries to nick itself ub and someone else
#  is nicked so, it will nick itself as ub1.  Renick has the bot try to
#  change it's nick to the original tried nick again, in case the person
#  who took the nick is gone.
#
# say_ok controls "say", which is a complete joke command that lets you
#  puppet says through the bot.  "@msg ub say 1 Hi!" makes the bot say
#  "Hi!" on /1.  You probably want to disable this -- it's easy to abuse.


my $fb_cambot = new Calvin::Bots::Cambot;
$fb_cambot->logdir('\logs\futurebot');
$fb_cambot->basename('fkids');
$fb_cambot->perm_channels(31);
$fb_cambot->autojoin(31, 'The Base');
$fb_cambot->add_time(1);

my $fb_standard = new Calvin::Bots::Standard;
$fb_standard->say_ok(0);

# Same stuff here, except this sets up two more bots, one a Standard
#  and one a Cambot.  See below for more info there.


@connect = (
            [ 'windlord.stanford.edu', 9090, 'Cammy', $ub_standard,
               $ub_descbot, $ub_cambot, $ub_nagbot ],
            [ 'windlord.stanford.edu', 9090, 'Spy-Eye', $fb_standard,
               $fb_cambot ],
           );

# Here's where we define the connections and hook the bots to them. The
#  format is "[ '<host>', <port>, '<nick>', <bot1>, <bot2>, ... ]".  Any
#  number of bots can be hooked to a connect, though hooking two bots of
#  the same type to a connect is a bad thing.  You'd end up with problems
#  when you send it a command from the doubled bot.
#
# In this case, two connections are defined to the same server.  One
#  connect will be nicked Cammy, and have the Standard, Descbot, Cambot,
#  and Nagbot connects defined in the the variables hooked there.  The
#  second bot will be named Spy-Eye, and only have Standard and Cambot
#  bots hooked to it.
#
# One more worry here is that you can make multiple connects to one
#  server, but not to several servers.  If you want to do that, you'll
#  need multiple scripts.   Otherwise if one server isn't up, it can block
#  all connections.  This should be fixed sometime, but it's something I
#  have no idea how to do, and Eag's rather busy. :)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages