Optimisation code

Signaler
Messages postés
4
Date d'inscription
mardi 25 novembre 2008
Statut
Membre
Dernière intervention
25 juillet 2013
-
nooxx
Messages postés
19
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
11 juillet 2014
-
Bonjour à tous.

Je suis débutant en scripting et je crée un bot de modération pour mon salon donc il fonctionne le soucis le code est trop lourd et j'aimerai savoir comment l'optimiser a fond :p donc la principal utilisation du bot est la détection de badwords voici un bout de code :) ne vous moquez pas de moi svp :p

on 1:TEXT:*enquler*:#:{

  if (%avert. [ $+ [ $address($nick,2) ] ] == $null && %kick. [ $+ [ $address($nick,2) ] ] == $null) {
    set %avert. [ $+ [ $address($nick,2) ] ] 1
    .msg #netadmin $nick recoit sont premier avertissement pour son language sur #
    .msg $chan $read bot\ainslutes.txt 
  }
  elseif (%avert. [ $+ [ $address($nick,2) ] ] == 1) {
    set %avert. [ $+ [ $address($nick,2) ] ]  2
    .msg #netadmin $nick recoit sont 2nd avertissement pour son language sur #
    .msg $chan $read bot\ainslutes.txt 
  }
  elseif (%avert. [ $+ [ $address($nick,2) ] ] == 2) {
    set %avert. [ $+ [ $address($nick,2) ] ]  3
    .msg #netadmin $nick recoit sont 3 ème avertissement pour son language sur #
    .msg $chan $read bot\ainslutes.txt 
  }
  elseif (%avert. [ $+ [ $address($nick,2) ] ] == 3) {
    unset %avert. [ $+ [ $address($nick,2) ] ]
    set %kick. [ $+ [ $address($nick,2) ] ]  1
    .msg #netadmin $nick recoit sont premier kick pour son language sur #
    .kick # $nick $read bot\kinslutes.txt 
  }
  elseif (%kick. [ $+ [ $address($nick,2) ] ] == 1) {
    set %kick. [ $+ [ $address($nick,2) ] ]  2 
    .msg #netadmin $nick recoit sont 2nd kick pour son language sur #
    .kick # $nick $read bot\kinslutes.txt 
  }
  elseif (%kick. [ $+ [ $address($nick,2) ] ] == 2) {
    unset %kick. [ $+ [ $address($nick,2) ] ] 
    .msg #netadmin $nick recoit un ban pour son language sur #
    .ban -u 3000 $address($nick,2)  
    .kick # $nick $read bot\kinslutes.txt
  }
} 




donc voici ma question déjà je suppose que mon code est super lourd donc il y a surement moyen de l'optimiser ensuite es qu'un équivalant du ban -u existe pour le set ?
et pouvons nous regrouper tout les mots a détecter dans un fichier badwords.txt par exemple ?

on 1:TEXT:*:#:{

  if ( $1- isin badwords.txt )


un truc dans se style ?

merci d'avance pour vos rèponses

2 réponses

Messages postés
14
Date d'inscription
dimanche 1 décembre 2013
Statut
Membre
Dernière intervention
1 octobre 2014

Salut !

Moi je l'aurais fais comme suis:
;## Alias retournant $false si aucune insultes du fichier n'est détecté dans la phrase dite.
alias detect_badwords {
var %a 1, %f badwords.txt, %b $lines(%f)
while (%a <= %b) {
var %r $read(%f,%a)
echo -a * %r
if ($+(*,$$1,*) iswm %r) { return %r }
inc %a
}
return $false
}
alias warn_bot {
.msg #netadmin 04Attention, $$3 recoit sont $$2 avertissement pour ses propos sur $$1 !
.msg $$1 $read(bot\ainslutes.txt)
}
alias sanction {
.msg #netadmin 04Ah, $$2 recoit sont $$3 kick pour ses propos sur $$1 !
.kick $$1 $$2 $read(bot\kinslutes.txt)
}
On *:TEXT:*:#:{
if ($detect_dabwords($strip($1-)) != $false) {
;# 1er avertissement
if (%avert. [ $+ [ $address($nick,2) ] ] == $null) { inc %avert. [ $+ [ $address($nick,2) ] ] | warn_bot $target 1er $nick }
;# 2nd avertissement
elseif (%avert. [ $+ [ $address($nick,2) ] ] == 1) { inc %avert. [ $+ [ $address($nick,2) ] ] | warn_bot $target 2nd $nick }
;# 3ème avertissement
elseif (%avert. [ $+ [ $address($nick,2) ] ] == 2) { inc %avert. [ $+ [ $address($nick,2) ] ] | warn_bot $target 3ème $nick }
;# 1er Kick (Avec 3 avertissements)
elseif (%kick. [ $+ [ $address($nick,2) ] ] == $null && %avert. [ $+ [ $address($nick,2) ] ] == 3) { inc %kick. [ $+ [ $address($nick,2) ] ] | sanction $chan $nick 1er | unset %avert. [ $+ [ $address($nick,2) ] ] }
;# 2eme Kick
elseif (%kick. [ $+ [ $address($nick,2) ] ] == 1) { inc %kick. [ $+ [ $address($nick,2) ] ] | sanction $chan $nick 2nd }
;# 3eme Kick -> ~Ban~
elseif (%kick. [ $+ [ $address($nick,2) ] ] == 2) {
unset %kick. [ $+ [ $address($nick,2) ] ]
.msg #netadmin 04Attention ! $nick recoit un ban pour ses propos sur $target !!
.ban -u 3000 $address($nick,2)
.kick $chan $nick $read(bot\kinslutes.txt)
}
}
}

J'ai pas chercher à changer grand chose. J'ai laisser les actions que tu avais attribués. Jte laisse gerer pour la suite ;)

Amicalement, ArseeniK
nooxx
Messages postés
19
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
11 juillet 2014

Ligne 6 tu as oublié ton echo de debug il me semble
Tes lignes se répétent tu devrais regroupé quand ils font la même chose : ligne 23/25/27 il n'y a qu'une chose qui change c'est ceci 1er,2nd 3ème que tu peux très bien remettre via $replace($v1,1,1er,2,2nd,3,3ème)

Dans ton dernier elseif tu as ceci

.ban -u 3000 $address($nick,2)
.kick $chan $nick $read(bot\kinslutes.txt)

Pourquoi ne pas rassembler l'ensemble dans ta commande ban ?
ban -ku3000 $chan $nick 2 $read(bot\kinslutes.txt)

C'est tout de même déjà mieux bonne continuation
Messages postés
19
Date d'inscription
mercredi 3 octobre 2012
Statut
Membre
Dernière intervention
11 juillet 2014

Trop "lourd" non mIRC peut gerer bien pire trop répétitif tu voulais surement dire et dans ce cas oui.
Oui l'équivalent existe
set -u10 %tavariable plop
Oui on peut mais tu aurais du chercher un peu dans le site tu as des tas de codes qui t'auraient montré des solutions