egghelp.org community Forum Index
[ egghelp.org home | forum home ]
egghelp.org community
Discussion of eggdrop bots, shell accounts and tcl scripts.
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

multi lines max text length within time frame
Goto page Previous  1, 2, 3
 
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Requests
View previous topic :: View next topic  
Author Message
simo
Owner


Joined: 22 Mar 2015
Posts: 894

PostPosted: Sat Jun 20, 2020 2:11 pm    Post subject: Reply with quote

does spaces get counted as well ? and if so could we take out all spaces ?
Back to top
View user's profile Send private message
CrazyCat
Owner


Joined: 13 Jan 2002
Posts: 987
Location: France

PostPosted: Sun Jun 21, 2020 4:08 am    Post subject: Reply with quote

caesar gives you the solution in another thread (detect nicks with excessive digits in it)
Code:
set length [string length [regsub -all {\ } $text ""]]

_________________
https://www.eggdrop.fr - French IRC network
Offer me a coffee - Do not ask me help in PM, we are a community.
Back to top
View user's profile Send private message Visit poster's website
simo
Owner


Joined: 22 Mar 2015
Posts: 894

PostPosted: Sun Jun 21, 2020 9:58 am    Post subject: Reply with quote

excellent thanks CrazyCat
Back to top
View user's profile Send private message
caesar
Mint Rubber


Joined: 14 Oct 2001
Posts: 3740
Location: Mint Factory

PostPosted: Mon Jun 22, 2020 12:45 am    Post subject: Reply with quote

Your regsub should be:
Code:

regsub -all {[\s]} $text ""

because that will substitute all white spaces not just space with nothing:
Code:

% set text "some        tab space"
some    tab space
% regsub -all {\ } $text ""
some    tabspace

% regsub -all {[\s]} $text ""
sometabspace
% string lengt [regsub -all {[\s]} $text ""]
12

You could go with a string map instead:
Code:

% set length [string length [string map {" " "" "     " ""} $text]]
12

or another cleaner approach with regexp:
Code:

% regexp -all -- {[^\s]} $text ""
12

that returns the length without the white space characters.

Edit: Speaking of the topic CrazyCat mentioned, here's another regexp I didn't think of last time:
Code:

% set text "fa24a22"
fa24a22
% regexp -all -- {[0-9]} $text
4
% time { regexp -all -- {[0-9]} $text } 100
3.82 microseconds per iteration

so that line turns from:
Code:

if {[string length [regsub -all {[^0-9]} $nick ""]] > 6} {
   # do whatever
}

into:
Code:

if {[regexp -all -- {[0-9]} $nick] > 6} {
   # do whatever
}

as you tried and for some reason i failed to see the proper results. Rolling Eyes
_________________
Once the game is over, the king and the pawn go back in the same box.
Back to top
View user's profile Send private message
simo
Owner


Joined: 22 Mar 2015
Posts: 894

PostPosted: Mon Jun 22, 2020 4:25 am    Post subject: Reply with quote

tnx ceasar

would that be like this?
Code:

set length [regexp -all -- {[^\s]} $text ""]
Back to top
View user's profile Send private message
caesar
Mint Rubber


Joined: 14 Oct 2001
Posts: 3740
Location: Mint Factory

PostPosted: Mon Jun 22, 2020 6:49 am    Post subject: Reply with quote

Yes, as I was testing stuff and kept editing the text i posted forgot to leave that as well.
_________________
Once the game is over, the king and the pawn go back in the same box.
Back to top
View user's profile Send private message
simo
Owner


Joined: 22 Mar 2015
Posts: 894

PostPosted: Mon Jun 22, 2020 8:49 am    Post subject: Reply with quote

Tnx caesar
Back to top
View user's profile Send private message
simo
Owner


Joined: 22 Mar 2015
Posts: 894

PostPosted: Thu Jan 06, 2022 1:32 pm    Post subject: Reply with quote

i used this code on dalnet for few days now and it doesnt seem to count all chars from multiple lines it seems to count 1 line only to match against the threshold of 250

this is what i work with at the moment

Code:

set bflood(maxlength) 250
set bflood(unsettime) 2

bind pubm - * pubm:byteflood



proc pubm:byteflood {nick host hand chan text} {

 global bflood

 if {(![botisop $chan]) || ([isop $nick $chan]) ||  ([ishalfop $nick $chan]) || ([validuser $hand] && [matchattr $hand +bfmo|fmo $chan])} {return}

 set nick [string tolower $nick]
 set chan [string tolower $chan]

 set text [stripcodes * $text]

 set length [string length $text]
 set length [regexp -all -- {[^\s]} $text ""]

 if {[info exists bflood($chan:$nick)]} {  incr length $bflood($chan:$nick)  }


 if {($length > $bflood(maxlength))} {

   if {[isvoice $nick $chan]} {  pushmode $chan -v $nick  }

    dobans:lockchanx $chan


         if {[set chost [getchanhost $nick $chan]] ne ""} {
            switch -glob -- $chost {
               {*.irccloud.com} - {*.mibbit.com} - {*.kiwiirc.com} - {*2001*67c*2f08*} - {*192.184.8.*} - {*192.184.9.*} - {*192.184.9.*} - {*192.184.10.*} {
 
            }
               {default} {
                                  set banmask [maskhost $nick!$chost 4]
                             pushmode $chan +b $banmask
               }
            }
   }
   flushmode $chan
   array unset bflood $chan:$nick
   return 0
 }

 if {![info exists bflood($chan:$nick)]} {
   utimer $bflood(unsettime) [list array unset bflood $chan:$nick]
 }

 set bflood($chan:$nick) $length
 return 0
}


bind ctcp - action pubmaction:byteflood
proc pubmaction:byteflood { nick uhost hand chan key arg } {
 if {[isbotnick $chan]} return
 pubm:byteflood $nick $uhost $hand $chan $arg
}

Back to top
View user's profile Send private message
simo
Owner


Joined: 22 Mar 2015
Posts: 894

PostPosted: Thu Jan 06, 2022 1:40 pm    Post subject: Reply with quote

i also tried using instead of

Quote:
if {($length > $bflood(maxlength))} {


this instead

Quote:
if {($bflood($chan:$nick) > $bflood(maxlength))} {



but it didnt seem to do either
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    egghelp.org community Forum Index -> Script Requests All times are GMT - 4 Hours
Goto page Previous  1, 2, 3
Page 3 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Forum hosting provided by Reverse.net

Powered by phpBB © 2001, 2005 phpBB Group
subGreen style by ktauber