Update Chanban/chanban.tcl
This commit is contained in:
+154
-2
@@ -41,6 +41,21 @@ namespace eval cmgmt {
|
||||
# 9 nick!*@*.host
|
||||
variable banMask "2"
|
||||
|
||||
# Channel flag to auto add bans to the bot ban list
|
||||
setudef flag addBans
|
||||
|
||||
# Nicks to ignore for auto adding bans
|
||||
variable noAddNicks {
|
||||
"ChanServ"
|
||||
"NickServ"
|
||||
"ChanBot"
|
||||
}
|
||||
|
||||
# Masks to ignore for auto adding bans
|
||||
variable noAddMasks {
|
||||
"*!*@services.network.tld"
|
||||
}
|
||||
|
||||
# ----------
|
||||
# Binds
|
||||
# ----------
|
||||
@@ -50,6 +65,7 @@ namespace eval cmgmt {
|
||||
bind pub * ${::cmgmt::trigger}kick ::cmgmt::kick_pub
|
||||
bind pub * ${::cmgmt::trigger}unban ::cmgmt::unban_pub
|
||||
bind pub * ${::cmgmt::trigger}banlist ::cmgmt::banlist_pub
|
||||
bind pub * ${::cmgmt::trigger}autoadd ::cmgmt::autoadd_pub
|
||||
bind pub * ${::cmgmt::trigger}opcmds ::cmgmt::opcmds_pub
|
||||
|
||||
### Private
|
||||
@@ -58,7 +74,14 @@ namespace eval cmgmt {
|
||||
bind msg * kick ::cmgmt::kick_msg
|
||||
bind msg * unban ::cmgmt::unban_msg
|
||||
bind msg * banlist ::cmgmt::banlist_msg
|
||||
bind msg * autoadd ::cmgmt::autoadd_msg
|
||||
bind msg * opcmds ::cmgmt::opcmds_msg
|
||||
|
||||
# ----------
|
||||
# Auto add bans
|
||||
# ----------
|
||||
bind mode * * ::cmgmt::abans
|
||||
|
||||
# ----------
|
||||
# End of configuration
|
||||
# ----------
|
||||
@@ -68,7 +91,24 @@ namespace eval cmgmt {
|
||||
#
|
||||
# If you touch the code below and then complain the script "suddenly stopped working" I'll touch you at night.
|
||||
# ----------
|
||||
variable scriptName "Channel Management v1.0 by PeGaSuS"
|
||||
variable scriptName "Channel Management v1.1 by PeGaSuS"
|
||||
|
||||
# ----------
|
||||
# Auto add bans
|
||||
# ----------
|
||||
proc abans {nick uhost hand chan mode target} {
|
||||
set hostmask [maskhost ${nick}![getchanhost $nick $chan] 2]
|
||||
set banReason "$::cmgmt::banReason \(auto-added\)"
|
||||
if {$mode eq "+b" && [channel get $chan addBans]} {
|
||||
if {$nick ne $::botnick && $nick ni $::cmgmt::noAddNicks && $hostmask ni $::cmgmt::noAddMasks && ![matchstr "~*" $target] && ![isban $target $chan]} {
|
||||
newchanban $chan $target $nick $banReason 0
|
||||
putserv "PRIVMSG $chan :$target auto-added to ${chan}'s ban list."
|
||||
return 0
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# ----------
|
||||
# Public procs
|
||||
@@ -253,6 +293,56 @@ namespace eval cmgmt {
|
||||
return 0
|
||||
}
|
||||
|
||||
### Auto add bans
|
||||
proc autoadd_pub {nick uhost hand chan text} {
|
||||
if {![matchattr $hand o|o $chan]} {
|
||||
putserv "NOTICE $nick :ERROR! You don't have access, ${nick}."
|
||||
return 0
|
||||
}
|
||||
|
||||
set option [lindex [split $text] 0]
|
||||
|
||||
switch $option {
|
||||
on {
|
||||
if {[channel get $chan addBans]} {
|
||||
putserv "PRIVMSG $chan :ERROR! Automatic ban adding is already enabled on ${chan}."
|
||||
return 0
|
||||
} else {
|
||||
channel set $chan +addBans
|
||||
putserv "PRIVMSG $chan :SUCCESS! Automatic ban adding enabled on ${chan}."
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
off {
|
||||
if {![channel get $chan addBans]} {
|
||||
putserv "PRIVMSG $chan :ERROR! Automatic ban adding is already disabled on ${chan}."
|
||||
return 0
|
||||
} else {
|
||||
channel set $chan -addBans
|
||||
putserv "PRIVMSG $chan :SUCCESS! Automatic ban adding disabled on ${chan}."
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
status {
|
||||
if {[channel get $chan addBans]} {
|
||||
set turned "enabled"
|
||||
} else {
|
||||
set turned "disabled"
|
||||
}
|
||||
putserv "PRIVMSG $chan :STATUS: Automatic ban adding is $turned on ${chan}."
|
||||
return 0
|
||||
}
|
||||
|
||||
default {
|
||||
putserv "PRIVMSG $chan :ERROR! Syntax ${::cmgmt::trigger}autoadd <on/off/status>"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
### OPcmds
|
||||
proc opcmds_pub {nick uhost hand chan text} {
|
||||
if {![matchattr $hand o|o $chan]} {
|
||||
@@ -260,7 +350,7 @@ namespace eval cmgmt {
|
||||
return 0
|
||||
}
|
||||
|
||||
putserv "PRIVMSG $chan :Available commands ${::cmgmt::trigger}ban, ${::cmgmt::trigger}tban, ${::cmgmt::trigger}kick, ${::cmgmt::trigger}unban, ${::cmgmt::trigger}banlist"
|
||||
putserv "PRIVMSG $chan :Available commands ${::cmgmt::trigger}ban, ${::cmgmt::trigger}tban, ${::cmgmt::trigger}kick, ${::cmgmt::trigger}unban, ${::cmgmt::trigger}banlist, ${::cmgmt::trigger}autoadd"
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -506,6 +596,68 @@ namespace eval cmgmt {
|
||||
return 0
|
||||
}
|
||||
|
||||
### Auto add bans
|
||||
proc autoadd_pub {nick uhost hand text} {
|
||||
set chan [lindex [split $text] 0]
|
||||
|
||||
if {![matchstr "#*" $chan]} {
|
||||
putserv "PRIVMSG $nick :ERROR! Syntax: autoadd <#chan> <on/off/status>"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![validchan $chan]} {
|
||||
putserv "PRIVMSG $nick :ERROR! I'm not on ${chan}!"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![matchattr $hand o|o $chan]} {
|
||||
putserv "PRIVMSG $nick :ERROR! You don't have access, ${nick}."
|
||||
return 0
|
||||
}
|
||||
|
||||
set option [lindex [split $text] 1]
|
||||
|
||||
switch $option {
|
||||
on {
|
||||
if {[channel get $chan addBans]} {
|
||||
putserv "PRIVMSG $nick :ERROR! Automatic ban adding is already enabled on ${chan}."
|
||||
return 0
|
||||
} else {
|
||||
channel set $chan +addBans
|
||||
putserv "PRIVMSG $nick :SUCCESS! Automatic ban adding enabled on ${chan}."
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
off {
|
||||
if {![channel get $chan addBans]} {
|
||||
putserv "PRIVMSG $nick :ERROR! Automatic ban adding is already disabled on ${chan}."
|
||||
return 0
|
||||
} else {
|
||||
channel set $chan -addBans
|
||||
putserv "PRIVMSG $nick :SUCCESS! Automatic ban adding disabled on ${chan}."
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
status {
|
||||
if {[channel get $chan addBans]} {
|
||||
set turned "enabled"
|
||||
} else {
|
||||
set turned "disabled"
|
||||
}
|
||||
putserv "PRIVMSG $nick :STATUS: Automatic ban adding is $turned on ${chan}."
|
||||
return 0
|
||||
}
|
||||
|
||||
default {
|
||||
putserv "PRIVMSG $nick :ERROR! Syntax autoadd <#chan> <on/off/status>"
|
||||
return 0
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
### Opcmds
|
||||
proc opcmds_msg {nick uhost hand text} {
|
||||
set chan [lindex [split $text] 0]
|
||||
|
||||
Reference in New Issue
Block a user