Posted to tcl by cyruz at Thu Dec 14 16:19:46 GMT 2023view raw
- #Eggdrop Toolz v2.01 for Eggdrop v1.3.4 & up by tzun
- #All of the commands are explained at the beginning of each function.
- #Information on them can also be found if you type !help in a public chat.
- #To get more info on a specific command, type !help <command>.
- putlog "Loading Toolz (C) 1998 by tzun..."
- putlog "Type !help in a public chat for more info."
- ##### COMMANDS USED BY THIS SCRIPT #####
- proc say {who what} {
- puthelp "PRIVMSG $who :$what"
- }
- proc notice {who what} {
- puthelp "NOTICE $who :$what"
- }
- proc cleanarg {arg} {
- set temp ""
- for {set i 0} {$i < [string length $arg]} {incr i} {
- set char [string index $arg $i]
- if {($char != "\12") && ($char != "\15")} {
- append temp $char
- }
- }
- set temp [string trimright $temp "\}"]
- set temp [string trimleft $temp "\{"]
- return $temp
- }
- ##### AUTH SECTION #####
- # The auth is a protection script so that ip spoofers won't be able to
- # use the commands, and take over channels. once you singoff, the auth
- # will expire.
- # Owners will be able to disable a user from using commands. This will
- # not allow them to auth themselves.
- # The binds:
- bind pub n !disable pub:disable
- bind pub n !enable pub:enable
- bind msg - auth auth:auth
- bind sign - * auth:signcheck
- bind msg - deauth auth:deauth
- # This is the command for owners to disable a user.
- # Usage: !disable <hand>
- proc pub:disable {nick host hand chan arg} {
- if {[llength $arg] < 1} {
- notice $nick "Usage: !disable <handle>"
- return 0
- }
- set who [lindex $arg 0]
- if {![validuser $who]} {
- notice $nick "$who is not a valid user."
- return 0
- }
- setuser $who XTRA AUTH "DEAD"
- notice $nick "Disabled $who"
- putcmdlog "<<$nick>> !$hand! disable $who"
- }
- proc pub:enable {nick host hand chan arg} {
- if {[llength $arg] < 1} {
- notice $nick "Usage: !disable <handle>"
- return 0
- }
- set who [lindex $arg 0]
- if {![validuser $who]} {
- notice $nick "$who is not a valid user."
- return 0
- }
- setuser $who XTRA AUTH 0
- notice $nick "Enabled $who"
- putcmdlog "<<$nick>> !$hand! enable $who"
- }
- # Usage: /msg $botnick auth <password>
- proc auth:auth {nick uhost hand arg} {
- global botnick
- set found 0
- foreach n [channels] {
- if {[onchan $nick $n]} {
- set found 1
- }
- }
- if {$found == 0} {return 0}
- if {[llength $arg] <1} {
- notice $nick "Usage: /msg $botnick auth <pass>"
- return 0
- }
- set pass [lindex $arg 0]
- if {$hand == "*"} {
- say $nick "You are not permitted to use my commands."
- return 0
- }
- if {[getuser $hand XTRA AUTH] == "DEAD"} {
- say $nick "Sorry, but you have been disabled from using my commands."
- return 0
- }
- if {[passwdok $hand $pass]} {
- setuser $hand XTRA "AUTH" "1"
- putcmdlog "<<$nick>> ($uhost) !$hand! AUTH ..."
- notice $nick "Password accepted."
- return 0
- } else {
- notice $nick "Password denied."
- }
- }
- proc auth:signcheck {nick uhost hand chan reason} {
- if {$hand == "*"} {return 0}
- if {[getuser $hand XTRA AUTH] == "DEAD"} {
- return 0
- }
- setuser $hand XTRA "AUTH" "0"
- putlog "Auth for $hand expired."
- }
- proc auth:check {hand} {
- set auth [getuser $hand XTRA "AUTH"]
- if {($auth == "") || ($auth == "0") || ($auth == "DEAD")} {
- return 0
- } else { return 1}
- }
- proc auth:deauth {nick uhost hand arg} {
- if {[getuser $hand XTRA AUTH] == "DEAD"} {
- say $nick "Sorry, but you have been disabled from using my commands."
- return 0
- }
- if {$hand != "*"} {
- setuser $hand XTRA "AUTH" "0"
- putcmdlog "<<$nick>> ($uhost) !$hand! DEAUTH"
- notice $nick "Authentication has been removed."
- }
- }
- ##### BINDS #############################
- bind pub p !bots pub:bots
- bind pub m|m !channels pub:channels
- bind pub o|o !ignore pub:ignore
- bind pub o|o !unignore pub:unignore
- bind pub n !chanset pub:chanset
- bind pub m|m !status pub:status
- bind pub m|m !flags pub:flags
- bind pub o|o !ignorelist pub:ignorelist
- bind pub o|o !banlist pub:banlist
- bind pub m !save pub:save
- bind pub m !reload pub:reload
- bind pub n !rehash pub:rehash
- bind pub n !restart pub:restart
- bind pub n !backup pub:backup
- bind pub n !forcebans pub:forcebans
- bind pub m !jump pub:jump
- bind pub - !time pub:time
- bind pub n !die pub:die
- bind pub o !act pub:act
- bind pub o !say pub:say
- bind pub - !mode pub:mode
- bind pub - !kick pub:kick
- bind pub - !ban pub:ban
- bind pub - !unban pub:unban
- bind pub - !voice pub:voice
- bind pub - !devoice pub:devoice
- bind pub n !link pub:link
- bind pub n !unlink pub:unlink
- bind pub p !ping pub:ping
- bind ctcr - PING pub:pingr
- bind pub - !op pub:op
- bind pub - !deop pub:deop
- bind pub o|o !opme pub:opme
- bind pub n !adduser pub:adduser
- bind pub n !broadcast pub:broadcast
- bind pub n !join pub:join
- bind pub n !part pub:part
- bind pub - !help pub:help
- bind pub - help pub:helpa
- bind pub n !chattr pub:chattr
- bind pub n !deluser pub:deluser
- bind pub n !addbot pub:addbot
- bind pub n !rmbot pub:rmbot
- bind pub n !addhost pub:addhost
- bind pub n !rmhost pub:rmhost
- ##### BADWORD SECTION #####
- # Comment out the next lines if you would like to disable badword.
- # If you want to add one, just type this:
- # bind pubm - "*<your bad word>*" badword:kick
- # BE SURE TO KEEP THE STARS (*)
- # Script will not kick owners or masters of the bot.
- # If you would like to use this part, uncomment the following lines
- #bind pubm - "*fuck*" badword:kick
- #bind pubm - "*shit*" badword:kick
- #bind pubm - " ass*" badword:kick
- #bind pubm - "*cunt*" badword:kick
- #bind pubm - "*whore*" badword:kick
- #bind pubm - "*slut*" badword:kick
- #########################################
- ##### GLOBALS #####
- set pub_pingchan ""
- ##### PROCS #####
- # Tells someone the time and date
- # Usage: !time
- proc pub:time {nick host hand chan arg} {
- notice $nick "[ctime [unixtime]]"
- }
- # Tells the bot to stop running
- # Usage: !die [reason]
- proc pub:die {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Sutting down... later!"
- putcmdlog "<<$nick>> !$hand! die $arg"
- die $arg
- }
- # Jumps to a new server
- # Usage: !jump <server>[:port]
- proc pub:jump {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Jumping to $arg..."
- jump $arg
- putlog "<<$nick>> !$hand! jump $arg"
- }
- # Resets all bans to what they should be on the bot's banlist
- # Usage: !forcebans
- proc pub:forcebans {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Resetting all bans to match my banlist..."
- resetbans $chan
- putcmdlog "<<$nick>> !$hand! forcebans"
- }
- # Rehashes the bot
- # Usage: !rehash
- proc pub:rehash {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Rehashing..."
- rehash
- putcmdlog "<<$nick>> !$hand! rehash"
- }
- # Reloads the userfile
- # Usage: !reload
- proc pub:reload {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Reloading..."
- reload
- putcmdlog "<<$nick>> !$hand! reload"
- }
- # Restarts the bot
- # Usage: !restart
- proc pub:restart {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "restart..."
- restart
- putcmdlog "<<$nick>> !$hand! restart"
- }
- # Saves the userfile and channel file
- # Usage: !save
- proc pub:save {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Saving channel file and user file..."
- save
- putcmdlog "<<$nick>> !$hand! save"
- }
- # Makes a backup of the userfile
- # Usage: !backup
- proc pub:backup {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- notice $nick "Backing up the userfile..."
- backup
- putcmdlog "<<$nick>> !$hand! backup"
- }
- # Prints out a ban list
- # Usage: !banlist
- proc pub:banlist {nick host hand chan arg} {
- notice $nick "\002Global bans:\002"
- if {[banlist] == ""} {
- notice $nick "none"
- } else {
- foreach ig [banlist] {
- set what [lindex $ig 0]
- set by [lindex $ig 1]
- set comment [lindex $ig 4]
- notice $nick "$what - made by $by - $comment"
- }}
- notice $nick "\002Bans for $chan:\002"
- if {[banlist $chan] == ""} {
- notice $nick "none"
- } else {
- foreach b [banlist $chan] {
- set what [lindex $b 0]
- set by [lindex $b 5]
- set comment [lindex $b 1]
- notice $nick "$what - made by $by - $comment"
- }}
- }
- # Prints out an ignore list
- # Usage: !ignorelist
- proc pub:ignorelist {nick host hand chan arg} {
- if {[ignorelist] == ""} {
- notice $nick "I don't have any ignores."
- return 0
- }
- notice $nick "Ignore list:"
- foreach ig [ignorelist] {
- set what [lindex $ig 0]
- set by [lindex $ig 4]
- set comment [lindex $ig 1]
- notice $nick "$what - made by $by - $comment"
- }
- }
- # Gives the global bot flags for a person
- # Usage: !flags <handle>
- proc pub:flags {nick host hand chan arg} {
- if {[llength $arg]<1} {
- notice $nick "Usage: !flags <handle>"
- return 0
- }
- set who [lindex $arg 0]
- if {![validuser $who]} {
- notice $nick "I don't know who $who is."
- return 0
- }
- set flags [chattr $who]
- notice $nick "Global flags for $who: $flags"
- putcmdlog "<<$nick>> !$hand! flags $who"
- }
- # Gives a bunch of statistics
- # Usage: !status
- proc pub:status {nick host hand chan arg} {
- global server botname version
- notice $nick "\002Bot statistics:\002"
- notice $nick "User records: [countusers]"
- notice $nick "My channels: [channels]"
- notice $nick "Linked bots: [bots]"
- notice $nick "My date: [date]"
- notice $nick "My time: [time]"
- notice $nick "My operating system: [unames]"
- notice $nick "Server: $server"
- notice $nick "My host: $botname"
- notice $nick "Eggdrop version: [lindex $version 0]"
- putcmdlog "<<$nick>> !$hand! status"
- }
- # Changes the channel settings for a channel
- # Usage: !chanset <chan> <what> [args]
- proc pub:chanset {nick host hand chan arg} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- if {[llength $arg] < 2} {
- notice $nick "Usage: !chanset <#channel> <mode> \[args\]"
- return 0
- }
- set thechan [lindex $arg 0]
- set mode [lindex $arg 1]
- set a [lrange $arg 2 end]
- if {![validchan $thechan]} {
- notice $nick "I don't monitor that channel."
- return 0
- }
- channel set $thechan $mode $a
- putcmdlog "<<$nick>> !$hand! chanset $thechan $mode $a"
- }
- # Lists the bots on the botnet
- # Usage: !bots
- proc pub:bots {nick host hand chan arg} {
- set bots [bots]
- notice $nick "Bots: $bots"
- putcmdlog "<<$nick>> !$hand! bots"
- }
- # Lists the channels the bot is on
- # Usage: !channels
- proc pub:channels {nick host hand chan arg} {
- set chans [chanlist]
- notice $nick "Channels: $chans"
- putcmdlog "<<$nick>> !$hand! channels"
- }
- # Makes a new ignore
- # Usage: !ignore <who/host> <life> <reason>
- proc pub:ignore {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args] < 3} {
- notice $nick "Usage: !ignore <nick/host> <time> <reason>"
- return 0
- }
- set who [lindex $args 0]
- set time [expr [lindex $args 1]]
- set reason [lrange $args 2 end]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- if {![onchan $who $chan]} {
- set theban $who
- } else {
- set host [getchanhost $who $chan]
- set host [maskhost $host]
- set shost [split $host "!"]
- set theban "*!*[lindex $shost 1]"
- }
- newignore $theban $nick $reason $time
- putcmdlog "<<$nick>> !$hand! ignore $args"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Kills an ignore
- # Usage: !unignore <ignore mask>
- proc pub:unignore {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !unignore <host>"
- return 0
- }
- set theban [lindex $args 0]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- killignore $theban
- putcmdlog "<<$nick>> !$hand! unignore $chan $theban"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Says something on any channel
- # Usage: !say <chan> <what>
- proc pub:say {nick host hand chan arg} {
- global botnick
- if {![auth:check $hand]} {return 0}
- if {[llength $arg] < 2} {
- notice $nick "Usage: !say <chan> <what>"
- return 0
- }
- set thechan [lindex $arg 0]
- set what [lrange $arg 1 end]
- if {![onchan $botnick $thechan]} {
- notice $nick "I'm not on that channel."
- return 0
- }
- puthelp "PRIVMSG $chan :$what"
- notice $nick "Said to $thechan: $what"
- putcmdlog "<<$nick>> !$hand! ($thechan) !say $what"
- }
- # Puts an action (/me) on a channel
- # Usage: !act <chan> <what>
- proc pub:act {nick host hand chan arg} {
- global botnick
- if {![auth:check $hand]} {return 0}
- if {[llength $arg] < 2} {
- notice $nick "Usage: !act <chan> <what>"
- return 0
- }
- set thechan [lindex $arg 0]
- set what [lrange $arg 1 end]
- if {![onchan $botnick $thechan]} {
- notice $nick "I'm not on that channel."
- return 0
- }
- puthelp "PRIVMSG $chan :\001ACTION $what\001"
- notice $nick "Act to $thechan: $what"
- putcmdlog "<<$nick>> !$hand! ($thechan) !act $what"
- }
- # Changes a mode on the channel
- # Usage: !mode <mode change>
- # Ex: !mode +m, !mode +k booger
- proc pub:mode {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [cleanarg $args]
- if {[llength $args]<1} {
- notice $nick "Usage: !mode <mode change>"
- return 0
- }
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- putserv "MODE $chan $args"
- putcmdlog "<<$nick>> !$hand! mode $args"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Kicks someone off the channel
- # Usage: !kick <nick> <reason>
- # Ex: !kick Joe You suck!
- proc pub:kick {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args] < 2} {
- notice $nick "Usage: !kick <nick> <reason>"
- return 0
- }
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- set who [lindex $args 0]
- set reason [lrange $args 1 end]
- putserv "KICK $chan $who :$reason"
- putcmdlog "<<$nick>> !$hand! kick $args"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Bans a nick/host off the channel
- # Usage: !ban <nick/host> <time> <reason>
- # nick/host :If you put a nick in, it will mask the host, but if you
- # put a host in, it will ban the host.
- # time: The time the ban will last (in minutes). 0 for permanent.
- proc pub:ban {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args] < 3} {
- notice $nick "Usage: !ban <nick/host> <time> <reason>"
- return 0
- }
- set who [lindex $args 0]
- set time [expr [lindex $args 1]]
- set reason [lrange $args 2 end]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- if {![onchan $who $chan]} {
- set theban $who
- } else {
- set host [getchanhost $who $chan]
- set host [maskhost $host]
- set shost [split $host "!"]
- set theban "*!*[lindex $shost 1]"
- }
- newchanban $chan $theban $nick $reason $time
- putcmdlog "<<$nick>> !$hand! ban $args"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Unbans a host from the channel
- # Usage: !unban <host>
- proc pub:unban {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !unban <host>"
- return 0
- }
- set theban [lindex $args 0]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- killchanban $chan $theban
- putcmdlog "<<$nick>> !$hand! unban $chan $theban"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Adds a user
- # Usage: !adduser <nick> [host]
- # If you leave out 'host', it will take the 'nick', and mask a host.
- proc pub:adduser {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- global botnick admin
- if {[llength $args]<1} {
- notice $nick "Usage: !adduser <nick> \[host\]"
- return 0
- }
- if {$nick == $botnick} {return 0}
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- if {[llength $args]==2} {
- set host [lindex args 1]
- } else {
- if {![onchan $who $chan]} {
- say $chan "$nick: $who is not on this channel."
- return 0
- }
- set host [maskhost [getchanhost $who $chan]]
- }
- set err [adduser $who $host]
- if {$err == 0} {
- say $chan "That nick already exists."
- return 0
- }
- putcmdlog "<<$nick>> !$hand! adduser $who $host"
- if {![onchan $who $chan]} {return 0}
- notice $who "Your account has been added with the hostmask $host."
- notice $who "Type /msg $botnick PASS <yourpass> to set your password."
- notice $who "After you have set your password, type /dcc chat $botnick to start a dcc chat session."
- notice $who "If you have any problems, please contact $admin"
- }
- # Gives someone voice in the channel
- # Usage: !voice <nick>
- proc pub:voice {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !voice <nick>"
- return 0
- }
- set who [lindex $args 0]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- putserv "MODE $chan +v $who"
- } else {
- notice $nick "You can't do that!"
- }
- putcmdlog "<<$nick>> !$hand! voice $chan $who"
- }
- # Takes away voice from someone in the channel
- # Usage: !devoice <nick>
- proc pub:devoice {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !devoice $nick"
- return 0
- }
- set who [lindex $args 0]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- putserv "MODE $chan -v $who"
- } else {
- notice $nick "You can't do that!"
- }
- putcmdlog "<<$nick>> !$hand! devoice $chan $who"
- }
- # Trys to link to another bot
- # Usage: !link <bot>
- proc pub:link {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !link <bot>"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- say $chan "$nick: Trying to link to $who..."
- set err [link $who]
- if {$err == 0} {
- say $chan "$nick: An error occured."
- }
- }
- # Unlink from a bot
- # Usage: !unlink <bot>
- proc pub:unlink {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !unlink <bot>"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- say $chan "$nick: Trying to unlink from $who..."
- set err [link $who]
- if {$err == 0} {say $chan "AAAH! An error occured!"}
- if {$err == 1} {say $chan "And... SUCCESS!"}
- }
- # Pings a person from the bot
- # Usage: !ping <nick>
- proc pub:ping {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- set who $nick
- } else {
- set who [lindex $args 0]
- }
- global pub_pingchan
- set time [unixtime]
- say $who "\001PING $time\001"
- set pub_pingchan $chan
- putcmdlog "<<$nick>> !$hand! PING $who : $time"
- }
- # This is the ping reply function.
- proc pub:pingr {nick uhost hand dest keyword args} {
- global pub_pingchan
- set temp [unixtime]
- set time [expr $temp - $args]
- putlog "PING reply from $nick: $time seconds"
- say $pub_pingchan "PING reply from $nick: $time seconds"
- }
- # Op someone in the channel
- # Usage: !op <nick>
- proc pub:op {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args] == 0 && ([matchattr $hand n] || [matchattr $hand "|n" $chan] || [matchattr $hand o $chan] || [matchattr $hand "|o" $chan])} {
- putserv "MODE $chan +o $nick"
- }
- if {[llength $args]<1} {
- notice $nick "Usage: !op <nick>"
- return 0
- }
- set who [lindex $args 0]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- putserv "MODE $chan +o $who"
- putcmdlog "<<$nick>> !$hand! op $chan $who"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Deop someone in the channel
- # Usage: !deop <nick>
- proc pub:deop {nick uhost hand chan args} {
- if {(![auth:check $hand]) && (![isop $nick $chan])} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !deop <nick>"
- return 0
- }
- set who [lindex $args 0]
- if {$hand == "*"} {return 0}
- if {([isop $hand $chan]) || ([matchattr $hand "|o" $chan]) || ([matchattr $hand "o"])} {
- putserv "MODE $chan -o $who"
- putcmdlog "<<$nick>> !$hand! deop $chan $who"
- } else {
- notice $nick "You can't do that!"
- }
- }
- # Ops you if you have op status on the bot
- # Usage: !opme
- proc pub:opme {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- putserv "MODE $chan +o $nick"
- }
- # Broadcasts a message to every channel the bot is on
- # Usage: !broadcast <message>
- # Ex: !broadcast The bot is coming down now!
- proc pub:broadcast {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set msg [cleanarg $args]
- foreach n [channels] {
- say $n $msg
- }
- }
- # Makes the bot join a channel
- # Usage: !join <#channel>
- proc pub:join {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [cleanarg $args]
- if {[llength $args]<1} {
- notice $nick "Usage: !join <#channel>"
- return 0
- }
- channel add $args {+greet -bitch -autoop -bitch -stopnethack}
- }
- # Makes the bot part a channel
- proc pub:part {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [cleanarg $args]
- if {[llength $args]<1} {
- notice $nick "Usage: !part <#channel>"
- return 0
- }
- channel remove $args
- }
- # Changes the attr of a user
- # Usage: !chattr <nick> <options> [channel]
- proc pub:chattr {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<2} {
- notice $nick "Usage: !chattr <handle> <options> \[channel\]"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- set modes [lindex $args 1]
- set channel ""
- if {[llength $args]==3} {
- set channel [lindex $args 2]
- set temp "|"
- append temp $modes
- set modes $temp
- }
- if {$channel != ""} {
- set rt [chattr $who $modes $channel]
- } else {
- set rt [chattr $who $modes]
- }
- putcmdlog "<<$nick>> !$hand! chattr $args"
- if {$channel != ""} {
- set rt [lindex [split $rt "|"] 1]
- say $chan "Modes for $who on $channel are now $rt"
- } else {
- say $chan "Global modes for $who are now $rt"
- }
- }
- # Deletes a user record
- # Usage: !deluser <handle>
- proc pub:deluser {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !deluser <handle>"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- set err [deluser $who]
- if {$err == 0} {
- say $chan "Attempt to remove $who failed."
- return 0
- }
- putcmdlog "<<$nick>> !$hand! deluser $who"
- }
- # Adds a bot
- # Usage: !addbot <handle> <address:port>
- proc pub:addbot {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<2} {
- notice $nick "Usage: !addbot <handle> <address:port>"
- return 0
- }
- if {[llength [split [lindex $args 1] ":"]]!=2} {
- notice $nick "Usage: !addbot <handle> <address:port>"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set addr [lindex $args 1]
- set who [lindex $args 0]
- addbot $who $addr
- putcmdlog "<<$nick>> !$hand! addbot $who $addr"
- }
- # Removes a bot
- # Usage: !rmbot <handle>
- proc pub:rmbot {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "Usage: !rmbot <handle>"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- deluser $who
- putcmdlog "<<$nick>> !$hand! rmbot $who"
- }
- # Adds hostmask for user
- # Usage: !addhost <handle> <host>
- proc pub:addhost {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<2} {
- notice $nick "Usage: !addhost <handle> <host>"
- return 0
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- set host [lindex $args 1]
- setuser $who HOSTS $host
- putcmdlog "<<$nick>> !$hand! addhost $who $host"
- }
- # Removes host from user
- # Usage: !rmhost <handle> <host>
- proc pub:rmhost {nick uhost hand chan args} {
- if {![auth:check $hand]} {return 0}
- set args [split [cleanarg $args]]
- if {[llength $args]<2} {
- notice $nick "Usage: !rmhost <handle> <host>"
- return 0;
- }
- if {[getting-users]} {
- notice $nick "Sorry, there is currently a userfile transfer going on. Try back in a couple of seconds."
- return 0
- }
- set who [lindex $args 0]
- set host [lindex $args 1]
- delhost $who $host
- putcmdlog "<<$nick>> !$hand! rmhost $who $host"
- }
- ##### HELP SECTION (QUITE LONG) #####
- proc pub:help {nick uhost hand chan args} {
- global botnick
- set args [split [cleanarg $args]]
- if {[llength $args]<1} {
- notice $nick "------\002Toolz Help: \002-------------------------------------------"
- notice $nick "!op <nick> - ops \002nick\002"
- notice $nick "!deop <nick> - deops \002nick\002"
- notice $nick "!ban <nick/host> <time> <reason> - bans a \002nick/host\002"
- notice $nick "!unban <host> - unbans \002host\002 from channel"
- notice $nick "!voice <nick> - gives \002nick\002 voice"
- notice $nick "!devoice <nick> - takes away \002nick\002's voice"
- notice $nick "!opme - ops you if you have access"
- notice $nick "!addbot <handle> <address:port> - adds a bot"
- notice $nick "!rmbot <handle> - removes a bot"
- notice $nick "!link <bot> - attempts to link to \002bot\002"
- notice $nick "!unlink <bot> - attempts to unlink from \002bot\002"
- notice $nick "!ping \[nick\] - pings \002nick\002, or you"
- notice $nick "!mode <mode change> - changes a mode setting on the channel"
- notice $nick "!adduser <handle/nick> \[host\] - adds a user"
- notice $nick "!deluser <handle> - removes \002handle\002 from user list"
- notice $nick "!chattr <handle> <options> \[channel\] - changes attributes for user"
- notice $nick "!part <#channel> - makes the bot leave the channel"
- notice $nick "!join <#channel> - makes the bot join a channel"
- notice $nick "!addhost <handle> <host> - adds a host to a user"
- notice $nick "!rmhost <handle> <host> - removes a host from a user"
- notice $nick "!disable <handle> - disables a handle from these commands"
- notice $nick "!enable <handle> - enables a disabled user"
- notice $nick "!act <chan> <what> - posts an action on chan"
- notice $nick "!say <chan> <what> - says something to chan"
- notice $nick "!bots - lists the bots linked on the botnet"
- notice $nick "!channels - lists the channels the bot is on"
- notice $nick "!ignore <nick/host> <time> <reason> - adds a new ignore"
- notice $nick "!unignore <host> - removes an ignore"
- notice $nick "!time - gives you the date and time"
- notice $nick "!die \[reason\] - shuts down the bot for \[reason\]"
- notice $nick "!jump <server>\[:port\] - makes the bot jump to a server"
- notice $nick "!forcebans - makes all bans match bans on bot"
- notice $nick "!rehash - rehashes the bot"
- notice $nick "!reload - reloads the userfile"
- notice $nick "!restart - restarts the bot"
- notice $nick "!save - saves the userfile and channel file"
- notice $nick "!backup - backs up the userfile"
- notice $nick "!banlist - gives you a banlist for global & channel bans"
- notice $nick "!ignorelist - gives you a list of ignores"
- notice $nick "!flags <handle> - gives you handle's global flags"
- notice $nick "!status - gives you some statistics"
- notice $nick "!chanset <chan> <mode> \[args\] - changes a channel setting"
- notice $nick "!help <command> - gives a detailed explaination of \002command\002"
- notice $nick "---------------------------------------------------------"
- notice $nick "------- type \002 !help <command>\002 to get more info ----------"
- notice $nick "\002NOTE: Before using any of there commands, you must\002"
- notice $nick "\002authenticate yourself with the bot by typeing:\002"
- notice $nick "\002/msg $botnick auth <your password>\002"
- #end
- } else {
- #start another long section
- switch [lindex $args 0] {
- "time" {
- notice $nick "\002-----time-----\002"
- notice $nick "Usage: !time"
- notice $nick "Flags Needed: none"
- notice $nick " Tells you the current date and time."
- }
- "bots" {
- notice $nick "\002-----bots-----\002"
- notice $nick "Usage: !bots"
- notice $nick "Flags Needed: party line (+p)"
- notice $nick " Tells you the bots on the botnet."
- }
- "channels" {
- notice $nick "\002-----channels-----\002"
- notice $nick "Usage: !channels"
- notice $nick "Flags Needed: channel or bot master"
- notice $nick " Tells you the channels the bot is on."
- }
- "ignore" {
- notice $nick "\002-----ignore-----\002"
- notice $nick "Usage: !ignore <nick/host> <time> <reason>"
- notice $nick "Flags Needed: global op"
- notice $nick " Creates a new ignore. If nick is on the channel,"
- notice $nick " it will get a hostmask from him, otherwise, it will"
- notice $nick " get it from the one you specify."
- }
- "unignore" {
- notice $nick "\002-----unignore-----\002"
- notice $nick "Usage: !unignore <host>"
- notice $nick "Flags Needed: global op"
- notice $nick " Removes the ignore matching host."
- }
- "chanset" {
- notice $nick "\002-----chanset-----\002"
- notice $nick "Usage: !chanset <chan> <mode> \[args\]"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Works just like the .chanset dcc command."
- }
- "status" {
- notice $nick "\002-----status-----\002"
- notice $nick "Usage: !status"
- notice $nick "Flags Needed: channel or bot master"
- notice $nick " Gives you some statistics about the bot."
- }
- "channels" {
- notice $nick "\002-----flags-----\002"
- notice $nick "Usage: !flags <handle>"
- notice $nick "Flags Needed: channel or bot master"
- notice $nick " Gives you the global flags of handle."
- }
- "ignorelist" {
- notice $nick "\002-----ignorelist-----\002"
- notice $nick "Usage: !ignorelist"
- notice $nick "Flags Needed: channel or bot op"
- notice $nick " Gives you a list of active ignores."
- }
- "banlist" {
- notice $nick "\002-----banlist-----\002"
- notice $nick "Usage: !banlist"
- notice $nick "Flags Needed: channel or bot op"
- notice $nick " Gives you a list of bans."
- }
- "save" {
- notice $nick "\002-----save-----\002"
- notice $nick "Usage: !save"
- notice $nick "Flags Needed: bot master"
- notice $nick " Saves the userfile and channel file to disk."
- }
- "reload" {
- notice $nick "\002-----reload-----\002"
- notice $nick "Usage: !reload"
- notice $nick "Flags Needed: bot master"
- notice $nick " Reloads the userfile from disk."
- }
- "rehash" {
- notice $nick "\002-----rehash-----\002"
- notice $nick "Usage: !rehash"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Rehashes the bot."
- }
- "restart" {
- notice $nick "\002-----restart-----\002"
- notice $nick "Usage: !restart"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Restarts the bot."
- }
- "backup" {
- notice $nick "\002-----backup-----\002"
- notice $nick "Usage: !backup"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Backs up the user file."
- }
- "forcebans" {
- notice $nick "\002-----forcebans-----\002"
- notice $nick "Usage: !forcebans"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Makes the bans on the channel match all bans in the bot's"
- notice $nick " ban list."
- }
- "jump" {
- notice $nick "\002-----jump-----\002"
- notice $nick "Usage: !jump <server>\[:port\]"
- notice $nick "Flags Needed: bot master"
- notice $nick " Jumps to server on optional port."
- }
- "die" {
- notice $nick "\002-----die-----\002"
- notice $nick "Usage: !die \[reason\]"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Shuts down the bot for optional reason."
- }
- "help" {
- notice $nick "Dumbo."
- }
- "say" {
- notice $nick "\002-----say-----\002"
- notice $nick "Usage: !say <chan> <what>"
- notice $nick "Flags Needed: global op on bot"
- notice $nick " Will say \002what\002 to \002chan\002."
- }
- "act" {
- notice $nick "\002-----act-----\002"
- notice $nick "Usage: !act <chan> <what>"
- notice $nick "Flags Needed: global op on bot"
- notice $nick " Will post an action of \002what\002 to \002chan\002."
- }
- "op" {
- notice $nick "\002-----op-----\002"
- notice $nick "Usage: !op <nick>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " Ops \002nick\002 on the current channel."
- }
- "disable" {
- notice $nick "\002-----disable-----\002"
- notice $nick "Usage: !disable <handle>"
- notice $nick "Flags Needed: owner on bot"
- notice $nick " Disables \002handle\002 from using all ! commands."
- }
- "enable" {
- notice $nick "\002-----enable-----\002"
- notice $nick "Usage: !enable <handle>"
- notice $nick "Flags Needed: owner on bot"
- notice $nick " Enables \002handle\002 to use all ! commands."
- notice $nick " NOTE: Only needed if user has been \002!disable\002'ed."
- }
- "deop" {
- notice $nick "\002-----deop-----\002"
- notice $nick "Usage: !deop <nick>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " Deops \002nick\002 on the current channel."
- }
- "ban" {
- notice $nick "\002-----ban-----\002"
- notice $nick "Usage: !ban <nick/host> <time> <reason>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " If \002nick\002 is on the channel, it will get a"
- notice $nick " hostmask and ban that. If not, it will take the"
- notice $nick " host and ban that instead. \002time\002 is the amount"
- notice $nick " of time in minutes that the ban will last. Putting 0"
- notice $nick " in this field means a permanent ban. \002reason\002 is"
- notice $nick " the reason why you banned the nick (can be anything)."
- }
- "unban" {
- notice $nick "\002-----unban-----\002"
- notice $nick "Usage: !unban <host>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " Unbans \002host\002 from the channel. It can contain"
- notice $nick " wildcards. Ex: !unban *!*Candy*@*.aol.com"
- }
- "voice" {
- notice $nick "\002-----voice-----\002"
- notice $nick "Usage: !voice <nick>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " Gives voice to \002nick\002 on current channel."
- }
- "devoice" {
- notice $nick "\002-----devoice-----\002"
- notice $nick "Usage: !devoice <nick>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " Takes away op from \002nick\002."
- }
- "opme" {
- notice $nick "\002-----opme-----\002"
- notice $nick "Usage: !opme"
- notice $nick "Flags Needed: op on bot"
- notice $nick " Gives you op on the channel"
- }
- "link" {
- notice $nick "\002-----link-----\002"
- notice $nick "Usage: !link <bot>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Attempts to link to \002bot\002."
- }
- "unlink" {
- notice $nick "\002-----unlink-----\002"
- notice $nick "Usage: !unlink <bot>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Attempts to unlink from \002bot\002."
- }
- "ping" {
- notice $nick "\002-----ping-----\002"
- notice $nick "Usage: !ping \[nick\]"
- notice $nick "Flags Needed: partyline access"
- notice $nick " Pings \002nick\002 and prints the time on the channel."
- notice $nick " If no nick is given, it will ping you."
- }
- "mode" {
- notice $nick "\002-----mode-----\002"
- notice $nick "Usage: !mode <mode change>"
- notice $nick "Flags Needed: op on channel, or op on bot"
- notice $nick " Changes a mode on the channel specified by \002mode change\002."
- notice $nick " Ex: !mode +m"
- }
- "adduser" {
- notice $nick "\002-----adduser-----\002"
- notice $nick "Usage: !adduser <nick> \[host\]"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Adds a user to the userlist with \002nick\002 as their"
- notice $nick " handle. If they are on the channel, and no \002host\002"
- notice $nick " is specified, it will get a hostmask from the channel."
- notice $nick " Otherwise, it will use the host you specify."
- }
- "part" {
- notice $nick "\002-----part-----\002"
- notice $nick "Usage: !part <#channel>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Makes the bot part a channel."
- }
- "join" {
- notice $nick "\002-----join-----\002"
- notice $nick "Usage: !join <#channel>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Makes the bot leave the channel."
- }
- "chattr" {
- notice $nick "\002-----chattr-----\002"
- notice $nick "Usage: !chattr <handle> <options> \[channel\]"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Changes the flags (\002options\002) of a user (\002handle\002)."
- notice $nick " If \002channel\002 is specified, it will change the channel flags for"
- notice $nick " the user."
- }
- "deluser" {
- notice $nick "\002-----deluser-----\002"
- notice $nick "Usage: !deluser <handle>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Completely removes a user record from the bot."
- }
- "addbot" {
- notice $nick "\002-----addbot-----\002"
- notice $nick "Usage: !addbot <handle> <address:port>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Adds a bot to the user file. You should know how to use"
- notice $nick " this if you are an owner of the bot."
- }
- "rmbot" {
- notice $nick "\002-----rmbot-----\002"
- notice $nick "Usage: !rmbot <handle>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Removes a bot user record from the bot."
- }
- "addhost" {
- notice $nick "\002-----addhost-----\002"
- notice $nick "Usage: !addhost <handle> <host>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Adds \002host\002 to user record for \002handle\002."
- }
- "rmhost" {
- notice $nick "\002-----rmhost-----\002"
- notice $nick "Usage: !rmhost <handle> <host>"
- notice $nick "Flags Needed: bot owner"
- notice $nick " Removes host from \002handle\002."
- }
- "sex" {
- notice $nick "Go talk to a shrink."
- }
- "me" {
- notice $nick "I can do that!"
- notice $nick "Just type \002!help\002 for commands."
- }
- "him" {
- notice $nick "Sorry, I can't help him."
- }
- }
- }
- }
- proc pub:helpa {nick uhost hand chan args} {
- pub:help $nick $uhost $hand $chan $args
- }
- ##### BADWORD #####
- proc badword:kick {nick uhost hand chan text} {
- if {$hand != "*"} {
- if {([matchattr $hand "n"]) || ([matchattr $hand "m"]) || ([matchattr $hand "|m" $chan]) || ([matchattr $hand "|n" $chan]) || ([matchattr $hand "f"]) || ([matchattr $hand "|f" $chan])} {
- return 0
- }
- }
- putserv "KICK $chan $nick :Shame on you! Using those words in public!"
- }
- ##### REMIND USERS #####
- proc toolz:remind_users {} {
- global botnick
- foreach n [userlist] {
- if {[passwdok $n ""]} {
- say $n "Your password on me has not been set yet. Please set it by typing /msg $botnick PASS <password>. This message is relayed every 30 minutes."
- putlog "Reminded $n to set his/her password."
- }
- }
- timer 30 toolz:remind_users
- }
- set found 0
- foreach n [timers] {
- if {[lindex $n 1] == "toolz:remind_users"} {
- set found 1
- }
- }
- if {$found == 0} {
- timer 5 toolz:remind_users
- }
- unset found