| 
 | 
 
Joined:  May 2022 
Posts: 136  
Vogon poet 
 | 
 
OP
 
Vogon poet 
Joined:  May 2022 
Posts: 136  | 
ive tested this and it all works for me Note: ive used a stacked nicks in the on op event if your networks allows stacked kicks and modes kick #channel nick,nick,nick,nick,nick,nick  not sure on what network you are gonna use this as some networks allow stacked kicks. 
..................
alias badnick_alias {
  var %chan $1 , %nick $2
  if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30)) { kick %chan %nick please change your nick thanks you.... }  
}
.....................
I looks really great and (of course) perfectly work. Can I change badnick_alias with this: 
alias badnick_alias {
  var %chan $1 , %nick $2
if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
    notice %nick FIRST WARN
    .timer 1 30 badnick_alias %chan %nick 30
    .timer 1 45 badnick_alias %chan %nick 45
    .timer 1 60 badnick_alias %chan %nick 60
    return
  }
  elseif ($3 == 30) notice %nick SECOND WARN
  elseif ($3 == 45) notice %nick LAST WARN
  elseif ($3 == 60) kick %chan %nick KICK
}So to give warning to user and kick after 60 sec?  
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  Nov 2021 
Posts: 166  
Vogon poet 
 | 
 
 
Vogon poet 
Joined:  Nov 2021 
Posts: 166  | 
this seems to work  for me : 
on !*:JOIN:#:{
  if (!$Timer($+(CheckNicks,.,$network,.,$chan,.,$nick))) {   .Timer $+ $+(CheckNicks,.,$network,.,$chan,.,$nick)  -md 1 750 badnick_alias $unsafe($chan) $nick  } 
}
ON *:nick:{
  haltdef
  var %whloop = 1
  while ( $comchan($newnick,%whloop) != $null )  {
    var %chan $v1
    if (!$nick(%chan,$newnick,@&~%) && $nick(%chan,$me,@&~%)) { badnick_alias %chan $newnick  }
    inc %whloop
  }
  halt
}
ON *:op:#test:{
  if ($opnick == $me) {
    var %loop = 1, %nick , %kickmsg = please change your nick thank you.... 
    while (%loop <= $nick($chan,0)) {
      %nick = $nick($chan,%loop)
      if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30)) { 
        if (!$nick($chan,%nick,~&@%+)) { var %kick = $addtok(%kick,%nick,44) }
        if ($numtok(%kick,44) == 4) { kick $chan %kick %kickmsg | unset %kick }      
      }  
      inc %loop 1
    }
  }
  if (%kick) { kick $chan %kick %kickmsg }
}
alias badnick_alias {
  var %chan $1 , %nick $2
  if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
    if (!$Timer($+(CheckNickZ,.,$network,.,%chan,.,%nick))) {   
      NOTICE %nick FIRST WARNING
      .Timer $+ $+(CheckNickZ,.,$network,.,%chan,.,%nick)  3 15 badnick_still_on_chan $unsafe(%chan) %nick  
    } 
  }
}
alias badnick_still_on_chan {
  inc % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] 
  if ($2 ison $1 && % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] < 3) { NOTICE $2 % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] WARNINGS } 
  elseif ( % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] == 3 && $2 ison $1 ) { kick $1 $2 % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] WARNINGS | .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset % $+ $+(CheckWarnings,.,$network,.,$1,.,$2)  }
  elseif ($2 !ison $1) {  .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ]  }
}
 
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  May 2022 
Posts: 136  
Vogon poet 
 | 
 
OP
 
Vogon poet 
Joined:  May 2022 
Posts: 136  | 
I'll test it Simo. Stay tuned   And of course thanks so so much for Your help  
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  Jul 2020 
Posts: 15  
Pikka bird 
 | 
 
 
Pikka bird 
Joined:  Jul 2020 
Posts: 15  | 
Can you help me with this remote? It works very well. The problem is this: even if the user changes their nickname, it still kicks them out of the channel. I see the error is in the time sequence. I would appreciate your help, please.  on +4!:join:#: {  
  if ( $nick != $me ) && ( $me isop $chan ) && ( $nick !isop $chan ) { 
msg $chan 4First Notice59 $nick your 4Nick It is inappropriate. Change It Within 12 Seconds in Command /3Nick New-Nick. } { .timerscriptname $+ $nick 1 12 msg $chan 4Second Notice59 $nick Change your nickname by typing /nick new-nick 4(1Last notice4) } { .timerscriptname0K $+ $nick 1 20 /ban -ku1800 $chan $nick 9 14your 3Nick is 3Incompatible with the theme of 3Channel, please3 change your nickname So 7/nick new-nick and come back. autoban of 30min. } }
on +4!:NICK:{
  if $level($newnick) != 4 ) { .timerscriptname $+ $nick off | ./timerscriptname0K $+ $nick off }
} 
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  May 2022 
Posts: 136  
Vogon poet 
 | 
 
OP
 
Vogon poet 
Joined:  May 2022 
Posts: 136  | 
Can you help me with this remote? It works very well. The problem is this: even if the user changes their nickname, it still kicks them out of the channel. I see the error is in the time sequence. I would appreciate your help, please.  on +4!:join:#: {  
  if ( $nick != $me ) && ( $me isop $chan ) && ( $nick !isop $chan ) { 
msg $chan 4First Notice59 $nick your 4Nick It is inappropriate. Change It Within 12 Seconds in Command /3Nick New-Nick. } { .timerscriptname $+ $nick 1 12 msg $chan 4Second Notice59 $nick Change your nickname by typing /nick new-nick 4(1Last notice4) } { .timerscriptname0K $+ $nick 1 20 /ban -ku1800 $chan $nick 9 14your 3Nick is 3Incompatible with the theme of 3Channel, please3 change your nickname So 7/nick new-nick and come back. autoban of 30min. } }
on +4!:NICK:{
  if $level($newnick) != 4 ) { .timerscriptname $+ $nick off | ./timerscriptname0K $+ $nick off }
}I didn't understood the rules about compatible/incompatible? nicks. When a nick is incompatible?  
Last edited by Fernet; 01/05/25 11:39 AM.
 
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  Jul 2020 
Posts: 15  
Pikka bird 
 | 
 
 
Pikka bird 
Joined:  Jul 2020 
Posts: 15  | 
that no matter how much you change your bad nickname, you will still be expelled.  on +4!:join:#: {  
  if ( $nick != $me ) && ( $me isop $chan ) && ( $nick !isop $chan ) { 
msg $chan 4First Notice59 $nick your 4Nick It is inappropriate. Change It Within 12 Seconds in Command /3Nick New-Nick. } { .timerscriptname $+ $nick 1 12 msg $chan 4Second Notice59 $nick Change your nickname by typing /nick new-nick 4(1Last notice4) } { .timerscriptname0K $+ $nick 1 20 /ban -ku1800 $chan $nick 9 14your 3Nick is 3Incompatible with the theme of 3Channel, please3 change your nickname So 7/nick new-nick and come back. autoban of 30min. } }
on +4!:NICK:{
  if $level($newnick) != 4 ) { .timerscriptname $+ $nick off | ./timerscriptname0K $+ $nick off }
} [/quote]  
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  May 2022 
Posts: 136  
Vogon poet 
 | 
 
OP
 
Vogon poet 
Joined:  May 2022 
Posts: 136  | 
this seems to work  for me : 
on !*:JOIN:#:{
  if (!$Timer($+(CheckNicks,.,$network,.,$chan,.,$nick))) {   .Timer $+ $+(CheckNicks,.,$network,.,$chan,.,$nick)  -md 1 750 badnick_alias $unsafe($chan) $nick  } 
}
ON *:nick:{
  haltdef
  var %whloop = 1
  while ( $comchan($newnick,%whloop) != $null )  {
    var %chan $v1
    if (!$nick(%chan,$newnick,@&~%) && $nick(%chan,$me,@&~%)) { badnick_alias %chan $newnick  }
    inc %whloop
  }
  halt
}
ON *:op:#test:{
  if ($opnick == $me) {
    var %loop = 1, %nick , %kickmsg = please change your nick thank you.... 
    while (%loop <= $nick($chan,0)) {
      %nick = $nick($chan,%loop)
      if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30)) { 
        if (!$nick($chan,%nick,~&@%+)) { var %kick = $addtok(%kick,%nick,44) }
        if ($numtok(%kick,44) == 4) { kick $chan %kick %kickmsg | unset %kick }      
      }  
      inc %loop 1
    }
  }
  if (%kick) { kick $chan %kick %kickmsg }
}
alias badnick_alias {
  var %chan $1 , %nick $2
  if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
    if (!$Timer($+(CheckNickZ,.,$network,.,%chan,.,%nick))) {   
      NOTICE %nick FIRST WARNING
      .Timer $+ $+(CheckNickZ,.,$network,.,%chan,.,%nick)  3 15 badnick_still_on_chan $unsafe(%chan) %nick  
    } 
  }
}
alias badnick_still_on_chan {
  inc % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] 
  if ($2 ison $1 && % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] < 3) { NOTICE $2 % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] WARNINGS } 
  elseif ( % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] == 3 && $2 ison $1 ) { kick $1 $2 % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ] WARNINGS | .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset % $+ $+(CheckWarnings,.,$network,.,$1,.,$2)  }
  elseif ($2 !ison $1) {  .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset % [ $+ [ $+(CheckWarnings,.,$network,.,$1,.,$2) ] ]  }
}
I tested this code SImo. And as always is ALMOST perfetc, thanks in advance. Just 2 things (if possible): - I don't need to write 1 WARNINGS :number 1 is not necessary. Only text WARNING is enough or at least something like 2°WARNING - I need it to set a banquiet on join/nickchange (if the nick is irregular). Something like: 
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
 /mode %chan +b ~q: $+ $address($2,2)
}
Thanks  
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  Nov 2021 
Posts: 166  
Vogon poet 
 | 
 
 
Vogon poet 
Joined:  Nov 2021 
Posts: 166  | 
try this : 
on !*:JOIN:#:{
  if (!$Timer($+(CheckNicks,.,$network,.,$chan,.,$nick))) {   .Timer $+ $+(CheckNicks,.,$network,.,$chan,.,$nick)  -md 1 750 badnick_alias $unsafe($chan) $nick  } 
}
ON *:nick:{
  haltdef
  var %whloop = 1
  while ( $comchan($newnick,%whloop) != $null )  {
    var %chan $v1
    if (!$nick(%chan,$newnick,@&~%) && $nick(%chan,$me,@&~%)) { badnick_alias %chan $newnick  }
    inc %whloop
  }
  halt
}
ON *:op:#test:{
  if ($opnick == $me) {
    var %loop = 1, %nick , %kickmsg = please change your nick thank you.... 
    while (%loop <= $nick($chan,0)) {
      %nick = $nick($chan,%loop)
      if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30)) { 
        if (!$nick($chan,%nick,~&@%+)) { var %banmask = $addtok(%banmask,$MuteBanMask(%nick),32) }
        if ($numtok(%banmask,32) == 10) { mode %chan + $+ $str(b,$numtok(%banmask,32)) %banmask  | unset %banmask }      
      }  
      inc %loop 1
    }
  }
  if (%banmask) { mode %chan + $+ $str(b,$numtok(%banmask,32)) %banmask }
}
Alias MuteBanMask { return q: $+ $address($1,2) }
alias badnick_alias {
  var %chan $1 , %nick $2
  if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
    if (!$Timer($+(CheckNickZ,.,$network,.,%chan,.,%nick))) {   
      .Timer $+ $+(CheckNickZ,.,$network,.,%chan,.,%nick)  3 15 badnick_still_on_chan $unsafe(%chan) %nick  
    } 
  }
}
alias badnick_still_on_chan {
  inc $+(%,CheckWarnings,.,$network,.,$1,.,$2)
  if ($2 ison $1 && $($+(%,CheckWarnings,.,$network,.,$1,.,$2),2) < 3) { NOTICE $2  WARNING } 
  elseif ($($+(%,CheckWarnings,.,$network,.,$1,.,$2),2)  == 3 && $2 ison $1 ) { if ($+(q:$address($2,2)) !isban $1) { mode $1 +b $+(q:$address($2,2)) } | .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset % $+ $+(CheckWarnings,.,$network,.,$1,.,$2)  }
  elseif ($2 !ison $1) {  .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset $eval($+(%,CheckWarnings,.,$network,.,$1,.,$2),1)  }
}
 
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  May 2022 
Posts: 136  
Vogon poet 
 | 
 
OP
 
Vogon poet 
Joined:  May 2022 
Posts: 136  | 
Last edit doesn't work. No quiet and no ban after warn. Your previos version was perfect about ban after warn. What do You think with (about banquiet): 
Alias MuteBanMask { return /mode #MYCHANNEL +b ~q: $+ $address($2,2) }
Still working on ban after warn...  
Last edited by Fernet; 11/05/25 11:40 AM.
 
 
 |  
 
 | 
 
 
 |  
 
| 
 | 
 
Joined:  Nov 2021 
Posts: 166  
Vogon poet 
 | 
 
 
Vogon poet 
Joined:  Nov 2021 
Posts: 166  | 
on !*:JOIN:#:{
  if (!$Timer($+(CheckNicks,.,$network,.,$chan,.,$nick))) {   .Timer $+ $+(CheckNicks,.,$network,.,$chan,.,$nick)  -md 1 750 badnick_alias $unsafe($chan) $nick  } 
}
ON *:nick:{
  haltdef
  var %whloop = 1
  while ( $comchan($newnick,%whloop) != $null )  {
    var %chan $v1
    if (!$nick(%chan,$newnick,@&~%) && $nick(%chan,$me,@&~%)) { badnick_alias %chan $newnick  }
    inc %whloop
  }
  halt
}
ON *:op:#:{
  if ($opnick == $me) {
    var %loop = 1, %nick , %kickmsg = please change your nick thank you.... 
    while (%loop <= $nick($chan,0)) {
      %nick = $nick($chan,%loop)
      if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30)) { 
        if (!$nick($chan,%nick,~&@%+)) { var %banmask = $addtok(%banmask,$MuteBanMask(%nick),32) }
        if ($numtok(%banmask,32) == 10) { mode $chan + $+ $str(b,$numtok(%banmask,32)) %banmask  | unset %banmask }      
      }  
      inc %loop 1
    }
  }
  if (%banmask) { mode %chan + $+ $str(b,$numtok(%banmask,32)) %banmask }
}
Alias MuteBanMask { return ~q: $+ $address($1,2) }
alias badnick_alias {
  var %chan $1 , %nick $2
  if (%nick !ison %chan || $nick( %chan , %nick ,@&~%)) { halt }
  if ($len( %nick ) < 3 || ($calc($regex(%nick,/[A-Z]/g) * 100 / $len(%nick)) > 30))  {
    if (!$Timer($+(CheckNickZ,.,$network,.,%chan,.,%nick))) {   
      .Timer $+ $+(CheckNickZ,.,$network,.,%chan,.,%nick)  3 15 badnick_still_on_chan $unsafe(%chan) %nick  
    } 
  }
}
alias badnick_still_on_chan {
  inc $+(%,CheckWarnings,.,$network,.,$1,.,$2)
  if ($2 ison $1 && $($+(%,CheckWarnings,.,$network,.,$1,.,$2),2) < 3) { NOTICE $2  WARNING } 
  elseif ($($+(%,CheckWarnings,.,$network,.,$1,.,$2),2)  == 3 && $2 ison $1 ) { if ($MuteBanMask($2) !isban $1) { mode $1 +b $MuteBanMask($2) } | .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset % $+ $+(CheckWarnings,.,$network,.,$1,.,$2)  }
  elseif ($2 !ison $1) {  .Timer $+ $+(CheckNickZ,.,$network,.,$1,.,$2) off | unset $eval($+(%,CheckWarnings,.,$network,.,$1,.,$2),1)  }
}
 
 
 |  
 
 | 
 
 
 |  
 
 
   |  
 
 |