Système de modération ultra complet

Contenu du snippet

Toujours dans les vieux trucs qu'on resort et qui servent bien j'ai trouvé ça. je n'en ai pas trouver d'aussi complet donc j'ai tout chamboulé mon vieux script pour retrouver celui là.

Source / Exemple :


Menu channel,nicklist {
  [Modération]:Set %modo.channel $active | Set %modo.nick $1 | /dialog -m modo modo 
}
dialog modo {
  title "Modération"
  size -1 -1 500 395
  option pixels
  tab "Modération chan", 11, 9 10 480 380
  button "Masse Modes +", 995, 50 63 90 30, tab 11
  button "Masse Modes-", 996, 160 63 90 30, tab 11
  box "Channel Modes", 119, 20 35 260 170, tab 11
  box "", 225, 32 102 57 92, tab 11
  button "+c", 223, 35 110 26 20, tab 11
  button "-c", 224, 62 110 26 20, tab 11
  button "+i", 226, 35 130 26 20, tab 11
  button "-i", 227, 62 130 26 20, tab 11
  button "+m", 228, 35 150 26 20, tab 11
  button "-m", 229, 62 150 26 20, tab 11
  button "+p", 230, 35 170 26 20, tab 11
  button "-p", 231, 62 170 26 20, tab 11
  button "+s", 232, 95 110 26 20, tab 11
  button "-s", 233, 122 110 26 20, tab 11
  box "", 234, 92 102 57 92, tab 11
  button "+u", 235, 95 130 26 20, tab 11
  button "-u", 236, 122 130 26 20, tab 11
  button "+iK", 237, 95 150 26 20, tab 11
  button "-iK", 238, 122 150 26 20, tab 11
  button "+nt", 239, 95 170 26 20, tab 11
  button "-nt", 240, 122 170 26 20, tab 11
  box "", 243, 152 102 57 92, tab 11
  button "+C", 244, 155 112 26 20, tab 11
  button "-C", 245, 182 112 26 20, tab 11
  button "+G", 246, 155 132 26 20, tab 11
  button "-G", 247, 182 132 26 20, tab 11
  button "+N", 248, 155 152 26 20, tab 11
  button "-N", 249, 182 152 26 20, tab 11
  button "+O", 250, 155 172 26 20, tab 11
  button "-O", 251, 182 172 26 20, tab 11
  button "+R", 252, 215 112 26 20, tab 11
  button "-R", 253, 242 112 26 20, tab 11
  button "+S", 254, 215 132 26 20, tab 11
  button "-S", 255, 242 132 26 20, tab 11
  button "+T", 256, 215 152 26 20, tab 11
  button "-T", 257, 242 152 26 20, tab 11
  box "", 258, 212 102 57 92, tab 11
  button "+V", 259, 215 172 26 20, tab 11
  button "-V", 260, 242 172 26 20, tab 11
  box "Channel Bans", 1010, 335 35 140 170, tab 11
  button "Bloqueur de /me", 1013, 341 53 124 20, tab 11
  button "Débloquer de /me", 1023, 341 78 124 20, tab 11
  button "Changement pseudo +b", 1014, 341 103 124 20, tab 11
  button "Changement pseudo -b", 1024, 341 128 124 20, tab 11
  button "Ban silencieux", 1015, 341 153 124 20, tab 11
  button "UnBan silencieux", 1025, 341 178 124 20, tab 11
  box "Autres Modes", 2220, 20 212 260 160, tab 11
  text "Input", 2223, 60 227 90 20, tab 11
  edit %clé, 2224, 30 240 90 20, tab 11 autohs center
  button "+k", 2225, 125 240 26 20, tab 11
  button "-k", 2226, 155 240 26 20, tab 11
  text "Clé", 2227, 205 240 80 20, tab 11
  edit %limit, 2234, 30 265 90 20, tab 11 autohs center
  button "+l", 2235, 125 265 26 20, tab 11
  button "-l", 2236, 155 265 26 20, tab 11
  text "Limite d'user", 2237, 205 265 80 20, tab 11
  edit %ulimit, 2244, 30 290 90 20, tab 11 autohs center
  button "+L", 2245, 125 290 26 20, tab 11
  button "-L", 2246, 155 290 26 20, tab 11
  text "Redirection", 2247, 205 290 80 20, tab 11
  edit %fs, 2254, 30 315 90 20, tab 11 autohs center
  button "+f", 2255, 125 315 26 20, tab 11
  button "-f", 2256, 155 315 26 20, tab 11
  text "Flood #:#", 2257, 205 315 80 20, tab 11
  edit %js, 2264, 30 340 90 20, tab 11 autohs center
  button "+j", 2265, 125 340 26 20, tab 11
  button "-j", 2266, 155 340 26 20, tab 11
  text "Joins #:#", 2267, 205 340 80 20, tab 11
  box "Mass Bans", 330, 345 282 130 100, tab 11
  button "Masse Bans +", 340, 365 307 90 30, tab 11
  button "Masse Bans -", 350, 365 345 90 30, tab 11
  check "Anti flood", 2, 352 227 100 20, tab 11
  box "Protection", 4, 347 208 128 73, tab 11
  check "Anti clone", 3, 352 247 100 20, tab 11
  tab "Modération pseudo", 21
  box "Modes Pseudo", 219, 20 35 120 230, tab 21
  text "Voice", 1201, 25 58 40 20, tab 21
  button "+v", 1202, 70 55 25 25, tab 21
  button "-v", 1203, 100 55 25 25, tab 21
  text "HalfOp", 1301, 25 88 40 20, tab 21
  button "+h", 1302, 70 85 25 25, tab 21
  button "-h", 1303, 100 85 25 25, tab 21
  text "Op", 1401, 25 118 40 20, tab 21
  button "+o", 1402, 70 115 25 25, tab 21
  button "-o", 1403, 100 115 25 25, tab 21
  text "Protect", 1501, 25 148 40 20, tab 21
  button "+a", 1502, 70 145 25 25, tab 21
  button "-a", 1503, 100 145 25 25, tab 21
  text "Owner", 1601, 25 178 40 20, tab 21
  button "+q", 1602, 70 175 25 25, tab 21
  button "-q", 1603, 100 175 25 25, tab 21
  text "Invite", 1701, 25 208 40 20, tab 21
  button "+I", 1702, 70 205 25 25, tab 21
  button "-I", 1703, 100 205 25 25, tab 21
  text "Except", 1801, 25 238 40 20, tab 21
  button "+e", 1802, 70 235 25 25, tab 21
  button "-e", 1803, 100 235 25 25, tab 21
  box "Ban Modes", 2001, 150 35 135 145, tab 21
  text "Ban normal", 2007, 160 58 90 20, tab 21
  button "+b", 2008, 220 55 25 25, tab 21
  button "-b", 2009, 250 55 25 25, tab 21
  text "Ban Pseudo", 2010, 165 88 90 20, tab 21
  button "+b", 2011, 220 85 25 25, tab 21
  button "-b", 2012, 250 85 25 25, tab 21
  text "Ban silencieux", 2013, 160 118 90 20, tab 21
  button "+b", 2014, 220 115 25 25, tab 21
  button "-b", 2015, 250 115 25 25, tab 21
  text "Kick Ban", 2016, 165 148 90 20, tab 21
  button "+b", 2017, 220 145 25 25, tab 21
  button "-b", 2018, 250 145 25 25, tab 21
  box "Avertos / Kick / Ban", 100, 293 35 185 100, tab 21
  text "Raison", 503, 305 50 90 20, tab 21
  edit %raison1, 603, 305 65 160 20, tab 21 autohs center
  button "Avertos", 1101, 305 88 42 40, tab 21
  button "Kick", 1102, 366 88 40 40, tab 21
  button "Ban", 1103, 427 88 40 40, tab 21
  box "Invite", 101, 293 136 185 100, tab 21
  text "Nick", 2503, 305 153 90 20, tab 21
  edit %nick, 2504, 305 168 90 20, tab 21 autohs center
  text "Channel", 2505, 305 195 90 20, tab 21
  edit %channel, 2506, 305 210 90 20, tab 21 autohs center
  button "Invite", 2507, 415 175 50 50, tab 21
  combo 1, 293 245 185 100, tab 21
  button "Rafraichir", 1111, 293 340 185 30, tab 21
  box "Ignore / Silence", 123, 150 185 135 81, tab 21
  button "I 15", 124, 155 200 30 25, tab 21
  button "I 30", 125, 187 200 30 25, tab 21
  button "I 45", 126, 219 200 30 25, tab 21
  button "I 60", 127, 252 200 30 25, tab 21
  button "S 15", 128, 155 235 30 25, tab 21
  button "S 30", 129, 187 235 30 25, tab 21
  button "S 45", 130, 219 235 30 25, tab 21
  button "S 60", 131, 252 235 30 25, tab 21
  box "Masse modes nick", 30, 20 270 120 100, tab 21
  button "Masse Modes +", 31, 35 290 90 30, tab 21
  button "Masse Modes -", 32, 35 330 90 30, tab 21
  box "Masse Bans", 33, 150 270 135 100, tab 21
  button "Masse Bans +", 34, 175 290 90 30, tab 21
  button "Masse Bans -", 35, 175 330 90 30, tab 21
}

on *:dialog:modo:*:*:{ 
  if ($devent == init) { 
    set %modo.channel $active
    var %total = $nick($active,0) , %x = 1
    while ( %x <= %total ) {
      did -i $dname 1 %x $nick($active,%x)
    inc %x }
  }
  if ($devent == sclick) {
    var %total = $nick($active,0), %x = 1
    if ($did == 1111) {    
      while ( %x <= %total ) {
        did -r $dname 1 %x $nick($active,%x) 
        timer -h 1 1 did -o $dname 1 %x $nick($active,%x) 
        inc %x
      } 
    } 
    elseif ($did == 31)  mode $active + $+ $$?="Modes?"  $$?="Nicks?" 
    elseif ($did == 32)  mode $active - $+ $$?="Modes?"  $$?="Nicks?" 
    elseif ($did == 34)  mode $active + $+ $$?="Bans?"  $$?="Nicks?"   
    elseif ($did == 35)  mode $active - $+ $$?="Bans?"  $$?="Nicks?"  
    elseif ($did == 124)  { ignore $did(1).seltext | echo $active * $did(1).seltext $+ !*@* a été ajouter dans la liste des ignorer pendant 15 minutes | timer 1 900 switch -u | timer 1 902 echo $active * $did(1).seltext $+ !*@* a été effacer de la liste des ignorer }
    elseif ($did == 125) { ignore $did(1).seltext | echo $active *  $did(1).seltext $+ !*@* a été ajouter dans la liste des ignorer pendant 30 minutes | timer 1 1800 switch -u | timer 1 1802 echo $active * $did(1).seltext $+ !*@* à été effacer de la liste des ignorer }
    elseif ($did == 126) { ignore $did(1).seltext | echo $active * $did(1).seltext $+ !*@* a été ajouter dans la liste des ignorer pendant 45 minutes | timer 1 2700 switch -u | timer 1 2702 echo $active * $did(1).seltext $+ !*@* a été effacer  de la liste des ignorer }
    elseif ($did == 127) { ignore $did(1).seltext | echo $active * $did(1).seltext $+ !*@* a été ajouter dans la liste des ignorer pendant 60 minutes | timer 1 3600 switch -u | timer 1 3602 echo $active * $did(1).seltext $+ !*@* a été effacer de la liste des ignorer }
    elseif ($did == 128) { mode $active +b ~q: $+ $address($did(1).seltext,2) | timer 1 900 switch -u }
    elseif ($did == 129) { mode $active +b ~q: $+ $address($did(1).seltext,2) | timer 1 1800 switch -u }
    elseif ($did == 130) { mode $active +b ~q: $+ $address($did(1).seltext,2) | timer 1 2700 switch -u }
    elseif ($did == 131) { mode $active +b ~q: $+ $address($did(1).seltext,2) | timer 1 3600 switch -u }
    elseif ($did isnum 223-260) { mode $active $did(modo,$did) }
    elseif ($did == 340) { mode $active + $+ $$?="Bans?"  $$?="Nicks?" $did(340) } 
    elseif ($did == 350) { mode $active - $+ $$?="Bans?"  $$?="Nicks?" $did(350) }
    elseif ($did == 995) { mode $active + $+ $$?="Modes?" $did(995) }  
    elseif ($did == 996) { mode $active - $+ $$?="Modes?" $did(996) } 
    elseif ($did == 1013) { mode $active +b ~T:block:ACTION* $did(1013) }
    elseif ($did == 1023) { mode $active -b ~T:block:ACTION* $did(1023) }
    elseif ($did == 1014) { mode $active +b ~n:*!*@* $did(1014) }
    elseif ($did == 1024) { mode $active -b ~n:*!*@* $did(1024) }
    elseif ($did == 1015) { mode $active +b ~q:*!*@* $did(1015) }
    elseif ($did == 1025) { mode $active -b ~q:*!*@* $did(1025) }
    elseif ($did == 1101) { msg $active [Avertos] $did(1).seltext  $+ : %raison1 $did(603) | timer 1 3 did -r $dname 603 | timer 1 5  unset -s %raison1  }
    elseif ($did == 1102) { kick $active $did(1).seltext %raison1  $did(603) | did -r $dname 603 | unset -s %raison1  }
    elseif ($did == 1103) { mode $active +b $address($did(1).seltext,2)  | kick $active $did(1).seltext %raison1 $did(603) | did -r $dname 603 | unset -s %raison1 }
    elseif ($did isnum 1203-1803) { mode $active $did(modo,$did) $did(1).seltext $did(modo,$did) }     
    elseif ($did == 2008) { mode $active +b $address($did(1).seltext,2) $did(2008) }
    elseif ($did == 2009) { mode $active -b $address($did(1).seltext,2) $did(2009) }
    elseif ($did == 2011) { mode $active +b ~n: $+ $address($did(1).seltext,2) $did(2011) }
    elseif ($did == 2012) { mode $active -b ~n: $+ $address($did(1).seltext,2) $did(2012) }
    elseif ($did == 2014) { mode $active +b ~q: $+ $address($did(1).seltext,2) $did(2014) }
    elseif ($did == 2015) { mode $active -b ~q: $+ $address($did(1).seltext,2) $did(2015) }
    elseif ($did == 2017) { mode $active +b $address($did(1).seltext,2) $did(2017) | kick $active $did(1).seltext }
    elseif ($did == 2018) { mode $active -b $address($did(1).seltext,2) $did(2018) }
    elseif ($did == 2225) { mode $active +k %clé $did(2224) | did -r $dname 2224 | unset -s %clé }
    elseif ($did == 2226) { mode $active -k %clé $did(2224)  | did -r $dname 2224 | unset -s %clé }
    elseif ($did == 2235) { mode $active +l %limit $did(2234)  | did -r $dname 2234 | unset -s %limit }
    elseif ($did == 2236) { mode $active -l %limit $did(2234)  | did -r $dname 2234 | unset -s %limit }
    elseif ($did == 2245) { mode $active +L %ulimit $did(2244)  | did -r $dname 2244 | unset -s %ulimit }
    elseif ($did == 2246) { mode $active -L %ulimit $did(2244)  | did -r $dname 2244  | unset -s %ulimit }
    elseif ($did == 2255) { mode $active +f %fs $did(2254)  | did -r $dname 2254 | unset -s %fs }
    elseif ($did == 2256) { mode $active -f %fs $did(2254)  | did -r $dname 2254 | unset -s %fs }
    elseif ($did == 2265) { mode $active +j %js $did(2264)  | did -r $dname 2264 | unset -s %js }
    elseif ($did == 2266) { mode $active -j %js $did(2264)  | did -r $dname 2264 | unset -s %js }
    elseif ($did == 2507) { invite %nick %channel $did(2504) $did(2506) | did -r $dname 2504,2506 | unset -s %nick | unset -s %channel }
    elseif ($did(2).state == 1) { flood } | else { halt }
    elseif ($did(3).state == 1) { clonejoin } | else { halt }
    	}
  }
}
alias flood {
on *:TEXT:*:#:{
  inc -u3 %flood. [ $+ [ $nick ] ]
  if (%flood. [ $+ [ $nick ] ] == 4) {
    ban $chan $address($nick,1)
    kick $chan $nick Le flood n'est pas autoriser dans $chan
  }
}
on @*:JOIN:#:{ 
  if ($ial == $false) {
    .ial on 
  }
  elseif ($chan(#).ial == $false) {
    who # 
    halt
  } 
  .timerclone $+ $nick $+ $chan 1 3 clonejoin $nick $chan $wildsite
}
alias clonejoin {
  var %total = $ialchan($3,$2,0)
  var %x 1
  while (%x <= $ialchan($3,$2,0)) {
    if ($left($ialchan($3,$2,%x).pnick,1) == @) {
      goto end
    }
    else {
      inc %x
    }
  }
  if (%total > 1 && %total < 2) { 
    notice $1 $+($chr(2),Attention:,$chr(2)) $+($1,$chr(44)) Les clones ne sont pas autoriser dans $+($2,.) Ne prenez pas d'autre clones ou vous serez banni.
  }
  elseif (%total > 3) { 
    ban -u120 $2 $1 2 
    var %i = 0 
    while (%i < %total) { 
      inc %i 
      var %nick = $ialchan($3,$2,%i).nick 
      var %all.nicks = $addtok(%all.nicks,%nick,32) 
      if (%nick !isop $2) { 
        kick $2 %nick Avoir plus de  2 clones n'est pas autoriser dans # $+ .
      } 
    } 
    echo 14 -a Attaque de clone détectée $3 $+ : %all.nicks 
  }
  :end
}

Conclusion :


amélioration, bug, commentaires, dites le moi ;)
enjoy =D

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.