Update Chanban/chanban.tcl

This commit is contained in:
Teh PeGaSuS
2026-02-28 23:16:04 +01:00
parent 8ddb0e2c20
commit 509369f59d
+154 -2
View File
@@ -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]