####################################################
# by wiebe @ QuakeNet
#
# removes all binds and reloads eggdrop's default binds (except some)
# binds that are NOT RE-CREATED in scripts are gone (which is a purpose of this script)
# load this file ***BEFORE*** other scripts!
#
####################################################


####################################################
# remove all binds
####################################################
bind evnt - prerehash bind:evnt

proc bind:evnt { type } {
  foreach bind [binds] {
    unbind [lindex $bind 0] [lindex $bind 1] [lindex $bind 2] [lindex $bind 4]
  }
}

####################################################
# msg
####################################################
#bind msg -|- help *msg:help
#bind msg -|- whois *msg:whois
#bind msg -|- who *msg:who
#bind msg -|- voice *msg:voice
#bind msg m|m status *msg:status
#bind msg m|- save *msg:save
#bind msg m|- reset *msg:reset
#bind msg m|- rehash *msg:rehash
#bind msg -|- pass *msg:pass
#bind msg -|- halfop *msg:halfop
#bind msg -|- op *msg:op
#bind msg m|- memory *msg:memory
#bind msg o|o key *msg:key
#bind msg m|- jump *msg:jump
#bind msg o|o invite *msg:invite
#bind msg -|- info *msg:info
#bind msg -|- hello *msg:hello
#bind msg -|- go *msg:go
#bind msg n|- die *msg:die
#bind msg - hello *msg:hello
#bind msg - ident *msg:ident
#bind msg - addhost *msg:addhost

####################################################
# chon
####################################################
bind chon -|- * *chon:console:chon
bind chon -|- * *chon:channels:chon

####################################################
# ctcp
####################################################
bind ctcp -|- CHAT *ctcp:CHAT
#bind ctcp -|- TIME *ctcp:TIME
#bind ctcp -|- CLIENTINFO *ctcp:CLIENTINFO
#bind ctcp -|- USERINFO *ctcp:USERINFO
#bind ctcp -|- VERSION *ctcp:VERSION
#bind ctcp -|- ERRMSG *ctcp:ERRMSG
bind ctcp -|- PING *ctcp:PING
#bind ctcp -|- ECHO *ctcp:ECHO
#bind ctcp -|- FINGER *ctcp:FINGER
bind ctcp -|- DCC *ctcp:server:DCC

####################################################
# dcc
####################################################
bind dcc m|m status *dcc:status
bind dcc m|- rehash *dcc:rehash
bind dcc -|- store *dcc:store
bind dcc lo|lo topic *dcc:topic
bind dcc o|o say *dcc:say
bind dcc o|- msg *dcc:msg
bind dcc lo|lo kickban *dcc:kickban
bind dcc lo|lo kick *dcc:kick
bind dcc o|o invite *dcc:invite
bind dcc ov|ov devoice *dcc:devoice
bind dcc ov|ov voice *dcc:voice
#bind dcc lo|lo dehalfop *dcc:dehalfop
#bind dcc lo|lo halfop *dcc:halfop
bind dcc o|o deop *dcc:deop
bind dcc o|o op *dcc:op
bind dcc o|o channel *dcc:channel
bind dcc o|o act *dcc:act
bind dcc o|o resetinvites *dcc:resetinvites
bind dcc o|o resetexempts *dcc:resetexempts
bind dcc o|o resetbans *dcc:resetbans
bind dcc m|m reset *dcc:reset
bind dcc m|m deluser *dcc:deluser
bind dcc m|m adduser *dcc:adduser
bind dcc m|- clearqueue *dcc:clearqueue
bind dcc o|- servers *dcc:servers
bind dcc m|- dump *dcc:dump
bind dcc lo|lo unstick *dcc:unstick
bind dcc lo|lo stick *dcc:stick
bind dcc -|- info *dcc:info
bind dcc m|m chinfo *dcc:chinfo
bind dcc n|n chansave *dcc:chansave
bind dcc n|n chanset *dcc:chanset
bind dcc n|n chanload *dcc:chanload
bind dcc m|m chaninfo *dcc:chaninfo
bind dcc lo|lo invites *dcc:invites
bind dcc lo|lo exempts *dcc:exempts
bind dcc lo|lo -invite *dcc:-invite
bind dcc lo|lo -exempt *dcc:-exempt
bind dcc lo|lo bans *dcc:bans
bind dcc m|m -chrec *dcc:-chrec
bind dcc lo|lo -ban *dcc:-ban
bind dcc m|m +chrec *dcc:+chrec
bind dcc n|- +chan *dcc:+chan
bind dcc lo|lo +invite *dcc:+invite
bind dcc lo|lo +exempt *dcc:+exempt
bind dcc lo|lo +ban *dcc:+ban
bind dcc n|- relang *dcc:relang
bind dcc n|- lstat *dcc:lstat
bind dcc n|- ldump *dcc:ldump
bind dcc n|- -lsec *dcc:-lsec
bind dcc n|- +lsec *dcc:+lsec
bind dcc n|- -lang *dcc:-lang
bind dcc n|- +lang *dcc:+lang
bind dcc n|- language *dcc:language
bind dcc -|- whoami *dcc:whoami
bind dcc m|m traffic *dcc:traffic
bind dcc -|- whom *dcc:whom
bind dcc -|- whois *dcc:whois
bind dcc -|- who *dcc:who
bind dcc -|- vbottree *dcc:vbottree
bind dcc m|m uptime *dcc:uptime
bind dcc n|- unloadmod *dcc:unloadmod
bind dcc t|- unlink *dcc:unlink
bind dcc t|- trace *dcc:trace
bind dcc n|- tcl *dcc:tcl
bind dcc -|- su *dcc:su
bind dcc -|- strip *dcc:strip
bind dcc n|- simul *dcc:simul
bind dcc n|- set *dcc:set
bind dcc m|m save *dcc:save
bind dcc m|m reload *dcc:reload
bind dcc o|- relay *dcc:relay
bind dcc n|- rehelp *dcc:rehelp
bind dcc -|- quit *dcc:quit
bind dcc -|- page *dcc:page
bind dcc -|- nick *dcc:nick
bind dcc -|- handle *dcc:handle
bind dcc -|- newpass *dcc:newpass
bind dcc -|- motd *dcc:motd
bind dcc n|- modules *dcc:modules
bind dcc m|- module *dcc:module
bind dcc -|- me *dcc:me
bind dcc ot|o match *dcc:match
bind dcc n|- loadmod *dcc:loadmod
bind dcc t|- link *dcc:link
bind dcc m|- ignores *dcc:ignores
bind dcc -|- help *dcc:help
bind dcc -|- fixcodes *dcc:fixcodes
bind dcc -|- echo *dcc:echo
bind dcc m|- debug *dcc:debug
bind dcc t|- dccstat *dcc:dccstat
bind dcc ot|o console *dcc:console
bind dcc m|- comment *dcc:comment
bind dcc t|- chpass *dcc:chpass
bind dcc t|- chnick *dcc:chnick
bind dcc t|- chhandle *dcc:chhandle
bind dcc m|m chattr *dcc:chattr
bind dcc -|- chat *dcc:chat
bind dcc t|- chaddr *dcc:chaddr
bind dcc -|- bottree *dcc:bottree
bind dcc -|- bots *dcc:bots
bind dcc -|- botinfo *dcc:botinfo
bind dcc t|- botattr *dcc:botattr
bind dcc t|- boot *dcc:boot
bind dcc m|- binds *dcc:binds
bind dcc t|- banner *dcc:banner
bind dcc m|m backup *dcc:backup
bind dcc -|- back *dcc:back
bind dcc -|- away *dcc:away
bind dcc ot|o addlog *dcc:addlog
bind dcc m|- -ignore *dcc:-ignore
bind dcc -|- -host *dcc:-host
bind dcc m|- +user *dcc:+user
bind dcc m|- +ignore *dcc:+ignore
bind dcc t|m +host *dcc:+host
bind dcc t|- +bot *dcc:+bot

####################################################
# raw named
####################################################
bind raw -|- ERROR: *raw:ERROR:
bind raw -|- ERROR *raw:ERROR
bind raw -|- INVITE *raw:irc:invite
bind raw -|- JOIN *raw:irc:join
bind raw -|- KICK *raw:irc:kick
bind raw -|- KICK *raw:KICK
bind raw -|- MODE *raw:irc:mode
bind raw -|- MODE *raw:MODE
bind raw -|- NICK *raw:irc:nick
bind raw -|- NICK *raw:NICK
bind raw -|- NOTICE *raw:irc:notice
bind raw -|- NOTICE *raw:NOTICE
bind raw -|- PART *raw:irc:part
bind raw -|- PING *raw:PING
bind raw -|- PONG *raw:PONG
bind raw -|- PRIVMSG *raw:irc:msg
bind raw -|- PRIVMSG *raw:PRIVMSG
bind raw -|- QUIT *raw:irc:quit
bind raw -|- TOPIC *raw:irc:topic
bind raw -|- WALLOPS *raw:WALLOPS

####################################################
# raw numerics
####################################################
bind raw -|- 001 *raw:001
bind raw -|- 251 *raw:251

bind raw -|- 303 *raw:303
bind raw -|- 311 *raw:311
bind raw -|- 318 *raw:318
bind raw -|- 315 *raw:irc:315
bind raw -|- 324 *raw:irc:324
bind raw -|- 331 *raw:irc:331
bind raw -|- 332 *raw:irc:332
bind raw -|- 354 *raw:irc:354
bind raw -|- 346 *raw:irc:346
bind raw -|- 347 *raw:irc:347
bind raw -|- 348 *raw:irc:348
bind raw -|- 349 *raw:irc:349
bind raw -|- 352 *raw:irc:352
bind raw -|- 367 *raw:irc:367
bind raw -|- 368 *raw:irc:368

bind raw -|- 403 *raw:irc:403
bind raw -|- 405 *raw:irc:405
bind raw -|- 432 *raw:432
bind raw -|- 433 *raw:433
bind raw -|- 437 *raw:437
bind raw -|- 438 *raw:438
bind raw -|- 442 *raw:442
#bind raw -|- 451 *raw:451
bind raw -|- 471 *raw:irc:471
bind raw -|- 473 *raw:irc:473
bind raw -|- 474 *raw:irc:474
bind raw -|- 475 *raw:irc:475

####################################################
# gseen module
####################################################
if {[string match -nocase *gseen* [modules]]} {
  bind join -|- * *join:gseen
  bind kick -|- * *kick:gseen
  bind nick -|- * *nick:gseen
  bind part -|- * *part:gseen
  bind bot -|- gseen_rep *bot:gseen_rep
  bind bot -|- gseen_req *bot:gseen_req
  bind rejn -|- * *rejn:gseen
  bind sign -|- * *sign:gseen
  bind splt -|- * *splt:gseen
  bind dcc -|- seennick *dcc:seennick
  bind dcc m|- purgeseens *dcc:purgeseens
  bind dcc -|- seenstats *dcc:seenstats
  bind dcc -|- seen *dcc:seen
#  bind msg -|- seen *msg:seen
#  bind msg -|- seennick *msg:seennick
}


####################################################
# notes module
####################################################
if {[string match -nocase *notes* [modules]]} {
  bind away -|- * *away:notes
  bind chon -|- * *chon:notes
  bind dcc -|- notes *dcc:notes
  bind dcc -|- note *dcc:note
  bind dcc -|- noteigns *dcc:noteigns
  bind dcc -|- -noteign *dcc:-noteign
  bind dcc -|- +noteign *dcc:+noteign
  bind join -|- * *join:notes
  bind load -|- irc *load:notes:irc
  bind load -|- server *load:notes:server
  bind msg -|- notes *msg:notes
  bind nkch -|- * *nkch:notes
}

