
######
#####
###   General Settings
#####
######

# the file where the seen data will be backuped.
# WARNING: set this _before_ the module is loaded.
set gseenfile "gseen.dat"

# now load the module
loadmodule gseen

# load the English language file
loadseenslang "en" "English" language/gseen.en.lang

# load the German language file
loadseenslang "de" "Deutsch" language/gseen.de.lang

# set the default language to english...
set default-slang "en"

# ... but let #xwp use the german langfile
setchanseenlang #xwp "de"

# the char that marks public commands (!seen, etc...)
# "" is a valid option
set cmdchar "!"

# delete data sets that are older than x days
set expire-seens 60

# only answer x seen requests in y seconds to prevent flooding
set max-seens 7:60

# tell users if someone was !seen'ing for them
set tell-seens 1

# check if the user was online under a different nick
set fuzzy-search 1

# allow user to include wildcards in the search?
set wildcard-search 1

# break search if there are more than x matches
set max-matches 250

# forward a request to other bots, if a !seen returned no result?
set botnet-seens 1

# store channels, which are +secret on the bot as [secret]?
set hide-secret-chans 1

# backup the seen data every x minutes
set save-seens 60

######
#####
###   AI Settings
#####
######

# this setting configures on which sentences your bot should
# attempt to do an ai-seen. Each of them is a simple wildcard
# mask. Set this to "" if you want to deactivate ai-seens or
# create more precise masks if the bots reacts too often.
set ai-seen-binds {
  "${nick}*seen*"
  "${botnet-nick}*seen*"
  "${nick}*gesehen*"
  "${botnet-nick}*gesehen*"
}

# this is just the same as above, but if triggered it will
# not do an ai-seen, but display its seen-stats.
set ai-seenstats-binds {
  "${nick}*seenstats*"
  "${botnet-nick}*seenstats*"
}

# when doing an AI seen, ignore the following words (otherwise
# the bot might give weird answers like "<bot> nick, bot was last seen..." :)
set ai-seen-ignore "$nick ${botnet-nick} seen"

######
#####
###   special stuff (can be ignored in most cases)
#####
######

# Maximum length of requested nick that will still be processed.
# (by default this is eggdrop's configured nick-length)
set seen-nick-len ${nick-len}

# if the user is known by the bot, log their handle instead of the nick
# (not recommended, might cause confusion by the users)
set use-handles 0

######
#####
###   outdated settings (only important for eggdropv1.4 users)
#####
######

# channels where you do not want your bot to reply to public queries
set no-pub-seens ""

# channels where you want your bot to send replies via notice to the user and
# not to the channel
set quiet-seens ""

# same as quiet-seens but for AI seen
set quiet-ai-seens ""

# channels where you do not want your bot to log seen data
set no-seendata ""


###############################################################################
# end of configuration
# just ignore everything below ^_^
###############################################################################

bind chjn - * *chjn:gseen
bind chpt - * *chpt:gseen

catch "unbind pub - !seen *pub:!seen"
catch "unbind pub - !seennick *pub:!seennick"
catch "unbind pub - !seenstats *pub:!seenstats"
bind pub - ${cmdchar}seen *pub:!seen
bind pub - ${cmdchar}seennick *pub:!seennick
bind pub - ${cmdchar}seenstats *pub:!seenstats

foreach bnd [binds pubm] {
  if {([lindex $bnd 2] == "*pubm:seen") || ([lindex $bnd 2] == "*pub:!seenstats")} {
    unbind [lindex $bnd 0] [lindex $bnd 1] [lindex $bnd 2] [lindex $bnd 4]
  }
}

if {${ai-seen-binds} != ""} {
  foreach mask ${ai-seen-binds} {
    bind pubm -|- "% [subst $mask]" *pubm:seen
  }
}

if {${ai-seenstats-binds} != ""} {
  foreach mask ${ai-seenstats-binds} {
    bind pubm -|- "% [subst $mask]" *pub:!seenstats
  }
}
