if only we could compare nicks from nicklist with the $text and if any nick is in $text with a partial wildcard of only : on the right of nick if found like nick1763: or somenick: to strip the : and send to the section that removes nicks from $text to leave the rest to gather digit count
set nkls [chanlist $chan]
set tmptx ""
set text [stripcodes c $text]
foreach word [split $text] {
set word [string trimright $word ":"]
if {[lsearch -nocase $nkls $word] == -1} { append tmptx "$word " }
}
set digitcount [regsub -all {[[:digit:]]} $tmptx "" tmptx]
CrazyCat wrote:Ok, that's not the same proc than before, you change the way it works.
But why don't you keep the regsub given by SpiKe^^ (or mine, they are quite the same) to just clean $text of non-alphanum chars ?
because many web clients like mibbit , irccloud and perhaps others that postfix mentioned nicks with a : making it no longer correspond with the nicks in the gathered nicklist and therefor not removed and counted with the digits having it triggering a lot of false alarms
set whatsapp(maxlength) 5
set whatsapp(unsettime) 20
bind pubm - * 112345check:whatsapp
proc 112345check:whatsapp {nick host hand chan text} {
global whatsapp
set text [stripcodes c $text]
if {![string match {*[0-9]*} $text]} { return 0 }
set nkls [chanlist $chan]
set tmptx ""
foreach word [split $text] {
set word [string trimright $word ":"]
if {[lsearch -nocase -exact $nkls $word] == -1} { append tmptx "$word " }
}
set digitcount [regexp -all {\d} $tmptx]
#putserv "PRIVMSG #test :$digitcount"
if {$digitcount == 0} { return 0 }
if {[info exists whatsapp($chan:$nick)]} { incr digitcount $whatsapp($chan:$nick) }
if {($digitcount >= $whatsapp(maxlength))} {
set chost [getchanhost $nick $chan]
set bmask m:[maskhost "$nick!$chost" 2]
pushmode $chan +b $bmask
after [expr {5*1000*1}] [list pushmode $chan -b $bmask]
#putserv "PRIVMSG $nick :you have been temporary mutebanned due to: excessive digits in your sentences"
putserv "NOTICE $nick :you have been temporary mutebanned due to: excessive digits in your sentences"
array unset whatsapp $chan:$nick
return 0
}
if {![info exists whatsapp($chan:$nick)]} {
utimer $whatsapp(unsettime) [list array unset whatsapp $chan:$nick]
}
set whatsapp($chan:$nick) $digitcount
return 0
}
=> NOTE: This code has been update to reflect the fix below:) <=
Last edited by SpiKe^^ on Mon Nov 08, 2021 11:16 am, edited 3 times in total.