Hello Epic,
Код:
alias jflood {
.hadd -m jf join-max 2
.hadd -m jf time-max 3
.hadd -m jf kick-text 1[4Join1/4Part1] Slow Down!
;---------------------
;# Type 1 = nick!ident@host
;# Type 2 = nick!*@host
;# Type 3 = *!ident@host
;# Type 4 = nick!*@*
;# Type 5 = *!ident@*
;# Type 6 = *!*@host
;# Type 7 = *!*@subnet*
;---------------------
.hadd -m jf type-ban 6
}
on *:JOIN:#:{
jflood | var %jf_chan $+(jfchan-,$chan) | var %jf_nick $+(jfnick-,$chan) | var %jf_ip $gettok($address($nick,5),2,64)
if ($hget(%jf_chan,%jf_ip)) { .hinc -m %jf_chan %jf_ip 1 }
if (!$hget(%jf_chan,%jf_ip)) { .hadd -mu $+ $hget(jf,time-max) %jf_chan %jf_ip 1 | .hadd -m %jf_nick %jf_ip $nick }
if (!$window(@JoinFlood)) .window -nk0 @JoinFlood $mircexe 21
.aline -hnp @JoinFlood $chan 1[04Join Flood1] >>> $chan $hget(%jf_nick,%jf_ip) $+($chr(40),%jf_ip,$chr(41)) = $+(04,$hget(%jf_chan,%jf_ip))
if ($hget(%jf_chan,%jf_ip) >= $hget(jf,join-max)) {
;---------------------
if ($hget(jf,type-ban) == 1) .mode $chan +b $address($hget(%jf_nick,%jf_ip),5)
if ($hget(jf,type-ban) == 2) .mode $chan +b $address($hget(%jf_nick,%jf_ip),7)
if ($hget(jf,type-ban) == 3) .mode $chan +b $address($hget(%jf_nick,%jf_ip),0)
if ($hget(jf,type-ban) == 4) .mode $chan +b $+($hget(%jf_nick,%jf_ip),!*@*)
if ($hget(jf,type-ban) == 5) .mode $chan +b $+($gettok($address($hget(%jf_nick,%jf_ip),1),1,64),@*)
if ($hget(jf,type-ban) == 6) .mode $chan +b $address($hget(%jf_nick,%jf_ip),2)
if ($hget(jf,type-ban) == 7) .mode $chan +b $+(*!*@,$gettok(%jf_ip,1-2,46),.*)
;---------------------
.write -l1 $qt(scripts\BadUser\baduser.txt) $+($nick,$chr(59),%jf_ip,$chr(59),$hget(jf,kick-text))
.kick $chan $hget(%jf_nick,%jf_ip) $hget(jf,kick-text)
.hdel -sw %jf_chan %jf_ip
}
}
The code is awesome and works well. although, i have noticed 2 things while using it..
1. Nick joins : it automatically bans the user if the user uses 2 clones to join the channel at the same time.
2. Ban prompt : it prompts me that i am not an op to ban a certain user. I usually sit down in regular chatters while working and it keeps prompting me that i am not an op and hence cannot ban a person.
Below is the example :-
[10:34] <+aditya_m> ty mav
·CLONES· detected from *!*@LibraIRC-ard.gu9.5grj1g.IP : indoreMature,notsodecent [[ 2 ]]
[10:35] <+aditya_m> winterrose agarr kahe .. usko whitelily se mohabbat haii .. toh whitelily kya kahegi ..
here, indoreMature & notsodecent has common ip/host *!*@LibraIRC-ard.gu9.5grj1g.IP. The user is not an abuser but just a random chatter who enjoys joining the room using 2 different nicknames (its odd, i agree). The code detects 2 users joining with the same ip/host and adds the user into baduser.txt as requested.
Below is another instance when this happens with the same user with 2 clones and exactly same ip/host :-
[10:16] <+Eva> paint nahi karna hai... bas 200-300 lot nifty ke le lo, market green ho jayega
·CLONES· detected from *!*@LibraIRC-ard.gu9.5grj1g.IP : indoreM,matureM [[ 2 ]]
[10:16] * Racoon: You must have channel halfop access or above to set channel mode b
[10:16] * Racoon: You must be a channel half-operator
here, the code tries to ban the user but as i have no op status and as i am sitting with the regular chatters, it starts giving me this error.
The code is awesome and really hammers the abusers which keeps revolving (join/part).
p.s : is there a way to add an exception list for this? we can always add few nicks into the exception list which will not be monitored or banned.
any suggestion is welcome,
Thanks & Regards,
Sleepyhead