# Default trigger set to ! # Commands are: # !addowner nickname # !addmaster nickname # !addgop nickname # !addchanowner nickname # !addsop nickname # !delsop nickname # !addaop nickname # !delaop nickname # !addaov nickname # !delaov nickname # JoinModes Public Commands: # Enable: !joinmodes on # Disable: !joinmodes off # JoinModes Message Command: # /msg botnick joinmodes #channel on/off # -----------EDIT BELOW------------ # Set this to whatever trigger you like. set trigger "!" # ------DONT TOUCH BELOW HERE!!!------ setudef flag joinmode proc getTrigger {} { global trigger return $trigger } bind join - * join:modes bind pub - ${trigger}addowner addowner:pub bind pub - ${trigger}addmaster addmaster:pub bind pub - ${trigger}addgop addgop:pub bind pub - ${trigger}addchanowner addcowner:pub bind pub - ${trigger}addsop addsop:pub bind pub - ${trigger}delsop delsop:pub bind pub - ${trigger}addaop addaop:pub bind pub - ${trigger}delaop delaop:pub bind pub - ${trigger}addaov addaov:pub bind pub - ${trigger}delaov delaov:pub bind pub - ${trigger}joinmodes jmode:pub bind msg - joinmodes jmode:msg proc addowner:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] n]} {return} set owneradd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addowner nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addowner nickname"; return} if {[validuser [nick2hand $owneradd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $owneradd is already a valid user."; return} if {[validuser [nick2hand $owneradd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $owneradd is already a valid user."; return} if {![onchan $owneradd $chan] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $owneradd is not even on $chan ..."; return} if {![onchan $owneradd $chan] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $owneradd is not even on $chan ..."; return} set mask *!*@[lindex [split [getchanhost $owneradd $chan] @] 1] adduser $owneradd $mask chattr $owneradd +n putquick "NOTICE $nick :Added $owneradd to the Global Owner List." putquick "NOTICE $owneradd :$nick ($hand) has added you to the Global Owner List." } proc addmaster:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] n]} {return} set masteradd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addmaster nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addmaster nickname"; return} if {[validuser [nick2hand $masteradd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $masteradd is already a valid user."; return} if {[validuser [nick2hand $masteradd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $masteradd is already a valid user."; return} if {![onchan $masteradd $chan] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $masteradd is not even on $chan ..."; return} if {![onchan $masteradd $chan] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $masteradd is not even on $chan ..."; return} set mask *!*@[lindex [split [getchanhost $masteradd $chan] @] 1] adduser $masteradd $mask chattr $masteradd +m putquick "NOTICE $nick :Added $masteradd to the Global Master List." putquick "NOTICE $masteradd :$nick ($hand) has added you to the Global Master List." } proc addgop:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] m]} {return} set gopadd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addgop nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addgop nickname"; return} if {[validuser [nick2hand $gopadd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $gopadd is already a valid user."; return} if {[validuser [nick2hand $gopadd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $gopadd is already a valid user."; return} if {![onchan $gopadd $chan] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $gopadd is not even on $chan ..."; return} if {![onchan $gopadd $chan] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $gopadd is not even on $chan ..."; return} set mask *!*@[lindex [split [getchanhost $gopadd $chan] @] 1] adduser $gopadd $mask chattr $gopadd +o putquick "NOTICE $nick :Added $gopadd to the Global OP List." putquick "NOTICE $gopadd :$nick ($hand) has added you to the Global OP List." } proc addcowner:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o]} {return} set cowneradd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addchanowner nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addchanowner nickname"; return} if {[validuser [nick2hand $cowneradd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $cowneradd is already a valid user."; return} if {[validuser [nick2hand $cowneradd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $cowneradd is already a valid user."; return} if {![onchan $cowneradd $chan] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $cowneradd is not even on $chan ..."; return} if {![onchan $cowneradd $chan] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $cowneradd is not even on $chan ..."; return} set mask *!*@[lindex [split [getchanhost $cowneradd $chan] @] 1] adduser $cowneradd $mask chattr $cowneradd |n $chan putquick "NOTICE $nick :Added $cowneradd to the Channel Owner List for $chan" putquick "NOTICE $cowneradd :$nick ($hand) has added you to the Channel Owner List for $chan" } proc addsop:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|n $chan]} {return} set sopadd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addsop nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addsop nickname"; return} if {[validuser [nick2hand $sopadd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $sopadd is already a valid user."; return} if {[validuser [nick2hand $sopadd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $sopadd is already a valid user."; return} set mask *!*@[lindex [split [getchanhost $sopadd $chan] @] 1] putquick "MODE $chan +o $sopadd" adduser $sopadd $mask chattr $sopadd |+m $chan putquick "NOTICE $nick :Added $sopadd to the SOP List for $chan" putquick "NOTICE $sopadd :$nick ($hand) has added you to the SOP List for $chan" } proc delsop:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|n $chan]} {return} set sopdel [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]delsop nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]delsop nickname"; return} if {![validuser [nick2hand $sopdel]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $sopdel is not a valid user."; return} if {![validuser [nick2hand $sopdel]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $sopdel is not a valid user."; return} putquick "MODE $chan -o $sopdel" deluser $sopdel putquick "NOTICE $nick :Deleted $sopdel from the SOP List for $chan" putquick "NOTICE $sopdel :$nick ($hand) has deleted you from the SOP List for $chan" } proc addaop:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|m $chan]} {return} set opadd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addaop nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addaop nickname"; return} if {[validuser [nick2hand $opadd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $opadd is already a valid user."; return} if {[validuser [nick2hand $opadd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $opadd is already a valid user."; return} set mask *!*@[lindex [split [getchanhost $opadd $chan] @] 1] putquick "MODE $chan +o $opadd" adduser $opadd $mask chattr $opadd |+o $chan putquick "NOTICE $nick :Added $opadd to the AOP List for $chan" putquick "NOTICE $opadd :$nick ($hand) has added you to the AOP List for $chan" } proc delaop:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|m $chan]} {return} set opdel [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]delaop nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]delaop nickname"; return} if {![validuser [nick2hand $opdel]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $opdel is not a valid user."; return} if {![validuser [nick2hand $opdel]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $opdel is not a valid user."; return} putquick "MODE $chan -o $opdel" deluser $opdel putquick "NOTICE $nick :Deleted $opdel from the AOP List for $chan" putquick "NOTICE $opdel :$nick ($hand) has deleted you from the AOP List for $chan" } proc addaov:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|o $chan]} {return} set aovadd [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]addaov nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]addaov nickname"; return} if {[validuser [nick2hand $aovadd]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $aovadd is already a valid user."; return} if {[validuser [nick2hand $aovadd]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $aovadd is already a valid user."; return} set mask *!*@[lindex [split [getchanhost $aovadd $chan] @] 1] putquick "MODE $chan +v $aovadd" adduser $aovadd $mask chattr $aovadd |+v $chan putquick "NOTICE $nick :Added $aovadd to the AOV List for $chan" putquick "NOTICE $aovadd :$nick ($hand) has added you to the AOV List for $chan" } proc delaov:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|o $chan]} {return} set aovdel [lindex [split $arg] 0] if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]delaov nickname"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]delaov nickname"; return} if {![validuser [nick2hand $aovdel]] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: $aovdel is not a valid user."; return} if {![validuser [nick2hand $aovdel]] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: $aovdel is not a valid user."; return} putquick "MODE $chan -v $aovdel" deluser $aovdel putquick "NOTICE $nick :Deleted $aovdel from the AOV List for $chan" putquick "NOTICE $aovdel :$nick ($hand) has deleted you from the AOV List for $chan" } proc jmode:pub {nick uhost hand chan arg} { if {![matchattr [nick2hand $nick] o|n $chan]} {return} if {([lindex [split $arg] 0] == "") && (![regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: [getTrigger]joinmodes on/off"; return} if {([lindex [split $arg] 0] == "") && ([regexp c [getchanmode $chan]])} {putquick "PRIVMSG $chan :ERROR: Incorrect Parameters. SYNTAX: [getTrigger]joinmodes on/off"; return} if {[lindex [split $arg] 0] == "on"} { if {[channel get $chan joinmode] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: This setting is already enabled."; return} if {[channel get $chan joinmode] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: This setting is already enabled."; return} channel set $chan +joinmode putquick "PRIVMSG $chan :Enabled Auto @/+ Modes for $chan" } if {[lindex [split $arg] 0] == "off"} { if {![channel get $chan joinmode] && ![regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :\037ERROR\037: This setting is already disabled."; return} if {![channel get $chan joinmode] && [regexp c [getchanmode $chan]]} {putquick "PRIVMSG $chan :ERROR: This setting is already disabled."; return} channel set $chan -joinmode puthelp "PRIVMSG $chan :Disabled Auto @/+ Modes for $chan" } } proc jmode:msg {nick uhost hand arg} { global botnick set chan [strlwr [lindex $arg 0]] if {![matchattr [nick2hand $nick] o|n $chan]} {return} if {([lindex [split $arg] 0] == "") && ([string match "*#*" $arg])} {putquick "NOTICE $nick :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: /msg $botnick joinmodes #channel on/off"; return} if {([lindex [split $arg] 1] == "") && ([string match "*#*" $arg])} {putquick "NOTICE $nick :\037ERROR\037: Incorrect Parameters. \037SYNTAX\037: /msg $botnick joinmodes $chan on/off"; return} if {([lindex [split $arg] 1] == "on") && ([string match "*#*" $arg])} { if {[channel get $chan joinmode]} {putquick "NOTICE $nick :\037ERROR\037: This setting is already enabled."; return} channel set $chan +joinmode putquick "NOTICE $nick :Enabled Auto @/+ Modes for $chan" } if {([lindex [split $arg] 1] == "off") && ([string match "*#*" $arg])} { if {![channel get $chan joinmode]} {putquick "NOTICE $nick :\037ERROR\037: This setting is already disabled."; return} channel set $chan -joinmode putquick "NOTICE $nick :Disabled Auto @/+ Modes for $chan" } } proc join:modes {nick uhost hand chan} { global botnick if {[string tolower $nick] != [string tolower $botnick]} { if {[channel get $chan joinmode] && [botisop $chan]} { if {[matchattr [nick2hand $nick] o]} { putquick "MODE $chan +v $nick" return 0 } if {[matchattr [nick2hand $nick] |n $chan]} { putquick "MODE $chan +o $nick" return 0 } if {[matchattr [nick2hand $nick] |m $chan]} { putquick "MODE $chan +o $nick" return 0 } if {[matchattr [nick2hand $nick] |o $chan]} { putquick "MODE $chan +o $nick" return 0 } if {[matchattr [nick2hand $nick] |v $chan]} { putquick "MODE $chan +v $nick" return 0 } } } } putlog "AddUSER+JoinMODEs: Module LOADED!"