#!/path/to/eggdrop
#
# This is a sample configuration file for your bot.  You will definitely
# want to edit this, to set up your bot.  Right now it creates a bot called
# "LamestBot" which sits on channel #lamest.
#
# The most vital things are listed at the top of this file, with the more
# complicated or obscure options further down.  So you don't necessarily
# need to edit this whole thing, although it might be a good idea if you
# want your bot to be hard to spot, and to work exactly the way you want
# it to.
#


#####  GENERAL STUFF  #####


# the stuff people will see in /whois
set nick "Lamestbot"
set altnick "Llamabot"      ;# if the nick you want is in use
set username "lamest"       ;# does not work if you have ident running!
set realname "/msg LamestBot hello"

# who's running this bot?
set admin "Lamer <email: lamer@lame.connected.com>"

# response for CTCP VERSION  (change this to make your bot hard to find)
set ctcp-version "ircII 2.6 SunOS 4.1.3 :ircii 2.6: almost there..."

# response for CTCP FINGER  (change this to make your bot hard to find)
set ctcp-finger "Lamestbot (root@home), idle 0 seconds"

# response for CTCP USERINFO  (change this to make your bot hard to find)
set ctcp-userinfo "<None Supplied>"

# [0/1] let users introduce themselves to the bot via 'hello'?
set learn-users 1

# many irc ops check for bots that respond to 'hello'.  you can change this
# to another word by uncommenting the following two lines, and changing
# "myword" to the word you want to use instead of 'hello' (it must be a
# single word)
# novice users are not expected to understand what these two lines do; they
# are just here to help you.  for more information on 'bind', check the file
# 'tcl-commands.doc'
#unbind msg - hello *hello
#bind msg - myword *hello

# the server list -- the bot will start at the first server listed, and cycle
# through them whenever it's disconnected
# (please note: these examples are not real servers)
set servers {
  newyork.happyirc.net:6667
  sanjose.happyirc.net:6667
  seattle.happyirc.net:6667
  frankfurt-am.happyirc.net:6667
  peking.happyirc.net:6660
}

# [0/1] even if all the servers are down, cycle forever and keep trying to
# connect?
set never-give-up 0

# how many seconds to wait for a response when connecting to a server
# before giving up and moving on?
set server-timeout 15

# if the number of servers on the net gets below this number, it will
# jump to a new server (ie, it will assume it's on the losing end of a
# netsplit) -- set to 0 to turn off
# [most irc networks use TS now, so it's to your advantage to turn this off]
set servlimit 0

# [0/1] if the bot's nickname is changed (for example, if the intended
# nickname is already in use) keep trying to get the nick back?
set keep-nick 1

# What timezone is you bot in?  This is simply used for scripting purposes.
set timezone "EST"


#####  CHANNEL PROTECTION  #####


# do this for each channel you wish to sit on:
# NOTE: for some reason Tcl won't let you put comments inside { } -- so
#   don't try it, cos it'll mess up your channel definition

channel add #lamest {
  chanmode "+nt-likm"
  idle-kick 15
  need-op { putserv "PRIVMSG #lamest :op me please!" }
  need-invite { putserv "PRIVMSG #lamest :let me in!" }
}

# the things inside the { } are CHANNEL OPTIONS -- they can be set within
# the "channel add" command, or by using a "channel set" command as in the
# examples below.  they list all the options you can set for a channel.

# chanmode
#   what modes will be enforced?  '+' modes will always be kept on, '-' modes
#   will always be kept off
# idle-kick
#   kick channel members after how many minutes of being idle?
#   (leave out to disable, or set to 0)
# need-op
#   script to run (if any) when the bot needs to be op'd on this channel
# need-invite
#   script to run (if any) when the bot gets locked out of this channel
#   (like if the channel is +i, or the bot is banned, etc)

# note that "need-op" and "need-invite" are limited to 120 characters,
# so if you want to so something more complicated, just write a proc,
# and make "need-op" or "need-invite" call your proc.

# there are also a lot of options that can be turned on or off for each
# channel.  to turn an option on, put a + in front of it.  to turn it off,
# put a - in front of it.  ie, to have auto-op, put:
#   +autoop
# to turn it off, put:
#   -autoop

#   clear all channel bans when the bot joins?  (ie, force the channel's
#   ban list to match the bot's internal list)
channel set #lamest -clearbans

#   when a ban is set, kick people who are on the channel and match the
#   new ban?  (ie, they were on the channel before the ban)
channel set #lamest +enforcebans

#   only activate bans on the channel when necessary?  (this keeps the
#   channel's ban list from getting excessively long.  the bot still remem-
#   bers every ban, but it only activates a ban on the channel when it sees
#   someone join who matches that ban.)
channel set #lamest +dynamicbans

#   allow bans to be made by users directly?  (if turned off, the bot will
#   require all bans to be made through the bot's console)
channel set #lamest +userbans

#   op users with the +o (op) flag as soon as they join the channel?
#   (hint: this is a BAD IDEA)
channel set #lamest +autoop

#   only let users with +o (op) flag be channel ops?
channel set #lamest -bitch

#   say a user's info line when she joins the channel?
channel set #lamest +greet

#   re-op a user with the +o (op) flag if they get deopped?
channel set #lamest +protectops

#   log the channel status line every 5 minutes? (some people think
#   it's annoying; i think it's neat)
channel set #lamest +statuslog

#   de-op someone that enters the channel with server ops (ie, netsplit
#   ops) when they didn't have them before the split?
channel set #lamest +stopnethack

#   remember people who harm the bot, and punish them later?
#   users with +f (friend) flag are exempt from revenge
channel set #lamest +revenge

#   prevent this channel from being listed on the botnet?  (for paranoid
#   people)
channel set #lamest -secret


# here's a shorter example:
channel add #botcentral {
  chanmode "+mntisl 1"
  idle-kick 1
}
channel set #botcentral +bitch +clearbans +enforcebans -greet +revenge


# [0/1] allow users to store an info line?
set use-info 1

# [0/1] if this is set, a leading '~' on user@hosts WON'T be stripped off
set strict-host 0


#####  LOG FILES  #####


# you can have up to 5 log files.  at midnight every day, the old log files
# are renamed and a new log file begins.  by default, the old one is called
# "(logfilename).yesterday", and any logfiles before yesterday are erased.

# events are logged by certain categories -- this way you can specify
# exactly what kind of events you want sent to various logfiles.  the
# events are:
#   m  private msgs/ctcps to the bot
#   k  kicks, bans, mode changes on the channel
#   j  joins, parts, netsplits on the channel
#   p  public chatter on the channel
#   s  server connects/disconnects/notices
#   b  information about bot linking and userfile sharing
#   c  commands people use (via msg or dcc)
#   x  file transfers and file-area commands
#   r  (if defined in eggdrop.h) EVERYTHING sent to the bot by the server
#   o  other: misc info, errors -- IMPORTANT STUFF
#   w  wallops: msgs between IRCops (be sure to set the bot +w in init-server)

# each logfile also belongs to a certain channel.  events of type 'k', 'j',
# and 'p' are logged to whatever channel they happened on.  most other
# events are currently logged to every channel.  you can make a logfile
# belong to all channels by assigning it to channel "*".  there are also
# five user-defined levels ('1'..'5') which are used by Tcl scripts.

# in 'eggdrop.log' put msgs, commands, and errors from any channel:
logfile mkco * "eggdrop.log"
# in 'lame.log' put joins, parts, and mode changes from #lame:
logfile jk #lame "lame.log"

# [0/1] timestamp entries in the log file? (generally a good idea)
set log-time 1

# [0/1] keep logfiles for more than 48 hours -- instead of being called
# "(logfilename).yesterday", the log files are named by the current date,
# and kept around forever (eventually your directory might get full, so
# be careful with this!)
set keep-all-logs 0

# once a day the logfiles are switched out and started fresh --
# this specifies when that should happen (in military time)
# [note that a leading 0 will make Tcl think this is an octal value,
# something you probably don't want.]
set switch-logfiles-at 300

# this is the default console mode -- what masters will see automatically
# when they dcc chat with the bot (masters can alter their own console
# flags once they connect, though) -- it uses the same event flags as
# the log files
# (note that the console channel is automatically set to your "primary"
# channel -- the one you defined first in this file.  masters can change
# their console channel with the '.console' command, however.)
set console "mkcobxs"


#####  FILES AND DIRECTORIES  #####


# the userfile: where user records are stored
set userfile "LamestBot.user"

# the notefile: where private notes between users are stored
set notefile "LamestBot.notes"

# helpdir: where the help files can be found (and there are plenty)
set helpdir "help/"

# textdir: where miscellaneous info files are
set textdir "text/"

# tempdir: a good place to temporarily store files (ie: /tmp)
set tempdir "/tmp"

# the MOTD is displayed when people dcc chat to the bot
set motd "motd"


#####  FILE SYSTEM  #####


# the file transfer area works via dcc chat.  you can turn the file system
# off by not defining the 'dcc-path' below.

# this is the 'root' directory for the file system (set it to "" if you
# don't want a file system)
set dcc-path "/home/mydir/dcc"

# if you want to allow uploads, set this to the directory uploads should be
# put into
set dcc-incoming "/home/mydir/dcc/incoming"

# [0/1] alternately, you can set this, and uploads will go to the current
# directory that a user is in
set upload-to-cd 0

# eggdrop creates a '.filedb' file in each subdirectory of your dcc area,
# to keep track of its own file system info -- if you can't do that (like
# if the dcc path isn't owned by yours) or you just don't want it to do
# that, specify a path here where you'd like all the database files to
# be stored instead (otherwise, just leave it blank)
set filedb-path ""

# set maximum number of people that can be in the file area at once
# (0 to make it effectively infinite)
set dcc-users 20

# set maximum number of simultaneous downloads to allow for each user
set dcc-limit 3

# set the block size for dcc transfers (ircII uses 512 bytes, but admits
# that may be too small)
set dcc-block 1024

# maximum allowable file size that will be received, in K
# (default is 1024K = 1M)
set dcc-maxsize 1024

# [0/1] users with +o (op) flag will still need to have the +x (file system)
# flag to have access to the file system?
set require-x 0

# [0/1] copy files into the /tmp directory before sending them?  this is
# useful on most systems for file stability.  (someone could move a file
# around while it's being downloaded, and mess up the transfer.)  but if
# your directories are NFS mounted, it's a pain, and you'll want to set
# this to 0.
set copy-to-tmp 1


#####  END OF IMPORTANT STUFF  #####


# You don't need to change anything below here if you don't want to.  These
# are more exotic or specialized settings that most people may not need to
# change.  To make sure you've at least SKIMMED the config file up to this
# point, the following line was added.  REMOVE THIS LINE:
die "Please edit your config file."

# You MUST remove that line for this config file to work.  This has been
# added to prevent you from starting up a bot that is not fully configured.
# Bots that have not been fully configured may join the wrong IRC network,
# the wrong channels, or generally do things that you do not want.  Please
# make sure that you have double-checked the settings you want.


#####  BOTNET  #####


# you probably shouldn't deal with this until reading 'botnet.doc' or
# something.  you need to know what you're doing.

# what telnet port should this bot answer?
# NOTE: if you are running more than one bot on the same machine, you will
#   want to space the telnet ports at LEAST 5 apart... 10 is even better
set telnet 3333

# [0/1] only let bots connect via the telnet port?  (if not, then users
# can telnet in to enter the party line just like a DCC chat)
set telnet-bots-only 0

# [0/1] share user data with other bots on the channel?
set share-users 0

# [0/1] share user greets with other bots on the channel if shareing user data?
set share-greet 0

# [0/1] allow other bots userfiles to overwrite yours?
set passive 0

# [0/1] users with the +o (op) flag will still need the +p (party line) flag
# to join the dcc chat party line?
set require-p 0

# [0/1] allow people to telnet in, type 'NEW', and become a new user?
set open-telnets 0

# how long (in seconds) should i wait for a connect (dcc chat, telnet,
# relay, etc) before it times out?
set connect-timeout 15

# set which mode you want here: (requires console.tcl loaded)
# (0 = use '.store')  (1 = automatic save when you leave)
set console-autosave 0

# set which channel you want to force users in if they don't have one
# stored:  (requires console.tcl loaded)  (0 = party line)
set force-channel 0

# set this if you want to advertise info lines when users join then
# party line.  (requires console.tcl loaded)  (0 = no)  (1 = yes)
set info-party 0


#####  MORE ADVANCED STUFF  #####


# are you behind a firewall?  uncomment this and specify your socks host
#set firewall "proxy:178"
# or, for a Sun "telnet passthru" firewall, set it this way
# (does anyone besides Sun use this?)
#set firewall "!sun-barr.ebay:3666"

# if you're using virtual hosting (your machine has more than 1 IP), you
# may want to specify the particular IP to bind to.  you can specify
# either by hostname or by IP.  you may also want to set the hostname
# here if eggdrop has trouble detecting it when it starts up.  (it will
# let you know if it has trouble -- trust me.)
#set my-hostname "virtual.host.com"
#set my-ip "99.99.0.0"

# if you want all dcc file transfers to use 1 particular listening port
# (this pretty much limits you to one concurrent file transfer at a time),
# either because you're behind a firewall, or for other security reasons,
# set it here
#set reserved-port 9076

# script to run (if any) when first connecting to a server
set init-server { putserv "MODE $botnick +i-ws" }

# NOTE: 'gain-ops' is now outdated and unused!

# how many msgs in how many seconds from the same host constitutes a flood?
set flood-msg 5:60
# how many public msgs in how many seconds?
set flood-chan 10:60
# how many joins/nick changes in how many seconds?
set flood-join 5:60
# how many CTCPs in how many seconds?
set flood-ctcp 3:60

# temporary bans will last how many minutes?
set ban-time 60
# temporary ignores will last how many minutes?
set ignore-time 10

# normally the user file is saved once an hour, on the hour
# you can change that here (for example, "15" means to save every
# hour at 15 minutes past the hour)
set save-users-at 00

# normally users are notified once and hour, on the hour, if the have any notes
# on the bot.  You can change that here (for example, "15" means to save
# every hour at 15 minutes past the hour)
set notify-users-at 00

# send a note to anybody when I learn new users?
set notify-newusers "HQ"

# if compiled with owner, the following user(s) will ALWAYS have the
# owner (+n) flag
set owner "MrLame, MrsLame"

# what flags should new users get as a default?
set default-flags "px"

# 'ntalk' and the like are no longer directly supported.  this will save
# ntalk users from embarrassment:
bind filt - "///*" no_ntalk
proc no_ntalk {idx text} {
  putdcc $idx "(ntalk is no longer supported, sorry)"
  return 1
}

# load that toolkit of useful scripts (some script packages may depend
#   on this being loaded)
source scripts/toolkit.tcl
source scripts/console.tcl
