extra commands added to Tcl by eggdrop:

if you have ideas for other helpful commands, email:
  robey@annwfn.indstate.edu


*** OUTPUT COMMANDS ***

putserv <text>
  sends text straight to the server, like 'dump'
  returns: nothing

puthelp <text>
  sends text straight to the helpbot's server -- if there is no helpbot, this
  command will act the same as 'putserv'
  returns: nothing

puterror <text>
  sends text to the log, marked as 'channel' and 'misc' (like a typical error)
  returns: nothing

putlog <text>
  sends text to the log, marked as 'misc'
  returns: nothing

putdcc <dccIdent> <text>
  sends text to the dcc user indicated
  returns: nothing

dccsend <filename> <ircnick>
  attempts to start a dcc file transfer to the given nick; the filename must
    be specified either by full pathname or in relation to the bot's startup
    directory
  returns: "0" on success, "1" if the dcc table is full (too many connections),
    "2" if it can't open a socket for the transfer, and "3" if the filename
    doesn't exist

*** USER RECORD MANIPULATION COMMANDS ***

countusers
  returns: number of users in the bot's database

validuser <handle>
  returns: "1" if a user by that name exists; '0' otherwise

finduser <nick!user@host>
  finds the user record which most closely matches the given user@host
  returns: the handle found, or "*" if none

passwdOk <handle> <pass>
  checks the password given against the user's password -- if the user has
  not set a password, will always return "1"
  returns: "1" if password matches for that user; "0" if not

chattr <handle> [changes]
  changes the attributes for a user record, if you include any -- changes
  are of the form "+f", "-o", "+dk", "-o+d", etc
  returns: new flags for the user (if you made no changes, returns current
    flags) -- returns "*" if that user does not exist

matchattr <handle> <flags>
  returns: "1" if the specified user has ALL the flags requested

adduser <handle> <hostmask>
  creates a new user entry with the handle and hostmask given (with no pass-
  word, and the default flags)
  returns: "1" if successful, "0" if it already existed

addhost <handle> <hostmask>
  adds a hostmask to the hostmask list for a user
  returns: nothing

delhost <handle> <hostmask>
  deletes a hostmask from a user's hostmask list
  returns: "1" on success, "0" if that hostmask wasn't in the list or the
    user does not exist

getinfo <handle>
  returns: info line for that user ("" if none exists)

getdccdir <handle>
  returns: dcc directory for that user ("" if none exists)

getcomment <handle>
  returns: comment for that user ("" if none exists)

getemail <handle>
  returns: email address for that user ("" if none exists)

getlaston <handle>
  returns: last time that user was on the channel (in unixtime format)

setinfo <handle> <info>
  sets the info line for a user
  returns: nothing

setdccdir <handle> <dccdir>
  sets the dcc directory for a user
  returns: nothing

setcomment <handle> <comment>
  sets the comment for a user
  returns: nothing

setemail <handle> <email>
  sets the email address for a user
  returns: nothing

addban <ban> [comment]
  adds a ban to the enforced ban list temporarily; it will expire in one
  hour (or whenever you have bans set to expire)
  returns: nothing

addpermban <ban> [comment]
  adds a ban to the enforced ban list permanently
  returns: nothing

delban <ban>
  removes a ban from the enforced ban list
  returns: "1" if successful, "0" otherwise

isban <ban>
  returns: "1" if that ban is in the enforced ban list, "0" otherwise

matchban <nick!user@host>
  returns: "1" if that user address matches a ban in the enforced ban list,
    "0" otherwise


*** CHANNEL COMMANDS ***

botisop
  returns: "1" if the bot is a channel op; "0" otherwise

isop <nickname>
  returns: "1" if someone by that nickname is on the channel and has chop;
    "0" otherwise

onchan <nickname>
  returns: "1" if someone by that nickname is on the bot's channel; "0"
    otherwise

ischanban <ban>
  returns: "1" if that is a ban on the bot's channel

getchanhost <nickname>
  returns: user@host of that person if they are on the channel; {} otherwise

onchanSplit <nick>
  returns: "1" if that nick is split from the channel; "0" otherwise

chanlist
  returns: list of nicknames currently on the bot's channel


*** MISCELLANEOUS COMMANDS ***

bind <type> <attr(s)> <command-name> <proc-name>
  adds a new keyword command to the bot -- <type> must be "msg", "dcc", "fil",
  or "pub" -- <attr(s)> are the flags that a user must have to use this command
  -- <command-name> is the keyword for the command (like 'ident' or 'note') --
  <proc-name> is the name of the Tcl procedure to call for this command (see
  below for the format of the procedure call)
  returns: name of the command added

logfile [[modes] filename]
  creates a new logfile, which will log the modes given -- or, if no logfile
  is specified, just returns a list of logfiles
  returns: filename of logfile created, or (if no logfile is specified) a
    list of logfiles like: "{mco eggdrop.log} {c commands.log}"

maskhost <nick!user@host>
  returns: hostmask for the string given ("n!u@1.2.3.4" -> "*!u@1.2.3.*",
    "n!u@lame.com" -> "*!u@lame.com", "n!u@a.b.edu" -> "*!u@*.b.edu")

dccSimul <dcc-handle> <command...>
  simulates a dcc command typed in by the dcc user specified
  returns: nothing

timer <minutes> <tcl-command>
  executes the tcl command after a certain number of minutes have passed
  returns: nothing

timers
  returns: list of active timers; each entry in the list contains the number
    of minutes left till activation, and the command that will be executed

unixtime
  returns: a long integer which is the current time according to unix

time
  returns: the current time in 24-hour format (ie "14:15")

date
  returns: the current date in standard format (ie "21 Dec 1994")

ctime <unixtime>
  returns: a string of the date/time represented by the unix time given
    (ie "Fri Aug  3 11:34:55 1973")

myip
  returns: a long number representing the bot's IP address, as it might
    appear in (for example) a DCC request


GLOBAL VARIABLES:
(All configfile variables are global, too.)

channel
  contains the name of the channel the bot is currently on, or {} if none

botnick
  current nickname the bot is using, ie 'Valis' or 'Valis0', etc

botname
  current nick!user@host that the server sees, ie 'Valis!valis@crappy.com'

server
  current server the bot is using, ie 'irc.math.ufl.edu:6667'



COMMAND EXTENSION:

format of a procedure call for --
  msg: proc-name <nick> <user@host> <handle> <args...>
  dcc: proc-name <handle> <dcc-handle> <args...>
    (dcc-handle is always a number, and may not be valid after this proc)
  fil: proc-name <handle> <dcc-handle> <args...>
  pub: proc-name <nick> <user@host> <handle> <args...>
  msgm: proc-name <nick> <user@host> <handle> <args...>
  pubm: proc-name <nick> <user@host> <handle> <args...>
[the following are not supported yet:]
  join: proc-name <nick> <user@host> <handle>
  part: proc-name <nick> <user@host> <handle>
  sign: proc-name <nick> <user@host> <handle>
  topc: proc-name <nick> <user@host> <handle> <topic..>
  mode: proc-name <nick> <user@host> <handle> <'+' or '-'><letter> [args]
  ctcp: proc-name <nick> <user@host> <handle> <dest> <keyword> [args...]
  kick: proc-name <nick> <user@host> <handle> <dest> <reason...>

if a procedure returns non-zero, it is logged as a successful command:
  msg: (nick!user@host) !handle! command
  dcc: #handle# command
  fil: #handle# files: command
  pub: <<nick>> !handle! command
