Birthday mirc manager / gestion des anniversaires mirc

Description

Je sais pas vous mais moi j'oublie souvent de souhaiter un anniversaire, ce qui s'est d'ailleurs une nouvelle fois produit ce week-end. C'est pourquoi j'ai décidé de créer un petit soft pour mIRC qui gère les anniversaires a ma place...

C'est un petit script qui active une dialog ou divers options sont au choix : ajouter un anniv, en supprimer un, visualiser la date d'anniv d'un contact, faire une sauvegarde des anniversaires, restaurer a une date ultérieure (+/- manuellement), réinitialiser ou désactiver le script.

Une fois les dates d'anniversaire saisies, il se fait oublier (sauf si on l'appelle par la touche F11) et se réveille pour vous prévenir qu'un anniversaire va arriver 3 jours avant la date effective, la veille et le jour meme de l'anniversaire ; le script vérifie la présence d'un anniversaire dans les 3 jours a venir au démarage de mIRC ainsi que toutes les 6h de connexion. Vous pouvez bien evidemment faire a tout moment une recherche manuelle par l'interface principale (F11).

Source / Exemple :


;------------------------------------------------------------------------------------------------
; Birthday mIRC Manager version franaise par Galdinx
; galdinx@teepi.net
; http://www.teepi.net
;------------------------------------------------------------------------------------------------

;-------------------------
;;; GESTION DES EVENTS ;;;
;-------------------------

alias F11 { set %nombranniv $hget(anniv,0) | dialog -m anniv anniv }

on 1:start:{ if ((%annivmanager == 1) && (%loadanniv != 1)) {
    .hmake -s anniv 1000
    .hload anniv datanniv.hash
    verifannivauto
    .timerverifanniv 0 21600 verifannivauto
  }
}

on 1:load:{ set %loadanniv 1 | dialog -m presentanniv presentanniv }

alias -l verifannivauto {
  verifanniv3 $left($date,5)
  verifanniv1 $left($date,5)
  verifanniv0 $left($date,5)
  .timerverif 1 3 if (%detectanniv) unset %detectanniv
}

alias -l verifanniv {
  set %detectanniv 3
  verifanniv3 $left($date,5)
  verifanniv1 $left($date,5)
  verifanniv0 $left($date,5)
  .timerverif 1 3 if (%detectanniv) unset %detectanniv
}

;------------------------------
;;; GESTION DES HASH TABLES ;;;
;------------------------------

alias -l ajoutanniv {
  .hinc anniv 0
  var %n $hget(anniv,0)
  .hadd anniv $calc(3*$eval(%n) - 2) %n
  .hadd anniv $calc(3*$eval(%n) - 1) $1
  .hadd anniv $calc(3*$eval(%n)) $2
  .hsave anniv datanniv.hash
  dialog -x anniv anniv
  F11
}

alias -l supprimanniv {
  if ($?!="Etes-vous sur de vouloir supprimer $replace($hget(anniv,$calc(3*$eval($1) - 1)),_,$chr(32)) de la liste des anniversaires ?" == $true) {
    var %n $hget(anniv,0)
    .hadd anniv $calc(3*$eval($1) - 1) $hget(anniv,$calc(3*$eval(%n) - 1))
    .hadd anniv $calc(3*$eval($1)) $hget(anniv,$calc(3*$eval(%n)))
    .hdel anniv $calc(3*$eval(%n) - 2)
    .hdel anniv $calc(3*$eval(%n) - 1)
    .hdel anniv $calc(3*$eval(%n))
    .hdec anniv 0
    .hsave anniv datanniv.hash
    dialog -x anniv anniv
    F11
  }
}

alias -l backupanniv {
  mkdir c:/anniv
  .hsave anniv c:/anniv/archive_anniv_ $+ $eval($replace($date,/,_))
  dialog -m backupinfo backupinfo
}

alias -l revisanniv {
  .hfree -s anniv
  .hmake -s anniv 1000
  .hload anniv datanniv.hash
  dialog -x revisanniv revisanniv
  dialog -x anniv anniv
  F11
}

alias -l reinitanniv {
  if ($?!="Etes-vous sur de vouloir réinitialiser la liste de vos anniversaires ?" == $true) {
    .hfree -s anniv
    .hmake -s anniv 1000
    .hadd anniv 0 0
    dialog -x anniv anniv
    F11
  }
}

alias -l desactivanniv {
  if ($?!="Etes-vous sur de vouloir désactiver Birthday mIRC Manager ?" == $true) {
    unset %annivmanager
    .hfree -s anniv
    .remove datanniv.hash
    dialog -x anniv anniv
    dialog -m desactivanniv desactivanniv
  }
}

alias -l verifanniv0 {
  var %p 1
  var %n 0
  while (%p <= $hget(anniv,0)) {
    if ($hget(anniv,$calc(3*$eval(%p))) == $1) {
      set %anniv0 %anniv0 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32)) et
      inc %n
    }
    inc %p
  }
  if (%anniv0) set %anniv0 $left(%anniv0,$calc($len($eval(%anniv0)) - 3))
  if (%n > 1) dialog -m anniv02 anniv02
  elseif (%n == 1) dialog -m anniv01 anniv01
  elseif (%n == 0) { 
    set %detectanniv $calc($eval(%detectanniv) - 1)
    if (%detectanniv == 0) { unset %detectanniv | dialog -m noanniv noanniv }
  }
}

alias -l verifanniv1 {
  if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
    var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
    if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
    verifanniv12 %q
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
    verifanniv12 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
    verifanniv12 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif ($1 == 31/01) verifanniv12 01/02
  elseif ($1 == 31/03) verifanniv12 01/04
  elseif ($1 == 30/04) verifanniv12 01/05
  elseif ($1 == 31/05) verifanniv12 01/06
  elseif ($1 == 30/06) verifanniv12 01/07
  elseif ($1 == 31/07) verifanniv12 01/08
  elseif ($1 == 31/08) verifanniv12 01/09
  elseif ($1 == 30/09) verifanniv12 01/10
  elseif ($1 == 31/10) verifanniv12 01/11
  elseif ($1 == 30/11) verifanniv12 01/12
  elseif ($1 == 31/12) verifanniv12 01/01
  elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv12 01/03
  elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv12 29/02
  elseif ($1 == 29/02) verifanniv12 01/03
}

alias -l verifanniv12 {
  var %p 1
  var %n 0
  while (%p <= $hget(anniv,0)) {
    if ($hget(anniv,$calc(3*$eval(%p))) == $1) {
      set %anniv1 %anniv1 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32)) et
      inc %n
    }
    inc %p
  }
  if (%anniv1) set %anniv1 $left(%anniv1,$calc($len($eval(%anniv1)) - 3))
  if (%n > 1) dialog -m anniv12 anniv12
  elseif (%n == 1) dialog -m anniv11 anniv11
  elseif (%n == 0) { 
    set %detectanniv $calc($eval(%detectanniv) - 1)
    if (%detectanniv == 0) { unset %detectanniv | dialog -m noanniv noanniv }
  }
}

alias -l verifanniv3 {
  if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
    var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
    if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
    verifanniv32 %q
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
    verifanniv32 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
    verifanniv32 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif ($1 == 31/01) verifanniv32 01/02
  elseif ($1 == 31/03) verifanniv32 01/04
  elseif ($1 == 30/04) verifanniv32 01/05
  elseif ($1 == 31/05) verifanniv32 01/06
  elseif ($1 == 30/06) verifanniv32 01/07
  elseif ($1 == 31/07) verifanniv32 01/08
  elseif ($1 == 31/08) verifanniv32 01/09
  elseif ($1 == 30/09) verifanniv32 01/10
  elseif ($1 == 31/10) verifanniv32 01/11
  elseif ($1 == 30/11) verifanniv32 01/12
  elseif ($1 == 31/12) verifanniv32 01/01
  elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv32 01/03
  elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv32 29/02
  elseif ($1 == 29/02) verifanniv32 01/03
}

alias -l verifanniv32 {
  if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
    var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
    if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
    verifanniv33 %q
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
    verifanniv12 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
    verifanniv33 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif ($1 == 31/01) verifanniv33 01/02
  elseif ($1 == 31/03) verifanniv33 01/04
  elseif ($1 == 30/04) verifanniv33 01/05
  elseif ($1 == 31/05) verifanniv33 01/06
  elseif ($1 == 30/06) verifanniv33 01/07
  elseif ($1 == 31/07) verifanniv33 01/08
  elseif ($1 == 31/08) verifanniv33 01/09
  elseif ($1 == 30/09) verifanniv33 01/10
  elseif ($1 == 31/10) verifanniv33 01/11
  elseif ($1 == 30/11) verifanniv33 01/12
  elseif ($1 == 31/12) verifanniv33 01/01
  elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv33 01/03
  elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv33 29/02
  elseif ($1 == 29/02) verifanniv33 01/03
}

alias -l verifanniv33 {
  if (($left($1,2) >= 1) && ($left($1,2) < 28)) {
    var %q $+($calc($eval($left($1,2)) + 1),$right($1,3))
    if ($len($eval(%q)) == 4) var %q = 0 $+ $eval(%q)
    verifanniv34 %q
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 31) && (($eval($right($1,2)) == 1) || ($eval($right($1,2)) == 3) || ($eval($right($1,2)) == 5) || ($eval($right($1,2)) == 7) || ($eval($right($1,2)) == 8) || ($eval($right($1,2)) == 10) || ($eval($right($1,2)) == 12))) {
    verifanniv34 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif (($left($1,2) >= 28) && ($left($1,2) < 30) && (($eval($right($1,2)) == 4) || ($eval($right($1,2)) == 6) || ($eval($right($1,2)) == 9) || ($eval($right($1,2)) == 11))) {
    verifanniv34 $+($calc($eval($left($1,2)) + 1),$right($1,3))
  }
  elseif ($1 == 31/01) verifanniv34 01/02
  elseif ($1 == 31/03) verifanniv34 01/04
  elseif ($1 == 30/04) verifanniv34 01/05
  elseif ($1 == 31/05) verifanniv34 01/06
  elseif ($1 == 30/06) verifanniv34 01/07
  elseif ($1 == 31/07) verifanniv34 01/08
  elseif ($1 == 31/08) verifanniv34 01/09
  elseif ($1 == 30/09) verifanniv34 01/10
  elseif ($1 == 31/10) verifanniv34 01/11
  elseif ($1 == 30/11) verifanniv34 01/12
  elseif ($1 == 31/12) verifanniv34 01/01
  elseif (($1 == 28/02) && (4 \\ $right($date,4))) verifanniv34 01/03
  elseif (($1 == 28/02) && (4 // $right($date,4))) verifanniv34 29/02
  elseif ($1 == 29/02) verifanniv34 01/03
}

alias -l verifanniv34 {
  var %p 1
  var %n 0
  while (%p <= $hget(anniv,0)) {
    if ($hget(anniv,$calc(3*$eval(%p))) == $1) {
      set %anniv3 %anniv3 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32)) et
      inc %n
    }
    inc %p
  }
  if (%anniv3) set %anniv3 $left(%anniv3,$calc($len($eval(%anniv3)) - 3))
  if (%n > 1) dialog -m anniv32 anniv32
  elseif (%n == 1) dialog -m anniv31 anniv31
  elseif (%n == 0) { 
    set %detectanniv $calc($eval(%detectanniv) - 1)
    if (%detectanniv == 0) { unset %detectanniv | dialog -m noanniv noanniv }
  }
}

;--------------------------
;;; GESTION DES DIALOGS ;;;
;--------------------------

dialog presentanniv {
  title "Gestionnaire des Anniversaires mIRC"
  size -1 -1 180 60
  option dbu
  text "Bienvenue sur le Birthday mIRC Manager version française par Galdinx.",1,0 5 180 100,center
  text "Retrouvez-moi sur irc.teepi.net.",2,0 15 180 100,center
  text "Pour accéder aux fonctionnalités du script, cliquez désormais sur F11.",3,0 25 180 100,center
  button "Continuer",4,67 40 50 10
}

on *:dialog:presentanniv:init:*:{
  set %annivmanager 1
  .hmake -s anniv 1000
  .hsave anniv datanniv.hash
}

on *:dialog:presentanniv:sclick:4:{
  .hadd anniv 0 0
  .hsave anniv datanniv.hash
  unset %loadanniv
  dialog -x presentanniv presentanniv
  F11
}

dialog anniv {
  title "Gestionnaire des Anniversaires mIRC"
  size -1 -1 190 300
  option dbu
  text "Ajouter un anniversaire :", 1, 5 8 100 17
  text "Nom :",2, 5 19 50 10
  edit "" 3, 22 17 50 10
  text "Date :",4, 80 19 30 10
  edit "" 5, 98 17 30 10
  button "Ajouter", 6, 140 17 45 10
  text "Ex :",7, 5 29 30 10
  text "Paul",8, 42 29 30 10
  text "07/04",9, 105 29 30 10
  box "Liste actuelle",10, 45 40 100 153
  text "Cliquez pour sélectionner :",11, 48 50 100 100
  list 12, 47 60 96 130, extcel
  text "Date :", 13, 55 202 30 99
  edit "", 14, 80 200 30 10,read autohs
  button "Supprimer",15, 130 200 50 10
  button "Vérifier maintenant", 16, 65 220 60 10,
  button "Back up",17,30 240 50 10
  button "Révision",18,110 240 50 10
  button "Réinitialiser",19,30 260 50 10
  button "Désactiver",20,110 260 50 10
  button "Fermer", 21, 75 280 40 10, cancel
}

on *:dialog:anniv:init:*:{
  var %p 1
  while (%p <= %nombranniv) {
    did -a anniv 12 $replace($hget(anniv,$calc(3*$eval(%p) - 1)),_,$chr(32))
    inc %p
  }
  unset %nombranniv
}

on *:dialog:anniv:sclick:6:{
  if (($len($did(anniv,3)) > 0) && ($len($did(anniv,5)) == 5) && (($regex($did(anniv,5),[0-9][0-9]\/[0][0-9])) || ($regex($did(anniv,5),[0-9][0-9]\/[1][0-2])))) ajoutanniv $replace($did(anniv,3),$chr(32),_) $did(anniv,5)
  elseif (($len($did(anniv,3)) > 0) || ($len($did(anniv,5)) > 0)) dialog -m ajoutanniverror ajoutanniverror 
}

dialog ajoutanniverror {
  title "Erreur"
  size -1 -1 100 40
  option dbu
  text "      Veuillez vérifier la syntaxe de l'anniversaire à ajouter s'il vous plaît.",1,5 5 90 100
  button "Continuer",2,25 25 50 10,cancel
}

on *:dialog:anniv:sclick:12:{
  did -r anniv 14
  if ($eval($did(anniv,12).sel) > 0) did -a anniv 14 $hget(anniv,$calc(3*$eval($did(anniv,12).sel)))
}

on *:dialog:anniv:sclick:15:if ($did(anniv,12).sel > 0) supprimanniv $did(anniv,12).sel

on *:dialog:anniv:sclick:16:verifanniv

on *:dialog:anniv:sclick:17:backupanniv

dialog backupinfo {
  title "Info Backup"
  size -1 -1 140 40
  option dbu
  text "Une archive de vos anniversaires actuels a été crée dans c:\anniv\ . Conservez là précieusement.",1,5 5 130 100,center
  button "Continuer",2,45 25 50 10,cancel
}

on *:dialog:anniv:sclick:18:dialog -m revisanniv revisanniv

dialog revisanniv {
  title "Réviser votre liste d'anniversaire"
  size -1 -1 170 60
  option dbu
  text Pour restaurer votre liste d'anniversaires telle qu'elle l'était à une date ultérieure $+ $chr(44) veuillez renommer votre fichier d'archive par "datanniv.hash" $+ $chr(44) puis remplacer la version existente dans le répertoire principal de mIRC (par défaut c:\Program Files\mIRC) par celle ci. Cliquez ensuite sur ok. ,1,5 5 160 100,center
  button "OK",2,60 45 50 10
}

on *:dialog:revisanniv:sclick:2:revisanniv

on *:dialog:anniv:sclick:19:reinitanniv

on *:dialog:anniv:sclick:20:desactivanniv

dialog desactivanniv {
  title "Au revoir"
  size -1 -1 150 40
  option dbu
  text "Birthday mIRC Manager a été désactivé. Pour le réactiver, veuillez taper /load -rs <adresse de votre fichier>.",1,0 5 150 100,center
  button "ok",2,58 25 30 10,cancel
}

dialog anniv01 {
  title "ANNIVERSAIRE !!"
  size -1 -1 200 40
  option dbu
  text Attention $+ $chr(44) $eval(%anniv0) fête son anniversaire aujourd'hui !! ,1,5 8 190 100,center
  button "OK",2,75 25 50 10,cancel
}

dialog anniv02 {
  title "ANNIVERSAIRE !!"
  size -1 -1 200 40
  option dbu
  text Attention $+ $chr(44) $eval(%anniv0) fêtent leur anniversaire aujourd'hui !! ,1,5 5 190 100,center
  button "OK",2,75 25 50 10,cancel
}

on *:dialog:anniv0?:sclick:2:unset %anniv0 

dialog anniv11 {
  title "ANNIVERSAIRE DEMAIN !!"
  size -1 -1 200 40
  option dbu
  text Attention $+ $chr(44) $eval(%anniv1) fête son anniversaire demain !! ,1,5 8 190 100,center
  button "OK",2,75 25 50 10,cancel
}

dialog anniv12 {
  title "ANNIVERSAIRE DEMAIN !!"
  size -1 -1 200 40
  option dbu
  text Attention $+ $chr(44) $eval(%anniv1) fêtent leur anniversaire demain !! ,1,5 5 190 100,center
  button "OK",2,75 25 50 10,cancel
}

on *:dialog:anniv1?:sclick:2:unset %anniv1 

dialog anniv31 {
  title "ANNIVERSAIRE DANS 3 JOURS !!"
  size -1 -1 200 40
  option dbu
  text Attention $+ $chr(44) $eval(%anniv3) fête son anniversaire dans 3 jours !! ,1,5 8 190 100,center
  button "OK",2,75 25 50 10,cancel
}

dialog anniv32 {
  title "ANNIVERSAIRE DANS 3 JOURS !!"
  size -1 -1 200 40
  option dbu
  text Attention $+ $chr(44) $eval(%anniv3) fêtent leur anniversaire dans 3 jours !! ,1,5 5 190 100,center
  button "OK",2,75 25 50 10,cancel
}

on *:dialog:anniv3?:sclick:2:unset %anniv3 

dialog noanniv {
  title "PAS D'ANNIVERSAIRE !!"
  size -1 -1 200 40
  option dbu
  text Auncun anniversaire trouvé pour aujourd'hui ou demain ou dans 3 jours... ,1,5 8 190 100,center
  button "OK",2,75 25 50 10,cancel
}

Conclusion :


Pas de commentaire, le script est simple, il se comprend aisément sans.
Pas de bugs connus, cela gère les années bissextiles et tout (en revanche si vous en trouvez prévenez moi vite)
Pas d'évolution prévue tant que pas de commentaires sur son fonctionnement.
Pour les (rares) utilisateurs du Teepi-Script, pour le serveur irc.teepi.net, un executable adapté au Teepi-Script est en ligne : http://teepi.net/l/ts

Codes Sources

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.