#! /path/to/executable/eggdrop
# ^- This should contain a fully qualified path to your Eggdrop executable.
#
# This is a sample Eggdrop configuration file which includes all possible
# settings that can be used to configure your bot.
#
# The pound signs (#) that you see at the beginning of some lines mean that
# the remainder of that line is a comment, or just for your information. By
# adding or deleting pound signs, you can comment or uncomment a setting,
# respectively.
#
# Arguments for a command or setting may be inclosed in <>'s or []'s in the
# example/description. Arguments in <>'s are required, while [] means optional.
#
# More detailed descriptions of all these settings can be found in
# doc/settings/.



##### BASIC SETTINGS #####

# This setting defines the username the bot uses on IRC. This setting has no
# effect if an ident daemon is running on your bot's machine. See also ident
# module.
set username "lamest"

# This setting defines which contact person should be shown in .status,
# /msg help, and other places. You really should include this information.
set admin "Lamer <email: lamer@lamest.lame.org>"

# This setting is used only for info to share with others on your botnet.
# Set this to the IRC network your bot is connected to.
set network "I.didn't.edit.my.config.file.net"

# This setting defines which timezone is your bot in. It's used for internal
# routines as well as for logfile timestamping and scripting purposes.
# The timezone string specifies the name of the timezone and must be three
# or more alphabetic characters. For example, Central European Time(UTC+1)
# should be "CET".
set timezone "EST"

# The offset setting specifies the time value to be added to the local
# time to get Coordinated Universal Time (UTC aka GMT). The offset is
# positive if the local timezone is west of the Prime Meridian and
# negative if it is east. The value (in hours) must be between -23 and
# 23. For example, if the timezone is UTC+1, the offset is -1.
set offset "5"

# If you don't want to use the timezone setting for scripting purposes only,
# but instead everywhere possible, un-comment the following line.
#set env(TZ) "$timezone$offset"

############################################################################
## Network settings overview
## With the addition of IPv6 and the associated config changes, here are some
## BASIC common networking scenarios, along with the appropriate settings
## needed:
##
## SHELL PROVIDER (MULTIPLE IPs/VHOSTS)
## * set vhost4 or vhost6 to the IP/vhost you want to use
## * do not set nat-ip
## 
## HOME COMPUTER/VPS, DIRECT INTERNET CONNECTION (SINGLE IP, NO NAT)
## * do not set vhost4/vhost6
## * do not set nat-ip
##
## HOME COMPUTER, BEHIND A NAT
## * do not set vhost4/vhost6
## * set nat-ip to your external IP
##
## And as a general rule, if you're having issues with Eggdrop responding to
## a CTCP chat request, try setting vhost4/6 to your external IP.
##
## Below is a detailed description of each setting, please read them to
## learn more about their function.
############################################################################

# 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. Note that this is not used for listening. Use the
# 'listen' command to specify the listening address. If you are behind a
# NAT, you will likely want to leave this commented out as Eggdrop should
# determine the correct IP on its own.
#set vhost4 "virtual.host.com"
#set vhost4 "99.99.0.0"

# IPv6 vhost to bind to for outgoing IPv6 connections. You can set it
# to any valid IPv6 address or hostname, resolving to an IPv6 address.
# Note that this is not used for listening. Use the 'listen' command
# to specify the listening address.
#set vhost6 "my.ipv6.host.com"
#set vhost6 "2001:db8::c001:b07"

# Prefer IPv6 over IPv4 for connections and dns resolution? Set to 1 to try 
# IPv6 first, otherwise set to 0 for IPv4. If the preferred protocol family
# is not supported, the other one will be tried.
set prefer-ipv6 0

# If you want to have your Eggdrop messages displayed in a language other
# than English, change this setting to match your preference. An alternative
# would be to set the environment variable EGG_LANG to that value.
#
# Languages included with Eggdrop: Danish, English, French, Finnish, German,
# Italian, Portuguese.
#addlang "english"


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

# Eggdrop is capable of logging various things, from channel chatter to
# commands people use on the bot and file transfers. Logfiles are normally
# kept for 24 hours. Afterwards, they will be renamed to "(logfile).yesterday".
# After 48 hours, they will be overwritten by the logfile of the next day.
#
# Events are logged by certain categories. This way, you can specify
# exactly what kind of events you want sent to various logfiles.
#
# Logfile flags:
#   b - information about bot linking and userfile sharing
#   c - commands
#   d - misc debug information
#   g - raw outgoing share traffic
#   h - raw incoming share traffic
#   j - joins, parts, quits, topic changes, and netsplits on the channel
#   k - kicks, bans, and mode changes on the channel
#   l - linked bot messages
#   m - private msgs, notices and ctcps to the bot
#   o - misc info, errors, etc (IMPORTANT STUFF)
#   p - public text on the channel
#   r - raw incoming server traffic
#   s - server connects, disconnects, and notices
#   t - raw incoming botnet traffic
#   u - raw outgoing botnet traffic
#   v - raw outgoing server traffic
#   w - wallops (make sure the bot sets +w in init-server)
#   x - file transfers and file-area commands
#
# Note that modes d, h, r, t, and v can fill disk quotas quickly. There are
# also eight user-defined levels (1-8) which can be used by Tcl scripts.
#
# Each logfile 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 "*".

#  This is the maximum number of concurrent logfiles that can be opened
#  for writing at one time. At most, this value should be the maximum
#  number of channels you expect to create log files for. There is no
#  value for 'infinity'; very few cases should ever require more than 20.
#  A decrease to this value while running will require a restart (not rehash)
#  of the bot. However, don't decrease it below 5.
set max-logs 20

# This is the maximum size of your logfiles. Set it to 0 to disable.
# This value is in kilobytes, so '550' would mean cycle logs when it
# reaches the size of 550 kilobytes. Note that this only works if you
# have keep-all-logs 0 (OFF).
set max-logsize 0

# This setting allows you the logging of raw incoming server traffic via
# console/log flag 'r', raw outgoing server traffic via console/log mode 'v',
# raw incoming botnet traffic via console/log mode 't', raw outgoing botnet
# traffic via console/log mode 'u', raw outgoing share traffic via
# console/log mode 'g', and raw incoming share traffic via console/log
# mode 'h'. These flags can create a large security hole, allowing people to
# see user passwords. This is now restricted to +n users only. Please choose
# your owners with care.
set raw-log 0

# This creates a logfile named eggdrop.log that captures items logged at the
# m, c, and o log levels (private msgs/ctcps, commands/errors, and misc 
# info) from any channel.
logfile mco * "logs/eggdrop.log"

# This creates a logfile named lamest.log that captures items logged at the
# j, p, and k log levels (joins/parts/quits/netsplits, public chat,
# kicks/bans/mode changes) on the channel #lamest.
#logfile jpk #lamest "logs/lamest.log"

# Use this feature to timestamp entries in the log file.
set log-time 1

# Set the following to the timestamp for the logfile entries. Popular times
# might be "[%H:%M]" (hour, min), or "[%H:%M:%S]" (hour, min, sec).
# Read `man strftime' for more formatting options. Keep it below 32 chars.
set timestamp-format {[%H:%M:%S]}

# If you want to keep your logfiles forever, turn this setting on. All
# logfiles will get suffix ".[day, 2 digits][month, 3 letters][year, 4 digits]".
# Note that your quota/hard-disk might be filled by this, so check your
# logfiles often and download them.
set keep-all-logs 0

# If keep-all-logs is 1, this setting will define the suffix of the logfiles.
# The default will result in a suffix like "04May2000". "%Y%m%d" will produce
# the often used yyyymmdd format. Read the strftime manpages for more options.
set logfile-suffix ".%d%b%Y"

# You can specify when Eggdrop should switch logfiles and start fresh. You
# must use military time for this setting. 300 is the default, and describes
# 03:00 (AM).
set switch-logfiles-at 300

# "Writing user file..." and "Writing channel file..." messages won't be logged
# anymore if this option is enabled. If you set it to 2, the "Backing up user
# file..." and "Backing up channel file..." messages will also not be logged.
# In addition to this, you can disable the "Switching logfiles..." and the new
# date message at midnight, by setting this to 3.
set quiet-save 0


##### CONSOLE #####

# This is the default console mode. It uses the same event flags as the log
# files do. The console channel is automatically set to your "primary" channel,
# which is set in the modules section of the config file. Masters can change
# their console channel and modes with the '.console' command.

set console "mkcoblxs"


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

# Specify here the filename your userfile should be saved as.
set userfile "LamestBot.user"

# Specify here the filename Eggdrop will save its pid to. If no pidfile is
# specified, pid.(botnet-nick) will be used.
#set pidfile "pid.LamestBot"

# Specify here where Eggdrop should look for help files. Don't modify this
# setting unless you know what you're doing!
set help-path "help/"

# Specify here where Eggdrop should look for text files. This is used for
# certain Tcl and DCC commands.
set text-path "text/"

# The MOTD (Message Of The day) is displayed when people dcc chat or telnet
# to the bot. Look at doc/TEXT-SUBSTITUTIONS for options.
set motd "text/motd"

# This banner will be displayed on telnet connections. Look at
# doc/TEXT-SUBSTITUTIONS for options.
set telnet-banner "text/banner"

# This specifies what permissions the user, channel, and notes files should
# be set to. The octal values are the same as for the chmod system command.
#
# To remind you:
#
#          u  g  o           u  g  o           u  g  o
#    0600  rw-------   0400  r--------   0200  -w-------    u - user
#    0660  rw-rw----   0440  r--r-----   0220  -w--w----    g - group
#    0666  rw-rw-rw-   0444  r--r--r--   0222  -w--w--w-    o - others
#
# Note that the default 0600 is the most secure one and should only be changed
# if you need your files for shell scripting or other external applications.
set userfile-perm 0600


##### BOTNET/DCC/TELNET #####

# Settings in this section should be unimportant for you until you deal
# with botnets (multiple Eggdrops connected together to maximize efficiency).
# You should read doc/BOTNET before modifying these settings.

# If you want to use a different nickname on the botnet than you use on
# IRC (i.e. if you're on an un-trusted botnet), un-comment the next line
# and set it to the nick you would like to use.
#set botnet-nick "LlamaBot"

# This opens a telnet port by which you and other bots can interact with the
# Eggdrop by telneting in. There are more options for the listen command in
# doc/tcl-commands.doc. Note that if you are running more than one bot on the
# same machine, you will want to space the telnet ports at LEAST 5 apart,
# although 10 is even better.
#
# Valid ports are typically anything between 1025 and 65535 assuming the
# port is not already in use. If you would like the bot to listen for users
# and bots in separate ports, use the following format:
#
#   listen 3333 bots
#   listen 4444 users
#
# If you wish to use only one port, use this format:
#
#   listen 3333 all
#
# You can setup a SSL port by prepending a plus sign to it:
#
#   listen +5555 all
#
# To bind the listening port to a specific IP instead of all available, insert
# a valid IP assigned to the host Eggdrop is running on in front of the port
# (this replaces the listen-addr setting used prior to Eggdrop v1.9)
#
#   listen 1.2.3.4 3333 all
#
# You need to un-comment this line and change the port number in order to open
# the listen port. You should not keep this set to 3333.
#listen 3333 all

# This setting defines whether or not people can boot users on the Eggdrop
# from other bots in your botnet.
# Options are:
#   0 = allow *no* outside boots
#   1 = allow boots from sharebots
#   2 = allow any boots
set remote-boots 2

# This setting allows remote bots to tell your Eggdrop to unlink from
# share bots.
set share-unlinks 1

# This setting will drop telnet connections not matching a known host.
set protect-telnet 0

# This setting will make the bot ignore DCC chat requests which appear to
# have bogus information on the grounds that the user may have been trying
# to make the bot connect to somewhere that will get it into trouble, or
# that the user has a broken client, in which case the connect wouldn't work
# anyway.
set dcc-sanitycheck 0

# This setting defines the time in seconds the bot should wait for ident reply
# before the lookup fails. The default ident on timeout is 'telnet'. A value of
# 0 disables the ident lookup entirely.
set ident-timeout 5

# Define here whether or not a +o user still needs the +p flag to dcc the bot.
set require-p 1

# If you want people allow to telnet in and type 'NEW' to become a new user,
# set this to 1. This is similar to the 'hello' msg command. The protect-telnet
# setting must be set to 0 to use this.
set open-telnets 0

# If you don't want Eggdrop to identify itself as an eggdrop on a telnet
# connection, set this setting to 1. Eggdrop will display a logon prompt with
# only the contents of the stealth-prompt setting.
set stealth-telnets 0

# If stealth-telnets is 1, the string in this setting will replace the
# traditional Eggdrop banner. Two common choices are listed. (The \n's are
# present to maintain backwards compatibility and will be removed in a
# future release)
#set stealth-prompt "login: "
set stealth-prompt "\n\nNickname.\n"

# If you want Eggdrop to display a banner when telneting in, set this setting
# to 1. The telnet banner is set by 'set telnet-banner'.
set use-telnet-banner 0

# This setting defines a time in seconds that the bot should wait before
# a dcc chat, telnet, or relay connection times out.
set connect-timeout 15

# Specify here the number of lines to accept from a user on the partyline
# within 1 second before they are considered to be flooding and therefore
# get booted.
set dcc-flood-thr 3

# Define here how many telnet connection attempts in how many seconds from
# the same host constitute a flood. The correct format is Attempts:Seconds.
set telnet-flood 5:60

# If you want telnet-flood to apply even to +f users, set this setting to 1.
set paranoid-telnet-flood 1

# Set here the amount of seconds before giving up on hostname/address lookup
# (you might want to increase this if you are on a slow network). The default is
# RES_TIMEOUT, which is generally 5, the allowed maximum is RES_MAXRETRANS (see
# <resolv.h>).
#set resolve-timeout 5


##### SSL SETTINGS #####

# Settings in this section take effect when eggdrop is compiled with TLS
# support.
#
# IMPORTANT: The following two settings MUST be uncommented in order to
# use SSL functionality!

# File containing your private key, needed for the SSL certificate
# (see below). You can create one issuing the following command:
#
#   openssl genrsa -out eggdrop.key 4096
#
# It will create a 4096 bit RSA key, strong enough for eggdrop.
# For your convenience, you can type 'make sslcert' after 'make install'
# and you'll get a key and a certificate in your eggdrop directory.
# If you installed to a non-default location, use 'make sslcert DEST=...'
#
# THIS IS REQUIRED if you intend to use this bot as a hub for SSL hubs/
# listen ports, secure file transfer, /ctcp botnick schat, or
# using a certificate to authenticate with NickServ.
#set ssl-privatekey "eggdrop.key"

# Specify the filename where your SSL certificate is located. If you
# don't set this, eggdrop will not be able to act as a server in SSL
# connections, as with most ciphers a certificate and a private key
# are required on the server side. Must be in PEM format.
# If you don't have one, you can create it using the following command:
#
#   openssl req -new -key eggdrop.key -x509 -out eggdrop.crt -days 365
#
# For your convenience, you can type 'make sslcert' after 'make install'
# and you'll get a key and a certificate in your eggdrop directory.
# If you installed to a non-default location, use 'make sslcert DEST=...'
#
# THIS IS REQUIRED if you intend to use this bot as a hub for SSL hubs/
# listen ports, secure file transfer, /ctcp botnick schat, or
# using a certificate to authenticate with NickServ.
#set ssl-certificate "eggdrop.crt"

# Sets the maximum depth for the certificate chain verification that will
# be allowed for ssl. When certificate verification is enabled, any chain
# exceeding this depth will fail verification.
#set ssl-verify-depth 9

# Specify the location at which CA certificates for verification purposes
# are located. These certificates are trusted. If you don't set this,
# certificate verification will not work.
set ssl-capath "/etc/ssl/"
#set ssl-cafile ""

# Specify the list of protocols allowed for use with ssl. The protocol list is
# one or more protocol strings separated by spaces. Available protocols are
# SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3.
# set ssl-protocols "TLSv1 TLSv1.1 TLSv1.2 TLSv1.3" 

# Specify the list of ciphers (in order of preference) allowed for use with
# ssl. The cipher list is one or more cipher strings separated by colons,
# commas or spaces. Unavailable ciphers are silently ignored unless no usable
# cipher could be found. For the list of possible cipher strings and their
# meanings, please refer to the ciphers(1) manual.
# Note: if you set this, the value replaces any ciphers OpenSSL might use by
# default. To include the default ciphers, you can put DEFAULT as a cipher
# string in the list.
# For example:
#
#   set ssl-ciphers "DEFAULT ADH"
#
# This will make eggdrop allow the default OpenSSL selection plus anonymous
# DH ciphers.
#
#   set ssl-ciphers "ALL"
#
# This will make eggdrop allow all ciphers supported by OpenSSL, in a
# reasonable order.
#set ssl-ciphers ""

# Specify the location of a dhparam file. This file is necessary if you are
# using a Diffie-Hellman based key exchange. If you don't know what this is,
# you are probably safe leaving it commented.
# You can create a dhparam file using the following command:
#   openssl dhparam -out dhparam.pem 4096
#set ssl-dhparam "dhparam.pem"

# Enable certificate authorization. Set to 1 to allow users and bots to
# identify automatically by their certificate fingerprints. Setting it
# to 2 to will force fingerprint logins. With a value of 2, users without
# a fingerprint set or with a certificate UID not matching their handle
# won't be allowed to login on SSL enabled telnet ports. Fingerprints
# must be set in advance with the .fprint and .chfinger commands.
# NOTE: this setting has no effect on plain-text ports.
#set ssl-cert-auth 0

# You can control SSL certificate verification using the following variables.
# All of them are flag-based. You can set them by adding together the numbers
# for all exceptions you want to enable. By default certificate verification
# is disabled and all certificates are assumed to be valid. The numbers are
# the following:
#
# Enable certificate verification - 1
# Allow self-signed certificates - 2
# Don't check peer common or alt names - 4
# Allow expired certificates - 8
# Allow certificates which are not valid yet - 16
# Allow revoked certificates - 32
# A value of 0 disables verification.

# Control certificate verification for DCC chats (only /dcc chat botnick)
#set ssl-verify-dcc 0

# Control certificate verification for linking to hubs
#set ssl-verify-bots 0

# Control certificate verification for SSL listening ports. This includes
# leaf bots connecting, users telneting in and /ctcp bot chat.
#set ssl-verify-clients 0


##### MORE ADVANCED SETTINGS #####

# Set this to your socks host if your Eggdrop sits behind a firewall. If
# you use a Sun "telnet passthru" firewall, prefix the host with a '!'.
#set firewall "!sun-barr.ebay:3666"

# If you have a NAT firewall (your box has an IP in one of the following
# ranges: 192.168.0.0-192.168.255.255, 172.16.0.0-172.31.255.255,
# 10.0.0.0-10.255.255.255 and your firewall transparently changes your
# address to a unique address for your box) or you have IP masquerading
# between you and the rest of the world, and /dcc chat, /ctcp chat or
# userfile sharing aren't working, enter your outside IP here. This IP
# is used for transfers and CTCP replies only, and is different than the
# vhost4/6 settings. You likely still need to set them.
#set nat-ip "127.0.0.1"

# If you want all dcc file transfers to use a particular portrange either
# because you're behind a firewall, or for other security reasons, set it
# here.
#set reserved-portrange 2010:2020

# Set the time in minutes that temporary ignores should last.
set ignore-time 15

# Define here what Eggdrop considers 'hourly'. All calls to it, including such
# things as note notifying or userfile saving, are affected by this.
# For example:
#
#   set hourly-updates 15
#
# The bot will save its userfile 15 minutes past every hour.
set hourly-updates 00

# Un-comment the next line and set the list of owners of the bot.
# You NEED to change this setting.
# This is a list of handles -- usernames in the bot.
#set owner "MrLame, MrsLame"

# Who should a note be sent to when new users are learned?
set notify-newusers "$owner"

# Enter the flags that new users added via the 'hello' message command (see
# 'learn-users' description further down) should get by default. See 
# '.help whois' on the partyline for a list of flags and their descriptions.
set default-flags "hp"

# Enter all user-defined fields that should be displayed in a '.whois'.
# This will only be shown if the user has one of these extra fields.
# You might prefer to comment this out and use the userinfo1.0.tcl script
# which provides commands for changing all of these.
set whois-fields "url birthday"

# Uncomment these two lines if you wish to disable the .tcl and .set commands.
# If you select your owners wisely, you should be okay enabling these.
#unbind dcc n tcl *dcc:tcl
#unbind dcc n set *dcc:set

# If you enable this setting, only permanent owners (owner setting) will be
# able to use .tcl, .set and, if loaded, .python. Moreover, if you want only
# let permanent owners use .dump, then set this to 2.
# WARNING: setting this to 0 is a security risk, don't do it unless you trust
# your owners enough to give them shell access to the account the bot is
# running on. 
set must-be-owner 1

# Comment out this line to add the 'simul' partyline command (owners can
# manipulate other people on the party line). Please select owners wisely
# and use this command ethically!
unbind dcc n simul *dcc:simul

# Set here the maximum number of socket connections you will allow. You can
# increase this later, but never decrease it below current usage.
# If you're using Tcl threads, this is a per-thread maximum.
set max-socks 100

# Enable this setting if you want +d & +k users to use commands bound as -|-.
set allow-dk-cmds 1

# If your Eggdrop rejects bots that actually have already disconnected from
# another hub, but the disconnect information has not yet spread over the
# botnet due to lag, use this setting. The bot will wait dupwait-timeout
# seconds before it checks again and then finally reject the bot.
set dupwait-timeout 5

# Enable cidr support for b/e/I modes. This means the bot will understand
# and match modes in cidr notation, and will be able to put and enforce such
# bans or unban itself, if banned with a cidr mask.
# Do NOT set this, if your network/server does not support cidr!
set cidr-support 0

# Disable this setting if you do not want to show name and release level of the
# operating system. You'll probably also want to edit the default motd (in
# text/motd) and remove its display from there.
set show-uname 1


# You MUST remove this line for your bot to start. 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 every setting. There's also a similar line
# lower down, just to make sure you're reading :)
die "Please make sure you edit your config file completely."


##### MODULES #####

# Below are various settings for the modules included with Eggdrop.
# PLEASE READ AND EDIT THEM CAREFULLY, even if you're an old hand at
# Eggdrop, things change.

# This path specifies the path were Eggdrop should look for its modules.
# If you use 'make install' (like all good kiddies do ;), this is a fine
# default. Otherwise, use your head :)
set mod-path "modules/"


#### PBKDF2 MODULE ####

# IF YOU DON'T READ THIS YOU MAY RENDER YOUR USERFILE USELESS LATER
# Eggdrop uses hashing in the userfile, so users can have secure passwords.
# Eggdrop will not start without an encryption module.
#
# As of Eggdrop 1.9.0, a new module was added for hashing, the PBKDF2 module.
# The PBKDF2 module was designed to work with the previous encryption module
# (blowfish) to make the transition easier. If this is a new bot, you can
# safely load just the PBKDF2 module. If you are transitioning a userfile from
# 1.8 or earlier, you should load this AND the blowfish module (below). By doing
# so, Eggdrop will seamlessly update the old blowfish hashes to the new PBKDF2
# hashes once a user logs in for the first time, and allow you to (eventually)
# remove the blowfish module altogether (See the remove-pass setting).

# Outside of the specific case noted above, please note that if you change your
# encryption method later (i.e. using other modules like a rijndael module), you
# can't use your current userfile anymore.
#
# NOTE FOR BOTNET USERS: If all bots on the botnet are not running the same
# configuration settings for encryption, you may encounter password-related
# issues when linking.
#
loadmodule pbkdf2

# Cryptographic hash function used. openssl list -digest-algorithms
#set pbkdf2-method "SHA256"

# Number of rounds. The higher the number, the longer hashing takes; but also
# the higher the protection against brute force attacks.
#set pbkdf2-rounds 16000

# Remove old password hashes after updating to a pbkdf2 hash?
#
# WARNING: DO NOT CHANGE THIS UNLESS YOU KNOW WHAT YOU ARE DOING
# Enabling this setting will break compatibility with older Eggdrops by ceasing
# to write to the PASS field (where password hashes from modules like blowfish
# are stored), as well as remove an existing PASS hash if found when writing a
# new pbkdf2 hash. In some scenarios (for example, a hub sharing a userfile to
# a leaf that does not have a pbkdf2 module loaded) enabling this setting may
# result in a user having no password set at all.
#
# This setting is planned to be enabled by default in Eggdrop 2.0.
#set remove-pass 0


#### BLOWFISH MODULE ####
#
# This module is planned to be removed in Eggdrop 2.0
#
# Load this if you intend to use a pre-1.9.0 userfile (Or in other words, do
# not load this if you are starting this as a fresh bot and are not linking
# it to a botnet that uses blowfish hashes)
#
# You also need to load this if you use a script that employs the
# encrypt/decrypt Tcl commands.
#
loadmodule blowfish

# Specify whether to use ECB or CBC operation modes for the tcl commands
# 'encrypt' and 'decrypt'. Prior to version 1.9.0, the less secure ecb
# method was used by default. If you are using these commands with older bots,
# change this to 'ecb' for compatibility, or upgrade the older bots.
set blowfish-use-mode cbc


#### PYTHON MODULE #####
#
# This module gives Eggdrop the ability to run python scripts. if loaded,
# Python scripts can be loaded at the end of the config file using the pysouce
# command to tell Eggdrop where the file is loaded. The module requires Python
# version 3.8 or higher to run. To load the python module, uncomment it below.
#loadmodule python


#### CHANNELS MODULE ####

# This module provides channel related support for the bot. Without it,
# you won't be able to make the bot join a channel or save channel
# specific userfile information.
loadmodule channels

# Enter here the filename where dynamic channel settings are stored.
set chanfile "LamestBot.chan"

# Set this setting to 1 if you want your bot to expire bans/exempts/invites set
# by other opped bots on the channel.
set force-expire 0

# Set this setting to 1 if you want your bot to share user greets with other
# bots on the channel if sharing user data.
set share-greet 0

# Set this setting to 1 if you want to allow users to store an info line.
set use-info 1

# Set this setting to 1 if you want to allow both +p and +s channel modes
# to be enforced at the same time by the chanmode channel setting.
# Make sure your server supports +ps mixing or you may get endless mode
# floods.
set allow-ps 0

# The following settings are used as default values when you .+chan #chan or
# .tcl channel add #chan. Look below for explanation of every option.

set default-flood-chan 15:60
set default-flood-deop 3:10
set default-flood-kick 3:10
set default-flood-join 5:60
set default-flood-ctcp 3:60
set default-flood-nick 5:60
set default-aop-delay 5:30
set default-idle-kick 0
set default-chanmode "nt"
set default-stopnethack-mode 0
set default-revenge-mode 0
set default-ban-type 3
set default-ban-time 120
set default-exempt-time 60
set default-invite-time 60

set default-chanset {
        -autoop         -autovoice
        -bitch          +cycle
        +dontkickops    +dynamicbans
        +dynamicexempts +dynamicinvites
        -enforcebans    +greet
        -inactive       -nodesynch
        -protectfriends +protectops
        -revenge        -revengebot
        -secret         -seen
        +shared         -statuslog
        +userbans       +userexempts
        +userinvites    -protecthalfops
        -autohalfop     -static
}

# chanmode +/-<modes>
#    This setting makes the bot enforce channel modes. It will always add
#    the +<modes> and remove the -<modes> modes.
#
# idle-kick 0
#    This setting will make the bot check every minute for idle
#    users. Set this to 0 to disable idle check.
#
# stopnethack-mode 0
#    This setting will make the bot de-op anyone who enters the channel
#    with serverops. There are seven different modes for this settings:
#      0 turn off
#      1 isoptest (allow serverop if registered op)
#      2 wasoptest (allow serverop if op before split)
#      3 allow serverop if isop or wasop
#      4 allow serverop if isop and wasop.
#      5 If the channel is -bitch, see stopnethack-mode 3
#        If the channel is +bitch, see stopnethack-mode 1
#      6 If the channel is -bitch, see stopnethack-mode 2
#        If the channel is +bitch, see stopnethack-mode 4
#
# revenge-mode 0
#   This settings defines how the bot should punish bad users when
#   revenging. There are four possible settings:
#     0 Deop the user.
#     1 Deop the user and give them the +d flag for the channel.
#     2 Deop the user, give them the +d flag for the channel, and kick them.
#     3 Deop the user, give them the +d flag for the channel, kick, and ban them.
#
# ban-type 3
#   This setting defines what type of bans should eggdrop place for +k users or
#   when revenge-mode is 3.
#   Available types are:
#     0 *!user@host
#     1 *!*user@host
#     2 *!*@host
#     3 *!*user@*.host
#     4 *!*@*.host
#     5 nick!user@host
#     6 nick!*user@host
#     7 nick!*@host
#     8 nick!*user@*.host
#     9 nick!*@*.host
#   You can also specify types from 10 to 19 which correspond to types
#   0 to 9, but instead of using a * wildcard to replace portions of the
#   host, only numbers in hostnames are replaced with the '?' wildcard.
#   Same is valid for types 20-29, but instead of '?', the '*' wildcard
#   will be used. Types 30-39 set the host to '*'.
#
# ban-time 120
#   Set here how long temporary bans will last (in minutes). If you
#   set this setting to 0, the bot will never remove them.
#
# exempt-time 60
#   Set here how long temporary exempts will last (in minutes). If you
#   set this setting to 0, the bot will never remove them. The bot will
#   check the exempts every X minutes, but will not remove the exempt if
#   a ban is set on the channel that matches that exempt. Once the ban is
#   removed, then the exempt will be removed the next time the bot checks.
#   Please note that this is an IRCnet feature.
#
# invite-time 60
#   Set here how long temporary invites will last (in minutes). If you
#   set this setting to 0, the bot will never remove them. The bot will
#   check the invites every X minutes, but will not remove the invite if
#   a channel is set to +i. Once the channel is -i then the invite will be
#   removed the next time the bot checks. Please note that this is an IRCnet
#   feature.
#
# aop-delay (minimum:maximum)
# This is used for autoop, autohalfop, autovoice. If an op or voice joins a
# channel while another op or voice is pending, the bot will attempt to put
# both modes on one line.
#   aop-delay 0   No delay is used.
#   aop-delay X   An X second delay is used.
#   aop-delay X:Y A random delay between X and Y is used.
#
# need-op { putserv "PRIVMSG #lamest :op me cos i'm lame!" }
#    This setting will make the bot run the script enclosed in brackets
#    if it does not have ops. This must be shorter than 120 characters.
#    If you use scripts like getops.tcl or botnetop.tcl, you don't need
#    to set this setting.
#
# need-invite { putserv "PRIVMSG #lamest :let me in!" }
#    This setting will make the bot run the script enclosed in brackets
#    if it needs an invite to the channel. This must be shorter than 120
#    characters. If you use scripts like getops.tcl or botnetop.tcl, you
#    don't need to set this setting.
#
# need-key { putserv "PRIVMSG #lamest :let me in!" }
#    This setting will make the bot run the script enclosed in brackets
#    if it needs the key to the channel. This must be shorter than 120
#    characters. If you use scripts like getops.tcl or botnetop.tcl, you
#    don't need to set this setting
#
# need-unban { putserv "PRIVMSG #lamest :let me in!" }
#    This setting will make the bot run the script enclosed in brackets
#    if it needs to be unbanned on the channel. This must be shorter than
#    120 characters. If you use scripts like getops.tcl or botnetop.tcl,
#    you don't need to set this setting
#
# need-limit { putserv "PRIVMSG #lamest :let me in!" }
#    This setting will make the bot run the script enclosed in brackets
#    if it needs the limit to be raised on the channel. This must be
#    shorter than 120 characters. If you use scripts like getops.tcl or
#    botnetop.tcl, you don't need to set this setting
#
# flood-chan 15:60
#    Set here how many channel messages in how many seconds from one
#    host constitutes a flood. Setting this to 0, 0:X or X:0 disables
#    flood protection for the channel, where X is an integer >= 0.
#
# flood-deop 3:10
#    Set here how many deops in how many seconds from one host constitutes
#    a flood. Setting this to 0, 0:X or X:0 disables deop flood protection
#    for the channel, where X is an integer >= 0.
#
# flood-kick 3:10
#    Set here how many kicks in how many seconds from one host constitutes
#    a flood. Setting this to 0, 0:X or X:0 disables kick flood protection
#    for the channel, where X is an integer >= 0.
#
# flood-join 5:60
#    Set here how many joins in how many seconds from one host constitutes
#    a flood. Setting this to 0, 0:X or X:0 disables join flood protection
#    for the channel, where X is an integer >= 0.
#
# flood-ctcp 3:60
#    Set here how many channel ctcps in how many seconds from one host
#    constitutes a flood. Setting this to 0, 0:X or X:0 disables ctcp flood
#    protection for the channel, where X is an integer >= 0.
#
# flood-nick 5:60
#    Set here how many nick changes in how many seconds from one host
#    constitutes a flood. Setting this to 0, 0:X or X:0 disables nick flood
#    protection for the channel, where X is an integer >= 0.
#
# A complete list of all available channel settings:
#
# enforcebans
#    When a ban is set, kick people who are on the channel and match
#    the ban?
#
# dynamicbans
#    Only activate bans on the channel when necessary? This keeps
#    the channel's ban list from getting excessively long. The bot
#    still remembers every ban, but it only activates a ban on the
#    channel when it sees someone join who matches that ban.
#
# userbans
#    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.
#
# dynamicexempts
#    Only activate exempts on the channel when necessary? This keeps
#    the channel's exempt list from getting excessively long. The bot
#    still remembers every exempt, but it only activates a exempt on
#    the channel when it sees a ban set that matches the exempt. The
#    exempt remains active on the channel for as long as the ban is
#    still active.
#
# userexempts
#    Allow exempts to be made by users directly? If turned off, the
#    bot will require all exempts to be made through the bot's console.
#
# dynamicinvites
#    Only activate invites on the channel when necessary? This keeps
#    the channel's invite list from getting excessively long. The bot
#    still remembers every invite, but the invites are only activated
#    when the channel is set to invite only and a user joins after
#    requesting an invite. Once set, the invite remains until the
#    channel goes to -i.
#
# userinvites
#    Allow invites to be made by users directly? If turned off, the
#    bot will require all invites to be made through the bot's console.
#
# autoop
#    Op users with the +o flag as soon as they join the channel?
#    This is insecure and not recommended.
#
# autohalfop
#    Halfop users with the +l flag as soon as they join the channel?
#    This is insecure and not recommended.
#
# bitch
#    Only let users with +o) flag be opped on the channel?
#
# greet
#    Say a user's info line when they join the channel?
#
# protectops
#    Re-op a user with the +o flag if they get deopped?
#
# protecthalfops
#    Re-halfop a user with the +l flag if they get dehalfopped?
#
# protectfriends
#    Re-op a user with the +f flag if they get deopped?
#
# statuslog
#    Log the channel status line every 5 minutes? This shows the bot's
#    status on the channel (op, voice, etc.), the channel's modes, and
#    the total number of members, ops, voices, regular users, and +b,
#    +e, and +I modes on the channel. A sample status line follows:
#
#      [01:40] @#lamest (+istn) : [m/1 o/1 v/4 n/7 b/1 e/5 I/7]
#
# revenge
#    Remember people who deop/kick/ban the bot, valid ops, or friends
#    and punish them? Users with the +f flag are exempt from revenge.
#
# revengebot
#    This is similar to to the 'revenge' option, but it only triggers
#    if a bot gets deopped, kicked or banned.
#
# autovoice
#    Voice users with the +v flag when they join the channel?
#
# secret
#    Prevent this channel from being listed on the botnet?
#
# shared
#    Share channel-related user info for this channel?
#
# cycle
#    Cycle the channel when it has no ops?
#
# dontkickops
#    Do you want the bot not to be able to kick users who have the +o
#    flag, letting them kick-flood for instance to protect the channel
#    against clone attacks.
#
# inactive
#    This prevents the bot from joining the channel (or makes it leave
#    the channel if it is already there). It can be useful to make the
#    bot leave a channel without losing its settings, channel-specific
#    user flags, channel bans, and without affecting sharing.
#
# seen
#    Respond to seen requests in the channel?  The seen module must be
#    loaded for this to work.
#
# nodesynch
#    Allow non-ops to perform channel modes? This can stop the bot from
#    fighting with services such as ChanServ, or from kicking IRCops when
#    setting channel modes without having ops.
#
# static
#    Allow only permanent owners to remove the channel?

# To add a channel to eggdrop, please enter the bot's partyline and type
# .+chan #channel. Check also .help chanset and .help chaninfo.
# You can still add a channel here and it will be saved if you have a
# chanfile. We recommend you to use the partyline though.
# 
#channel add #lamest


#### SERVER MODULE ####

# This module provides the core server support. You have to load this
# if you want your bot to come on IRC. Not loading this is equivalent
# to the old NO_IRC define.
loadmodule server

# Control certificate verification for irc servers. For a description of the
# possible values, look at the SSL SETTINGS section above.
#set ssl-verify-server 0

## What is your network?
## Options are:
##   EFnet
##   IRCnet
##   Undernet
##   DALnet
##   Libera
##   freenode
##   QuakeNet
##   Rizon
##   Twitch (This requires twitch.mod to be loaded as well)
##   Other  (This is a good, sane default option to use if your network/ircd is
##          not listed here. Additional configuration options for this setting
##          can be found further down in the IRC MODULE section)
set net-type "EFnet"

# Set the nick the bot uses on IRC, and on the botnet unless you specify a
# separate botnet-nick, here.
set nick "Lamestbot"

# Set the alternative nick which the bot uses on IRC if the nick specified
# by 'set nick' is unavailable. All '?' characters will be replaced by random
# numbers.
set altnick "Llamab?t"

# Set what should be displayed in the real-name field for the bot on IRC.
# This can not be blank, it has to contain something.
set realname "/msg LamestBot hello"

# This is a Tcl script to be run immediately after connecting to a server. If
# you want to authenticate Eggdrop with NickServ, uncomment and edit the middle
# line below.
bind evnt - init-server evnt:init_server

proc evnt:init_server {type} {
  global botnick
  putquick "MODE $botnick +i-ws"
#  putserv "PRIVMSG NickServ :identify <password>"
}

# Set the default port which should be used if none is specified with
# '.jump' or in 'set servers'.
set default-port 6667

# This is the bot's server list. The bot will start at the first server listed,
# and cycle through them whenever it gets disconnected. You need to change these
# servers to YOUR network's servers.
#
# The format is:
#   server add <server> [port [password]]
# Prefix the port with a plus sign to attempt a SSL connection:
#   server add <server> +port [password]
#
# Both the port and password fields are optional. If a port isn't specified,
# the default-port setting will be used. If you want to set a password or use
# SSL, you must specify a port.
#
# This format is new as of version 1.9.0. The previous method using
# set servers {} will still work for now, but is deprecated and will be removed
# in a future release.
server add you.need.to.change.this 6667
server add another.example.com 6669 password
server add 2001:db8:618:5c0:263:: 6669 password
server add ssl.example.net +7000

#### CAP Features ####
# This section controls IRCv3 capabilities supported natively by Eggdrop. You
# can enable individual settings here to be requested as part of the
# registration process with the IRC server. Not all servers support all CAP
# features. https://ircv3.net/support/networks.html maintains a list of some
# popular servers, and you can also use '.tcl cap ls' from the partyline
# to list capabilities available on that server.
#
# The capabilities currently known to be supported by Eggdrop are as follows:
#
#  account-notify, account-tag, away-notify, chghost, echo-message,
#  extended-join, invite-notify, message-tags, server-time, sasl, setname,
#  +typing
#

# SASL is a method that allows Eggdrop to authenticate with a NickServ service
# as part of the connection process to a server, eliminating the need to later
# authenticate via a /msg command.
#
# To request SASL authentication via CAP, set this to 1
#set sasl 0

# Set SASL mechanism to authenticate with.
# Options are:
#   0 = PLAIN                       (normal user/pass exchange, only encrypted
#                                    if connected to the IRC server with a
#                                    SSL/TLS connection)
#
#   1 = ECDSA-NIST256P-CHALLENGE    (Uses a certificate; usually requires a
#                                    public key to be registered with NickServ
#                                    or other similar service. Set certificate
#                                    to use in sasl-ecdsa-key setting below.
#                                    Beware: NIST curve could be backdoored,
#                                    so please use EXTERNAL or SCRAM instead.)
#
#   2 = EXTERNAL                    (Some other method you set up. Certificates
#                                    used are defined in ssl-certificate and
#                                    ssl-privatekey settings in SSL section)
#
#   3 = SCRAM-SHA-256
#
#   4 = SCRAM-SHA-512
#
#set sasl-mechanism 0

# Set username to authenticate to IRC NickServ with
#set sasl-username "llamabot"

# Set password to authenticate to IRC NickServ with
#set sasl-password "password"

# Specify the location of certificate to use for the SASL
# ecdsa-nist256p-challenge. An ECDSA certificate can be generated with the
# command:
#   openssl ecparam -genkey -name prime256v1 -out eggdrop-ecdsa.pem
#set sasl-ecdsa-key "eggdrop-ecdsa.pem"

# Set SASL failure action
# If SASL authentication fails, do you want to connect to the server anyway?
# Set this to 0 to disconnect and retry until success, or 1 to continue
# connecting to the server without SASL authentication.
#set sasl-continue 1
#
# Timeout (in seconds) before giving up SASL authentication
#set sasl-timeout 15

# To request the account-notify feature via CAP, set this to 1
set account-notify 1

# To request the extended-join feature via CAP, set this to 1
set extended-join 1

# To request the invite-notify feature via CAP, set this to 1
#set invite-notify 0

# To request the message-tags feature via CAP, set this to 1
#set message-tags 0

# To request the account-tag feature via CAP, set this to 1
# This can be enabled if necessary for imperfect account tracking if you don't
# have the WHOX, account-notify and extended-join features available
# see doc/ACCOUNTS for details
#set account-tag 0

# If you have any additional CAP features you would like to request at
# registration but are not listed above, set them here as space separated
# strings. Setting features here does not guarantee Eggdrop's ability to support
# them.
#set cap-request "feature1 feature2 feature3"

#### End of CAP features ####

# Number of seconds to wait between transmitting queued lines to the server.
# Lower this value at your own risk. ircd is known to start flood control at
# 512 bytes/2 seconds.
set msg-rate 2

# This setting makes the bot try to get his original nickname back if its
# primary nickname is already in use.
set keep-nick 1

# This setting makes the bot squelch the error message when rejecting a DCC
# CHAT, SEND or message command. Normally, Eggdrop notifies the user that the
# command has been rejected because they don't have access. Note that sometimes
# IRC server operators detect bots that way.
set quiet-reject 1

# If you want your bot to answer lower case ctcp requests (non rfc-
# compliant), set this setting to 1. mIRC will do this, most other
# clients will not.
set lowercase-ctcp 0

# Set how many ctcps should be answered at once.
set answer-ctcp 3

# Set here how many msgs in how many seconds from one host constitutes
# a flood. If you set this to 0:0, msg flood protection will be disabled.
set flood-msg 5:60

# Set here how many ctcps in how many seconds from one host constitutes
# a flood. If you set this to 0:0, ctcp flood protection will be disabled.
set flood-ctcp 3:60

# This setting defines how long Eggdrop should wait before moving from one
# server to another on disconnect. If you set 0 here, Eggdrop will not wait
# at all and will connect instantly. Setting this too low could result in
# your bot being K:Lined.
set server-cycle-wait 60

# Set here how long Eggdrop should wait for a response when connecting to a
# server before giving up and moving on to next server.
set server-timeout 60

# Set this to 1 if Eggdrop should check for stoned servers? (where the
# server connection has died, but Eggdrop hasn't been notified yet).
set check-stoned 1

# If you want your bot to exit the server if it receives an ERROR message,
# set this to 1.
set serverror-quit 1

# Set here the maximum number of lines to queue to the server. If you're
# going to dump large chunks of text to people over IRC, you will probably
# want to raise this. 300 is fine for most people though.
set max-queue-msg 300

# If you want Eggdrop to trigger binds for ignored users, set this to 1.
set trigger-on-ignore 0

# This setting configures PUBM and MSGM binds to be exclusive of PUB and MSG
# binds. This means if a MSGM bind with the mask "*help*" exists and is
# triggered, any MSG bindings with "help" in their mask will not be
# triggered. Don't enable this unless you know what you are doing!
set exclusive-binds 0

# Allow identical messages in the mode queue?
set double-mode 1

# Allow identical messages in the server queue?
set double-server 1

# Allow identical messages in the help queue?
set double-help 1

# This optimizes the kick queue. It also traces nick changes and parts in
# the channel and changes the kick queue accordingly.
# Options are:
#   0 = Turn it off.
#   1 = Optimize the kick queue by summarizing kicks.
#   2 = Trace nick changes and parts on the channel and change the queue
#       accordingly. For example, bot will not try to kick users who have
#       already parted the channel.
# ATTENTION: Setting 2 is very CPU intensive.
set optimize-kicks 1

# If your network supports more recipients per command then 1, you can
# change this behavior here. Set this to the number of recipients per
# command, or set this to 0 for unlimited.
set stack-limit 4

# Sets the default RPL_ISUPPORT (raw 005) information to use as a fallback.
# These MUST be compatible to all IRCds you might want to connect to.
# The actual server settings overwrite these, so you shouldn't need to modify.
#set isupport-default "CASEMAPPING=rfc1459 CHANNELLEN=80 NICKLEN=9 CHANTYPES=#& PREFIX=(ov)@+ CHANMODES=b,k,l,imnpst MODES=3 MAXCHANNELS=10 TOPICLEN=250 KICKLEN=250 STATUSMSG=@+"

### SERVER MODULE - OTHER NETWORKS (net-type "Other") ###

# This settings defines how umode +r is understood by Eggdrop. Some networks
# use +r to indicate a restricted connection. If this is your case, and you
# want your bot to leave restricted servers and jump to the next server on its
# list, then set it to 1. The default setting is 0.
#set check-mode-r 0

# This setting allows you to specify the maximum nick-length supported by your
# network. The default setting is 9. The maximum supported length by Eggdrop
# is 32.
#set nick-len 9


#### CTCP MODULE ####

# This module provides the normal ctcp replies that you'd expect.
# Without it loaded, CTCP CHAT will not work. The server module
# is required for this module to function.
loadmodule ctcp

# Set here how the ctcp module should answer ctcps.
# Options are:
#   0 = Normal behavior is used.
#   1 = The bot ignores all ctcps, except for CHAT and PING requests
#       by users with the +o flag.
#   2 = Normal behavior is used, however the bot will not answer more
#       than X ctcps in Y seconds (defined by 'set flood-ctcp').
set ctcp-mode 0

# There are also several variables to help make your bot less noticeable.
# They are: ctcp-version, ctcp-finger, and ctcp-userinfo. You can use set to set
# them to values you'd like.


#### IRC MODULE ####

# This module provides basic IRC support for your bot. You have to
# load this if you want your bot to come on IRC. The server and channels
# modules must be loaded for this module to function.
loadmodule irc

# Set this to 1 if you want to bounce all server bans.
set bounce-bans 0

# Set this to 1 if you want to bounce all server exemptions (+e modes).
# This is disabled if use-exempts is disabled.
set bounce-exempts 0

# Set this to 1 if you want to bounce all server invitations (+I modes).
# This is disabled if use-invites is disabled.
set bounce-invites 0

# Set this to 1 if you want to bounce all server modes.
set bounce-modes 0

# The following settings should be left commented unless the default values
# are being overridden. By default, exempts and invites are on for EFnet and
# IRCnet, but off for all other large networks. This behavior can be modified
# with the following 2 flags. If your network doesn't support +e/+I modes then
# you will be unable to use these features.
#
# Do you want to enable exempts (+e modes)?
#set use-exempts 0

# Do you want to enable invites (+I modes)?
#set use-invites 0

# If you want people to be able to add themselves to the bot's userlist
# with the default userflags (defined above in the config file) via the
# 'hello' msg command, set this to 1.
set learn-users 0

# Set here the time (in seconds) to wait for someone to return from a netsplit
# (i.e. wasop will expire afterwards). Set this to 1500 on IRCnet since its
# nick delay stops after 30 minutes.
set wait-split 600

# Set here the time (in seconds) that someone must have been off-channel
# before re-displaying their info line.
set wait-info 180

# Set this to the maximum number of bytes to send in the arguments
# of modes sent to the server. Most servers default this to 200.
set mode-buf-length 200

# Many IRCops find bots by seeing if they reply to 'hello' in a msg.
# You can change this to another word by un-commenting the following
# two lines and changing "myword" to the word wish to use instead of
# 'hello'. It must be a single word.
#unbind msg - hello *msg:hello
#bind msg - myword *msg:hello

# Many takeover attempts occur due to lame users blindly /msg ident'ing to
# the bot and attempting to guess passwords. We now unbind this command by
# default to discourage them. You can enable these commands by commenting the
# following two lines.
unbind msg - ident *msg:ident
unbind msg - addhost *msg:addhost

# Some IRC servers are using some non-standard op-like channel prefixes/modes.
# Define them here so the bot can recognize them. Just "@" should be fine for
# most networks. Un-comment the second line for some UnrealIRCds.

set opchars "@"
#set opchars "@&~"

# If you are so lame you want the bot to display peoples info lines, even
# when you are too lazy to add their chanrecs to a channel, set this to 1.
# *NOTE* This means *every* user with an info line will have their info
# line displayed on EVERY channel they join (provided they have been gone
# longer than wait-info).
set no-chanrec-info 0

### IRC MODULE - IRCnet SPECIFIC FEATURES (net-type "IRCnet") ###

# Attention: Use these settings *only* if you set 'net-type' to "IRCnet"!

# At the moment, the current IRCnet IRCd version (2.10) doesn't support the
# mixing of b, o and v modes with e and I modes. This might be changed in the
# future, so use 1 at the moment for this setting.
set prevent-mixing 1

### IRC MODULE - OTHER NETWORKS (net-type "Other") ###

# Attention: Use these settings *only* if you set net-type to "Other"!

# If your network supports more users per kick command then 1, you can
# change this behavior here. Set this to the number of users to kick at
# once, or set this to 0 for all at once.
#set kick-method 1

# Some networks don't include the +l limit and +k or -k key modes
# in the modes-per-line limitation. Set include-lk to 0 for
# these networks.
#set include-lk 1

# If your network doesn't use rfc 1459 compliant string matching routines,
# set this to 0.
#set rfc-compliant 1


#### TWITCH MODULE ####

# This module attempts to provide connectivity with the Twitch gaming platform.
# While Twitch provides an IRC gateway to connect with it's streaming service,
# it does not claim to (and certainly does not) follow the IRC RFC in any
# meaningful way. The intent of this module is not to provide the full spectrum
# of management functions typically associated with Eggdrop; please see the docs
# for additional information. Only load this if you are connecting to Twitch!
# Please see doc/TWITCH for Twitch-specific setup information, like how to
# configure the required CAP settings in the IRC section above.
#loadmodule twitch


#### TRANSFER MODULE ####

# The transfer module provides DCC SEND/GET support and userfile transfer
# support for userfile sharing. Un-comment the next line to load it if you
# need this functionality.
#loadmodule transfer

# Set here the maximum number of simultaneous downloads to allow for
# each user.
set max-dloads 3

# Set here the block size for dcc transfers. ircII uses 512 bytes,
# but admits that it may be too small. 1024 is standard these days.
# 0 is turbo-dcc (recommended).
set dcc-block 0

# Set here the time (in seconds) to wait before an inactive transfer times out.
set xfer-timeout 30

# By default, Eggdrop will abort the linking process if userfile sharing is
# enabled but the userfile transfer fails. Set this to 0 to keep the bots
# linked if the userfile transfer fails and retry every minute (both bots must
# be v1.9.0 or higher).
#set sharefail-unlink 1


#### SHARE MODULE ####

# This module provides userfile sharing support between two directly
# linked bots. The transfer and channels modules are required for this
# module to correctly function. Un-comment the following line to load
# the share module.
#loadmodule share

# Settings in this section must be un-commented before setting.

# When two bots get disconnected, this setting allows them to create a
# resync buffer which saves all changes done to the userfile during
# the disconnect. When they reconnect, they will not have to transfer
# the complete user file, but, instead, just send the resync buffer.
#
# NOTE: This has been known to cause loss of channel flags and other
# problems. Using this setting is not recommended.
#set allow-resync 0

# This setting specifies how long to hold another bots resync data
# before flushing it.
#set resync-time 900

# When sharing user lists, DON'T ACCEPT global flag changes from other bots?
# NOTE: The bot will still send changes made on the bot, it just won't accept
# any global flag changes from other bots. This overrides the private-globals
# setting (below).
#set private-global 0

# When sharing user lists, if private-global isn't set, which global flag
# changes from other bots should be ignored?
#set private-globals "mnot"

# When sharing user lists, don't accept ANY userfile changes from other
# bots? Paranoid people should use this feature on their hub bot. This
# will force all userlist changes to be made via the hub.
#set private-user 0

# This setting makes the bot discard its own bot records in favor of
# the ones sent by the hub.
# NOTE: No passwords or botflags are shared, only ports and
# address are added to sharing procedure. This only works with hubs that
# are v1.5.1 or higher.
#set override-bots 0


#### COMPRESS MODULE ####

# This module provides support for file compression. This allows the
# bot to transfer compressed user files and therefore save a significant amount
# of bandwidth. The share module must be loaded to load this module. Un-comment
# the following line to the compress module.
#loadmodule compress

# Allow compressed sending of user files? The user files are compressed with
# the compression level defined in `compress-level'.
set share-compressed 1

# This is the default compression level used. These levels are the same as
# those used by GNU gzip.
#set compress-level 9


#### FILESYSTEM MODULE ####

# This module provides an area within the bot where users can store and
# manage files. With this module, the bot is usable as a file server. The
# transfer module is required for this module to function. Un-comment
# the following line to load the filesys module.
#loadmodule filesys

# Set here the 'root' directory for the file system.
set files-path "/home/mydir/filesys"

# If you want to allow uploads, set this to the directory uploads
# should be put into. Set this to "" if you don't want people to
# upload files to your bot.
set incoming-path "/home/mydir/filesys/incoming"

# If you don't want to have a central incoming directory, but instead
# want uploads to go to the current directory that a user is in, set
# this setting to 1.
set upload-to-pwd 0

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

# Set here the maximum number of people that can be in the file area at once.
# Setting this to 0 makes it effectively infinite.
set max-file-users 20

# Set here the maximum allowable file size that will be received (in KB).
# Setting this to 0 makes it effectively infinite.
set max-filesize 1024


#### NOTES MODULE ####

# This module provides support for storing of notes for users from each other.
# Note sending between currently online users is supported in the core, this is
# only for storing the notes for later retrieval.
loadmodule notes

# Set here the filename where private notes between users are stored.
set notefile "LamestBot.notes"

# Set here the maximum number of notes to allow to be stored for each user
# (to prevent flooding).
set max-notes 50

# Set here how long (in days) to store notes before expiring them.
set note-life 60

# Set this to 1 if you want to allow users to specify a forwarding address
# for forwarding notes to another account on another bot.
set allow-fwd 0

# Set this to 1 if you want the bot to let people know hourly if they have
# any notes.
set notify-users 0

# Set this to 1 if you want the bot to let people know on join if they have
# any notes.
set notify-onjoin 1

# Comment out this next line. Otherwise, your bot won't start.
die "You didn't edit your config file completely like you were told, did you?"

# This next line checks if eggdrop is being executed from the source directory
if {[file exists aclocal.m4]} { die {You are attempting to run Eggdrop from the source directory. Please finish installing Eggdrop by running "make install" and run it from the install location.} }


#### CONSOLE MODULE ####

# This module provides storage of console settings when you exit the
# bot or type .store on the partyline.
loadmodule console

# Save users console settings automatically? Otherwise, they have
# to use the .store command.
set console-autosave 1

# If a user doesn't have any console settings saved, which channel
# do you want them automatically put on?
set force-channel 0

# Enable this setting if a user's global info line should be displayed
# when they join a botnet channel.
set info-party 0


#### WOOBIE MODULE ####

# This is for demonstrative purposes only. If you are looking for starting
# point in writing modules, woobie is the right thing.
#loadmodule woobie


#### SEEN MODULE ####

# This module provides very basic seen commands via msg, on channel or via dcc.
# This module works only for users in the bot's userlist. If you are looking for
# a better and more advanced seen module, try the gseen module, originally
# written by G'Quann and currently maintained by mortmann. You can find it at
# https://github.com/michaelortmann/gseen.mod.
#loadmodule seen


#### ASSOC MODULE ####

# This module provides assoc support, i.e. naming channels on the botnet.
# You can load it by un-commenting the following line.
#loadmodule assoc


#### UPTIME MODULE ####

# This module reports uptime statistics to the uptime contest web
# site at https://www.eggheads.org/uptime/.
# Go look and see what your uptime is! It takes about 9 hours to show up,
# so if your bot isn't listed, try again later. The server module must be
# loaded for this module to function.
#
# Information sent to the server includes the bot's uptime, botnet-nick,
# server, version, and IP address. This information is stored in a temporary
# logfile for debugging purposes only. The only publicly available information
# will be the bot's botnet-nick, version and uptime. If you do not wish for this
# information to be sent, comment out the following line.
loadmodule uptime


#### IDENT MODULE ####

# This module adds Eggdrop support for the externally-provided oident
# service, or alternatively the ability for Eggdrop to act as its own ident
# daemon. Please read the docs at doc/settings/mod.ident for additional
# information on correctly configuring this section. If you don't know
# what ident or oident are, it is safe to leave this section commented.
#loadmodule ident

# Set the ident method you wish to use. Each of these methods requires
# some form of external configuration in order to function. See
# doc/settings/mod.ident for additional information.
# Options are:
#   0 = oidentd
#         Your bot will overwrite $HOME/.oidentd.conf right before opening the
#         socket to the IRC server with the global reply.
#         NOTE: requires the oidentd service to be running on the host machine
#   1 = Builtin
#         Your bot will automatically turn its builtin identd on and off when
#         needed so it shouldn't conflict with other identds that do the same.
#         NOTE: Eggdrop must be granted permissions on the host system to bind
#         to port 113. 
#set ident-method 0

# Set the ident port to use for ident-method 1.
#set ident-port 113

##### AUTOSCRIPTS #####

# Load this script to enable the autoscripts functionality for Eggdrop.
# Autoscripts are scripts that can be downloaded, installed and configured via
# the partyline. For more information, read doc/AUTOSCRIPTS
source scripts/autoscripts.tcl

##### TCL SCRIPTS #####

# This is a good place to load scripts to use with your bot.

# This line loads script.tcl from the scripts directory inside your Eggdrop's
# directory. All scripts should be put there, although you can place them where
# you like as long as you can supply a fully qualified path to them.
#
# source scripts/script.tcl

source scripts/alltools.tcl
source scripts/action.fix.tcl

# This script enhances Eggdrop's built-in dcc '.whois' command to allow all
# users to '.whois' their own handle.
source scripts/dccwhois.tcl

# This script provides many useful informational functions, like setting
# users' URLs, e-mail address, ICQ numbers, etc. You can modify it to add
# extra entries.
source scripts/userinfo.tcl
loadhelp userinfo.help

# Use this script for Tcl and Eggdrop backwards compatibility.
# NOTE: This can also cause problems with some newer scripts.
#source scripts/compat.tcl

##### PYTHON SCRIPTS #####

# To load a python script, use the pysource command.

# pysource scripts/mypythonscript.py
