Auto-salut greet

Contenu du snippet

J'ai essayé de faire un auto-salut le + configurable et personalisable possible, le voila ;) Tiré de mon script

Source / Exemple :


dialog BS.agreet {
  title "Auto Salut !"
  size -1 -1 178 180
  option dbu
  text "Ce système vous permet de saluer automatiquement les personnes arrivant sur IRC. Vous pouvez selectionner l'option de reconnaissance qui pseudo qui mémorise les pseudos arrivés sur un fichier temporaire s'effaçant automatiquement à chaque exit du script et/ou tous les jours à 00h00. Vous pouvez aussi configurer le temps de réponse et les phrases.", 1, 1 2 176 33, center
  box "", 2, 0 -2 178 38
  text "Phrases de salutation", 3, 1 37 52 8
  list 4, 1 45 52 59, size vsbar
  text "Phrases de retour", 5, 57 37 44 8
  list 6, 55 45 50 59, size vsbar
  text "Ajouter une phrase :", 7, 116 37 52 8
  edit "", 8, 108 46 67 10, autohs
  text "Vous pouvez mettre <nick> dans la phrase qui sera remplacé par le pseudo.", 9, 108 56 67 20, center
  button "Ajouter dans :", 10, 108 77 37 13, flat
  radio "Salut", 11, 149 76 23 8
  radio "Retour", 12, 149 83 26 8
  box "", 13, 105 32 73 71
  text "", 14, 106 93 70 8, disable center
  text "Délais de réponse : Entre", 15, 2 105 62 8
  edit "", 16, 65 104 13 10, limit 2 center
  text "et", 17, 79 105 6 8
  edit "", 18, 86 104 13 10, limit 2 center
  text "secondes.", 19, 100 105 25 8
  button "Effacer phrase", 20, 127 103 50 12, flat
  check "Mémorisation des pseudos", 21, 2 116 74 10
  button "Supprimer le fichier d'enregistrement", 22, 77 115 100 12, flat
  check "Activer/Désactiver l'auto-salut", 23, 3 168 84 8
  button "&OK", 24, 88 166 88 12, flat
  box "", 25, 1 162 176 18
  check "Ne pas saluer si votre pseudo contient :", 26, 2 128 106 10
  edit "", 27, 108 128 69 10, autohs
  text "(Pour la case du dessus et au dessous, séparer par des / sans espaces)", 28, 2 137 175 8, center
  text "Pseudos à ne pas saluer :", 30, 2 146 63 8
  edit "", 31, 66 145 111 10, autohs
  text "Salons où ne pas saluer :", 32, 2 156 63 8
  edit "", 33, 66 155 111 10, autohs
}
alias BS.agreet { dialog $iif($dialog(BS.Agreet),-x,-m) BS.Agreet BS.Agreet }
alias BS.error {
  var %u = $input($$1-,ohd,Erreur)
  halt
}
alias plur {
  if $1 !isnum { halt }
  if $1 > 1 { return s }
}
alias -l BS.Agreetload {
  did -r $dname 4,6
  if !$lines(BS-Agreet1.txt) {
    write -a BS-Agreet1.txt Salut <nick>!
    write -a BS-Agreet1.txt Hello <nick> ;)
    write -a BS-Agreet1.txt Coucouuu <nick> :)
    write -a BS-Agreet1.txt Yop yop <nick> ^^
    write -a BS-Agreet1.txt Ouéé coucou <nick> :)
    write -a BS-Agreet1.txt Slt <nick>... 
    write -a BS-Agreet1.txt Coucou $+ $str(u,$r(1,15)) <nick> ^_^
    write -a BS-Agreet1.txt Bonjour <nick> :))
    write -a BS-Agreet1.txt Wesh <nick> bien ou bien ? XD
    write -a BS-Agreet1.txt $+(Pl,$str(o,$r(1,5)),p) <nick> ^^
    write -a BS-Agreet1.txt Kikoooo <nick>
    write -a BS-Agreet1.txt Kikou <nick> ça va ?
  }
  if !$lines(BS-Agreet2.txt) {
    write -a BS-Agreet2.txt Re $+ $str(e,$r(1,15)) <nick> :)
    write -a BS-Agreet2.txt Recoucou <nick> ;)
    write -a BS-Agreet2.txt Tiens, re <nick> :)
    write -a BS-Agreet2.txt Reuh <nick>
    write -a BS-Agreet2.txt Resalut <nick> ;)
    write -a BS-Agreet2.txt Reuhh <nick>
    write -a BS-Agreet2.txt Recoucou <nick> ça va toujours ?
  }
  var %a = 1,%b = $lines(BS-Agreet1.txt),%c = $lines(BS-Agreet2.txt),%d = 1
  while $read(BS-Agreet1.txt,%a) { did -a $dname 4 $ifmatch | inc %a }
  while $read(BS-Agreet2.txt,%d) { did -a $dname 6 $ifmatch | inc %d }
  did -ra $dname 14 %b $+(salut,$plur(%b)) $+ , %c $+(retour,$plur(%c)) $+ . 
}
on *:dialog:BS.Agreet:*:*:{
  if $devent == init {
    BS.Agreetload
    var %e = $readini(BS-Options.ini,Options,Timegreet)
    if !$readini(BS-Options.ini,Options,Timegreet) { writeini -n BS-Options.ini Options Timegreet 3/7 }
    if !$readini(BS-Options.ini,Options,Greetrec) { writeini -n BS-Options.ini Options Greetrec ok }
    if !$readini(BS-Options.ini,Options,Autogreet) { writeini -n BS-Options.ini Options Autogreet ok }
    if !$readini(BS-Options.ini,Options,Nogreetnick) { writeini -n BS-Options.ini Options Nogreetnick ok }
    if !$readini(BS-Options.ini,Options,Nonickgreet) { writeini -n BS-Options.ini Options Nonickgreet oqp/away/mange/miam/dodo }
    did -ra $dname 16 $gettok(%e,1,47)
    did -ra $dname 18 $gettok(%e,2,47)
    did $iif($readini(BS-Options.ini,Options,Greetrec) == ok,-c,-u) $dname 21
    did $iif($readini(BS-Options.ini,Options,Autogreet) == ok,-c,-u) $dname 23
    did $iif($readini(BS-Options.ini,Options,Nogreetnick) == ok,-c,-u) $dname 26
    did -ra $dname 27 $readini(BS-Options.ini,Options,Nonickgreet)
    if $readini(BS-Options.ini,Options,Greetnonick) { did -ra $dname 31 $readini(BS-Options.ini,Options,Greetnonick) }
    if $readini(BS-Options.ini,Options,Greetnochan) { did -ra $dname 33 $readini(BS-Options.ini,Options,Greetnochan) }
    did $iif($did(23).state,-e,-b) $dname 4,6,8,10,11,12,16,18,20,21,22,26,27,3,5,7,9,15,17,19,28,30,31,32,33
    if !$exists(TGN.txt) { did -b $dname 22 }
    if !$did(26).state { did -b $dname 27 }
  }
  elseif $devent == sclick {
    if $did == 4 || $did == 6 { %BS.Temp.did = $did }
    if $did == 10 {
      if !$did(8) { BS.Error Tu n'as pas indiqué la phrase à enregistrer ! }
      if !$did(11).state && !$did(12).state { BS.Error Tu n'as pas séléctionné où tu voulais rajouter la phrase ! }
      write -a $+(BS-Agreet,$iif($did(11).state,1,2),.txt) $did(8)
      BS.Agreetload
    }
    elseif $did == 20 {
      if %BS.temp.did != 4 && %BS.temp.did != 6 { BS.Error Séléctionne la ligne que tu veux supprimer en cliquant dessus dans l'une des 2 listes ! }
      if !$did(%BS.temp.did).seltext { BS.Error Séléctionne la ligne dans une des 2 listes ! }
      write $+(-dl,$did(%BS.temp.did).sel) $+(BS-Agreet,$iif(%BS.temp.did == 4,1,2),.txt)
      BS.agreetload
    }
    elseif $did == 22 { if $input(Confirmer la suppression du fichier ?,yid,Confirmation) { .remove TGN.txt | did -b $dname 22 } }
    elseif $did == 24 {
      if !$did(16) || !$did(18) { BS.Error Tu n'as pas indiqué le temps en seconde entre chaque salut automatique ! }
      if $did(16) !isnum { BS.Error Le temps en seconde $+(",$did(16),") n'est pas valide ! }
      if $did(18) !isnum { BS.Error Le temps en seconde $+(",$did(18),") n'est pas valide ! }
      if $did(16) > $did(18) { BS.Error Le premier temps en seconde doit être inférieur au second ! }
      if $did(26).state && !$did(27) { BS.Error Tu as activé le système de désactivation lorsque ton pseudo contient certains mots mais tu n'as indiqué aucun mot ! }
      writeini -n BS-Options.ini Options Timegreet $+($did(16),/,$did(18))
      if $did(27) { writeini -n BS-Options.ini Options Nonickgreet $did(27) }
      writeini -n BS-Options.ini Options Greetnonick $iif($did(31),$did(31),$false)
      writeini -n BS-Options.ini Options Greetnochan $iif($did(33),$did(33),$false)
      dialog -x $dname
    }
    elseif $did == 21 { writeini -n BS-Options.ini Options Greetrec $iif($did(21).state,ok,off) }
    elseif $did == 26 {
      writeini -n BS-Options.ini Options Nogreetnick $iif($did(26).state,ok,off)
      did $iif($did(26).state,-e,-b) $dname 27
    }
    elseif $did == 23 {
      writeini -n BS-Options.ini Options Autogreet $iif($did(23).state,ok,off)
      did $iif($did(23).state,-e,-b) $dname 4,6,8,10,11,12,16,18,20,21,22,26,27,3,5,7,9,15,17,19,28,30,31,32,33
      if !$exists(TGN.txt) { did -b $dname 22 }
      if !$did(26).state { did -b $dname 27 }
    }
  }
  elseif $devent == close { unset %BS.Temp.did }
}
On *:JOIN:#:{
  if $readini(BS-Options.ini,Options,Autogreet) == ok && $nick != $me {
    if $readini(BS-Options.ini,Options,Greetnonick) {
      var %a = 1,%e = $readini(BS-Options.ini,Options,Greetnonick)
      while %a <= $calc($count(%e,/) + 1) { if $gettok(%e,%a,47) == $nick { halt } | inc %a }
    }
    if $readini(BS-Options.ini,Options,Greetnochan) {
      var %a = 1,%e = $readini(BS-Options.ini,Options,Greetnochan)
      while %a <= $calc($count(%e,/) + 1) { if $gettok(%e,%a,47) == $chan { halt } | inc %a }
    }
    if $readini(BS-Options.ini,Options,Nogreetnick) == ok {
      var %a = 1,%e = $readini(BS-Options.ini,Options,Nonickgreet)
      while %a <= $calc($count(%e,/) + 1) { if $gettok(%e,%a,47) isin $me { halt } | inc %a }
    }
    if $readini(BS-Options.ini,Options,Greetrec) == ok {
      if !$lines(TGN.txt) { goto next }
      var %a = 1,%t = $readini(BS-Options.ini,Options,timegreet)
      while $read(TGN.txt,%a) { if $nick == $ifmatch { .TimerAUTOGREET 1 $r($gettok(%t,1,47),$gettok(%t,2,47)) msg $chan $replace($read(BS-Agreet2.txt),<nick>,$nick) | halt } | inc %a }
      :next
      write -a TGN.txt $nick
    }
    var %t = $readini(BS-Options.ini,Options,timegreet)
    .TimerAUTOGREET 1 $r($gettok(%t,1,47),$gettok(%t,2,47)) msg $chan $replace($read(BS-Agreet1.txt),<nick>,$nick)
  }
}
On *:START:{ .Timer 00:00 1 1 BS.vfile }
alias BS.vfile { if $exists(TGN.txt) { .remove TGN.txt } }
Menu channel,menubar {
Auto-Salut Greet:BS.agreet
}

Conclusion :


/BS.Agreet pour le lancer

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.