############################## ### Événements journaliers ### ############################## bind time - "00 00 * * *" timer_journalier proc timer_journalier {min hour day month year} { global fichierretraitsautomatiques ### Anniversaire de membership ### set aujourdhui [string range [dire_date [unixtime]] 0 4] foreach user [userlist AGTCOJMNH] { if {$aujourdhui == [string range [dire_date [getuser $user xtra date]] 0 4]} { set nbre [getuser $user xtra date] if {$nbre != ""} { set annees [expr [string range [dire_date [unixtime]] 5 8] - [string range [dire_date $nbre] 5 8]] } else { set annees "X" } chattr $user +K dccputchan 0 "Hé [getuser $user xtra vrainick] est membre de #Aide depuis exactement $annees an(s)! Wow! ***" news_add "AideBot" "dcc" "AideBot" "&general" "[unixtime] HÉ! Toutes nos félicitations à [getuser $user xtra vrainick]! Ça fait aujourd'hui $annees an(s) qu'[mf $user "il" "elle"] est membre de #Aide!!! (Depuis le [dire_date [getuser $user xtra date]]) Laissez-lui une petite note de félicitations! :-) " } } ### Anniversaires ### foreach user [userlist AGTCOJMNH] { set safete [dire_date [getuser $user xtra ddn]] if {($aujourdhui == [string range $safete 0 4]) & ($safete != "31Dec19??")} { dccputchan 0 "C'est la fête de [getuser $user xtra vrainick] !!! ***" news_add "AideBot" "dcc" "AideBot" "&general" "[unixtime] HÉ! HÉ! C'est l'anniversaire de [getuser $user xtra vrainick] aujourd'hui !!! Laissez-lui une petite note :-)" chattr $user +K } } ### Fin du parrainage ### foreach user [userlist M] { if {[expr [unixtime] - [getuser $user xtra prom]] > 3888000} { setuser $user xtra parrain } } ### Surveillance du vocabulaire interne ### foreach user [userlist p] { set spl [getuser $user xtra sacresPL] if {$spl != ""} { setuser $user xtra sacresPL [expr [expr $spl / 2] * 2] } } if {[lindex [ctime [unixtime]] 0] == "Mon"} { foreach user [userlist] { set spl [getuser $user xtra sacresPL] if {$spl != ""} { set spl [expr $spl - 4] if {$spl < 0} {set spl 0} setuser $user xtra sacresPL $spl } } } ### Vieux .avertir à enlever ### foreach user [userlist L] { if {[expr [unixtime] - [lindex [getuser $user xtra avertir] 0]] > 864000} { foreach admin [userlist A] { sendnote AideBot $admin "Avertissement retiré! 10 jours ontpassé depuis la remarque de [lindex [getuser $user xtra avertir] 1] sur [getuser $user xtra vrainick] je l'ai donc retirée... ([lrange [getuser $user xtra avertir] 2 end])" } chattr $user -L setuser $user xtra avertir } } ### Gens à ne plus surveiller ### foreach user [userlist d|d] { if [matchattr $user ACTGOJRPMNH] { foreach admin [userlist C] { sendnote AideBot $admin "Hum, je viens de trouver une fiche de membre contenant une mention à surveiller... étrange! --> $user" } } else { set nbre [lindex [getuser $user laston] 0] if {$nbre == ""} { set nbre [unixtime] setuser $user laston $nbre } elseif {[expr [unixtime] - $nbre] > 1296000} { news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai retiré (automatiquement) la mention 'à surveiller' de sur $user (Pas revu depuis 15 jours)" deluser $user } } } ### AJC qui ne viennent plus ### set laliste "" foreach user [userlist V] { set nbre [lindex [getuser $user xtra dernierplusv] 1] if {$nbre == ""} {set nbre 0} if {[expr [unixtime] - $nbre] > 1296000} { set listev "" foreach item [getuser $user xtra plusv] { append listev ", [lindex $item 0] (x[lindex $item 1])" } exec echo "[dire_date [unixtime]] Accès AJC retiré: $user (auto): \[ Délai depuis création: [dire_delai [expr [unixtime] - [getuser $user xtra created]]] Temps +v: [expr [getuser $user xtra statsplusoncanal] / 60]\h +v reçus: ([string range $listev 2 end]) \] \[ Première prop: [dire_date [getuser $user xtra premiereprop]] Props: [llength [getuser $user xtra props]] ([getuser $user xtra props]) \] --- [getuser $user hosts]" >> $fichierretraitsautomatiques lappend laliste $user deluser $user } } if {$laliste != ""} { news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai retiré (automatiquement) $laliste des usagers ayant déjà eu un +v (Pas reçu de +v depuis 15 jours)" } ### Réunion des admins ### if {([string range [ctime [unixtime]] 0 2] == "Sun") && ([string range [ctime [unixtime]] 4 6] != [string range [ctime [expr [unixtime] + 604800]] 4 6])} { foreach user [userlist A] { sendnote AideBot $user "RÉUNION MENSUELLE DES ADMINS: Dimanche prochain ([dire_date [expr [unixtime] + 604800]]) à 15h30 HDB. Soyez-y!" } } if {([string range [ctime [unixtime]] 0 2] == "Fri") && ([string range [ctime [expr [unixtime] - 432000]] 4 6] != [string range [ctime [expr [unixtime] + 172800]] 4 6])} { foreach user [userlist A] { sendnote AideBot $user "RÉUNION MENSUELLE DES ADMINS: Dimanche prochain ([dire_date [expr [unixtime] + 172800]]) à 15h30 HDB. Soyez-y!" } } if {([string range [ctime [unixtime]] 0 2] == "Sun") && ([string range [ctime [expr [unixtime] - 604800]] 4 6] != [string range [ctime [expr [unixtime] + 0]] 4 6])} { timer 870 reunion1heure } ### Membres absents depuis X jours: ICQ & MAIL ### foreach user [userlist AGCTOJRPMN] { set estabsent [absent $user] set jours [expr [expr [unixtime] - [lindex [getuser $user laston] 0]] / 86400] if [matchattr $user A-G] { if {!$estabsent && ($jours == 5)} { avertirmembre $user "admin" 0 $jours 2 } elseif {!$estabsent && ($jours >= 7)} { prendreaction $user "admin" 0 } elseif {$estabsent && ($jours == 12)} { avertirmembre $user "admin" 1 $jours 3 } elseif {$estabsent && ($jours >= 15)} { prendreaction $user "admin" 1 } else { } } elseif [matchattr $user OJ] { if {!$estabsent && ($jours == 7)} { avertirmembre $user "op" 0 $jours 3 } elseif {!$estabsent && ($jours >= 10)} { prendreaction $user "op" 0 } elseif {$estabsent && ($jours == 15)} { avertirmembre $user "op" 1 $jours 6 } elseif {$estabsent && ($jours >= 21)} { prendreaction $user "op" 1 } else { } } else { if {!$estabsent && ($jours == 15)} { avertirmembre $user "membre" 0 $jours 6 } elseif {!$estabsent && ($jours >= 21)} { prendreaction $user "membre" 0 } elseif {$estabsent && ($jours == 40)} { avertirmembre $user "membre" 1 $jours 5 } elseif {$estabsent && ($jours >= 45)} { prendreaction $user "membre" 1 } else { } } } ### Non participant à un projet qui n'est pas venu sur le canal depuis 21 jours! ### foreach user [userlist p-U] { set estabsent [absent $user] set jours [expr [expr [unixtime] - [lindex [getuser $user laston #aide] 0]] / 86400] if {!$estabsent & ($jours == 16) & ![matchattr $user AHRP]} { avertirmembre $user "jamaiscanal" $estabsent $jours 5 } if {!$estabsent & ($jours > 20) & ![matchattr $user AHRP]} { prendreaction $user "jamaiscanal" $jours } } ### Ops ne rencontrant pas le minimum d'heure canal! ### foreach user [userlist OJ-A] { if {[getuser $user xtra presenceop] < 1} { prendreaction $user "opcanal" 0 } } ### Op adjoint qui devient op! ### foreach user [userlist J] { if {[expr [expr [unixtime] - [getuser $user xtra prom]] / 86400] > 29} { prendreaction $user "promoop" 0 } } ### Actualiser une démission! ### foreach user [userlist W] { if {[expr [expr [unixtime] - [lindex [getuser $user xtra demission] 0]] / 86400] > 2} { prendreaction $user "demission" 0 } } ### Responsables de projet n'ayant pas envoyé de news en 8 jours ### set listeprojret "" foreach user [userlist R-n] { set derniere [getuser $user xtra dernierenewsprojets] if {$derniere == ""} { set derniere [unixtime] setuser $user xtra dernierenewsprojets [unixtime] } if {[expr [expr [unixtime] - $derniere] / 86400] > 9} { lappend listeprojret $user } if {[expr [expr [unixtime] - $derniere] / 86400] > 7} { sendnote AideBot $user "Allô allô !? Il semblerait que tu aies oublié de mettre une news pour le projet (un des projets?) dont tu es responsable! Il est important que tu laisses une news au moins une fois par semaine afin de tenir les membres au courrant de la situation, même si elle n'a pas beaucoup changée! Alors: .news &projets add Merci!" } } if {$listeprojret != ""} { prendreaction $listeprojret "projet" 0 } ### Rencontre scédulée avec un Responsable de projet. ### foreach user [userlist R] { foreach projet [getuser $user xtra ETATprojet] { set d [lindex $projet 1] if {$d == ""} { set d 2000000000 } if {[unixtime] > $d} { foreach adm [userlist T] { if [string match *[lindex $projet 0]* [getuser $adm xtra projadmin]] { sendnote AideBot $user "Bonjour $user! Ceci est un petit mémo pour te rappeler que tu es supposé rencontrer $adm en tant que responsable du projet [lindex $projet 0]" sendnote AideBot $adm "Bonjour $adm! Ceci est un petit mémo pour te rappeler que tu es supposé $user en tant que superviseur[mf $adm "" "e"] du projet [lindex $projet 0]" } } } } } ### Ops ou admin n'ayant pas le quota de votel! ### foreach user [userlist A] { if {[getuser $user xtra quotavote] < 1} { prendreaction $user "quotaadmin" 0 } } foreach user [userlist OJ-A] { if {[getuser $user xtra quotavote] < 1} { prendreaction $user "quotaop" 0 } } ############################ ### Autres tâches quotidiennes # Effacer le snotes non-utilisables ... foreach user [userlist] {if ![matchattr $user pSWU] {erasenotes $user 1-100}} } proc avertirmembre {hand type absent jours ulti} { set message "Bonjour $hand! Je désire simplement te rappeler que tu es absent du canal depuis $jours jours" if $absent { append message ", et que même si tu avais signalé ton absence, " } else { append message " et, surtout parce que tu ne nous a pas signalé ton absence, " } append message "je vais donc devoir, si tu ne nous reviens pas d'ici $ulti jours, " if {$type == "admin"} { append message "demander aux admins de remettre en jeu ton poste. :-/" } elseif {$type == "op" } { append message "te retirer ton statut d'opérateur. :-/" } elseif {$type == "jamaiscanal" } { set message "Bonjour $hand! Je désire simplement te rappeler que tu n'es pas allé aider sur #Aide depuis $jours jours. :-/ Il est pourtant convenu que les membres du canal qui ne participent à aucun projet doivent venir y aider au moins une fois par deux semaines... Si tu n'y retournes pas de façon régulière d'ici $ulti jours, je serai hélas obligé de désactiver ton compte de membre :-(" } else { append message "désactiver ton compte de membre. :-/" } sendnote "AideBot" $hand "Envoyé via ICQ et Courriel: $message" sendicqdcc "AideBot" 0 "$hand $message" set email [getuser $hand xtra mail] set fd [open aidebot.mail w] puts $fd "TO: [getuser $hand xtra vrainick] <$email>" puts $fd "FROM: AideBot " puts $fd "SUBJECT: Avestissement de la part de AideBot (Pour un membre du canal #Aide)" puts $fd "" puts $fd $message close $fd exec cat aidebot.mail | /usr/lib/sendmail $email exec rm aidebot.mail } proc prendreaction {hand type absent} { # types: admin, membre, op, opcanal, projet, promoop, quotaop, quotaadmin, demission if {$type == "admin"} { foreach user [userlist A] { sendnote AideBot $user "À NOTER (Note aux admins): [getuser $hand xtra vrainick] a dépassé le temps maximal d'absence que son poste autorise." } return 1 } elseif {$type == "op"} { chattr $hand +O-J dcc_promo "AideBot" 0 "-op $hand" sendnote AideBot $hand "J'ai le regret de t'annoncer que j'ai dû te retirer ton accès d'opérateur sur #Aide suite à ton absence prolongée... Sache toutefois que ton travail a été fortement apprécié et que dès que tu auras un peu plus de temps, tu es le bienvenue de te représenter pour ce poste que tu connais déjà bien. (.futur op)" foreach user [userlist C] { sendnote AideBot $user "À NOTER (Note aux admins canaux): J'ai retiré l'accès d'opérateur canal à [getuser $hand xtra vrainick] à la suite de son absence prolongée." } news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai retiré (automatiquement) l'accès d'Opérat[mf $hand "eur" "rice"] canal à $hand à la suite de son absence prolongée. Nous le remercions parcontre grandement des efforts qu'il a mis dans ce poste. Il pourra s'y faire réélire si le coeur lui en dit dès qu'il sera à nouveau un peu plus disponible." return 1 } elseif {$type == "jamaiscanal"} { dcc_desactive "AideBot" 0 "$hand + Désactivé automatiquement par Aidebot le [date] pour cause de non participation." news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai désactivé (automatiquement) la fiche de $hand à la suite de sa non participation prolongée sur le canal ou par un projet." return 1 } elseif {$type == "membre"} { chattr $hand -PR setuser $hand xtra responsable setuser $hand xtra adjoint setuser $hand xtra participant dcc_desactive "AideBot" 0 "$hand + Désactivé automatiquement par Aidebot le [date] pour cause d'absence prolongée ..." news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai désactivé (automatiquement) la fiche de $hand à la suite de son absence prolongée ..." return 1 } elseif {$type == "opcanal"} { chattr $hand +O-J dcc_promo "AideBot" 0 "-op $hand" sendnote AideBot $hand "J'ai le regret de t'annoncer que j'ai dû te retirer ton accès d'opérateur sur #Aide suite au manque de présence sur le canal que j'ai observé au cours des dernières semaines... Sache toutefois que ton travail a été fortement apprécié et que dès que tu auras un peu plus de temps, tu es l[mf $hand "e" "a"] bienvenue de te représenter pour ce poste que tu connais déjà bien. (.futur op)" foreach user [userlist C] { sendnote AideBot $user "À NOTER (Note aux admins canaux): J'ai retiré l'accès d'opérateur canal à [getuser $hand xtra vrainick] à la suite de son manque de présence sur le canal." } news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai retiré (automatiquement) l'accès d'Opérat[mf $hand "eur" "rice"] canal à $hand à la suite d'un manque de disponibilité sur le canal. Nous l[mf $hand "e" "a"] remercions parcontre grandement des efforts qu'[mf $hand "il" "elle"] a mis dans ce poste. [mf $hand "Il" "Elle"] pourra s'y faire réélire si le coeur lui en dit dès qu'[mf $hand "il" "elle"] sera à nouveau un peu plus disponible." return 1 } elseif {$type == "projet"} { foreach user $hand { lappend lesnicks [getuser 4user xtra vrainick] append lesprojets "[getuser $user xtra responsable], " } foreach user [userlist T] { sendnote AideBot $user "À NOTER (Note aux admins projets): $lesnicks, qui sont reponsable(s) du(des) projet(s) $lesprojets n'ont pas ajouté de news &projet depuis au moins 10 jours..." } return 1 } elseif {$type == "promoop"} { dcc_promo "AideBot" 0 "+op $hand" news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai donné (automatiquement) l'accès d'Opérat[mf $hand "eur" "rice"] canal à $hand suite à la fin de son mois d'évaluation comme Opérat[mf $hand "eur" "rice"] adjoint[mf $hand "" "e"]." return 1 } elseif {$type == "demission"} { modacceswcours $hand 0 chattr $hand -pxEHPRW+X|-o &projets setuser $hand xtra responsable setuser $hand xtra adjoint setuser $hand xtra participant dcc_desactive "AideBot" 0 "$hand + Désactivé par Aidebot le [date]: Démission" foreach user [userlist A] { sendnote AideBot $user "DÉMISSION: [getuser $hand xtra vrainick] a déposé sa démission: « [lrange [getuser $hand xtra demission] 1 end] » Son accès a été désactivé." } return 1 } elseif {$type == "quotaadmin"} { foreach user [userlist A] { sendnote AideBot $user "À NOTER (Note aux admins): [getuser $hand xtra vrainick] n'atteind plus le quota minimal de participation aux votes/réunions." } return 1 } elseif {$type == "quotaop"} { chattr $hand +O-J dcc_promo "AideBot" 0 "-op $hand" sendnote AideBot $hand "J'ai le regret de t'annoncer que j'ai dû te retirer ton accès d'opérateur sur #Aide suite au manque de participation aux votes d'opérateurs que j'ai observé au cours des dernières semaines... Il t'est toutefois possible de te représenter comme opérateur, en espérant que tu auras plus l'occasiond e participer au processus de vote dans el futur. Si tu es intéressé[mf $hand "" "e"], je te rappelle la comamnde: .futur op" foreach user [userlist C] { sendnote AideBot $user "À NOTER (Note aux admins canaux): J'ai retiré l'accès d'opérateur canal à [getuser $hand xtra vrainick] à la suite de son manque de participation aux votes d'opérateur." } news_add "AideBot" "dcc" "AideBot" "#aide" "[unixtime] J'ai retiré (automatiquement) l'accès d'Opérat[mf $hand "eur" "rice"] canal à $hand à la suite d'un manque de participation aux votes d'opérateur. D'autres préoccupations devaient lui occuper l'esprit :-/ Nous l[mf $hand "e" "a"] remercions parcontre grandement des efforts qu'[mf $hand "il" "elle"] a mis dans ce poste. [mf $hand "Il" "Elle"] pourra s'y faire réélire si le coeur lui en dit dès qu'[mf $hand "il" "elle"] sera à nouveau un peu plus disponible." return 1 } else { } } ### proc reunion1heure {} { foreach user [userlist A] { sendnote AideBot $user "RÉUNION MENSUELLE DES ADMINS: Ce dimanche ([dire_date [expr [unixtime] + 0]]) à 15h30 HDB. Soyez-y!" sendicqdcc AideBot -1 "$user Hey! y'a la réunion mensuelle des admins à 17h" } }