Annonce X minutes
#1
bonjour / bonsoir

j'ai DL ce TCL la donner par crazycats il y a un moment d ecela cependant quelque erreur subvienne

tcl
#fréquence en minutes
set freq 1
 
# la fonction d'affichage
proc message {} {
   puthelp "PRIVMSG #easyfurious :ceci est un message test"
   list [utimer $::freq message]
}
 
message



voila il est dit

#fréquence en minutes

hors cela et plutôt en second ce qui es assez chiant ^_^


et si possible je voudrais par exemple

mettre une annonce "bienvenue blabla" tous les 5 minutes

et "recherche de webmaster" tous les 10 minutes

etc...

si quelqu’un peux m'aider cela serais gentil

d'avance merci
Répondre
#2
Un essai (je n'ai pas testé et il vaudrait mieux utiliser un namespace)
Code :
proc annonce5min { min hour day month year } {
set liste5min { {Voici un message diffusé toutes les 5 min} {Voici un autre message} }
    set reply5min [lindex $liste5min [rand [llength $liste5min]]]
    putserv "PRIVMSG #chan : ${reply5min}"
}
proc annonce10min { min hour day month year } {
set liste10min { {Voici un message diffusé toutes les 10 min} {Voici un autre message} }
    set reply10min [lindex $liste10min [rand [llength $liste10min]]]
    putserv "PRIVMSG #chan : ${reply10min}"
}
bind cron - "*/5 * * * *" annonce5min
bind cron - "*/10 * * * *" annonce10min

Remplacer #chan et les messages entres accolades
restart pour tester
Répondre
#3
Effectivement, il y avait une erreur dans ce bout de code, utimer est en secondes. Ce qui est bien expliqué ici.
Et frakir a raison, depuis la sortie d'eggdrop 1.6.20, il vaut mieux utiliser le bind cron pour ce genre d'action.
Seul petit détail: le set dans la procédure, ça n'est pas top à mon avis.
Présent sur le Tchat francophone
Répondre
#4
bonjour / bonsoir

merci a vous deux cela a l'air de fonctionner je vous tiens au courant si deventuel erreur survienne

juste peut être une erreur mais => set reply10min [lindex $liste10min [rand [llength $liste5min]]]

ne serais pas => set reply10min [lindex $liste10min [rand [llength $liste10min]]] ????
Répondre
#5
Si :)
Un copié/collé malencontreux de frakir, je n'ai pas tout vérifié.

De toutes manières, les codes donnés ici ne sont pas à recopier tel quel mais à comprendre, ce que tu sembles avoir fait.
Présent sur le Tchat francophone
Répondre
#6
bonjour / bonsoir

merci :)

cependant le timer de 10 minutes ne fonctionne pas :x

ps: aucune erreur en pl :x
Répondre
#7
Je viens de vérifier si des crons qui se déclenchent en même temps ne posent pas de souci, la réponse est non.
Donc, peut-être une erreur dans ton script, peux tu le copier ici stp (sans rien en modifier) ? Merci
Présent sur le Tchat francophone
Répondre
#8
bonjour / bonsoir

voici le tcl
Répondre
#9
Dans ta liste de messages "10 minutes", tu oublies de fermer une accolade.
Présent sur le Tchat francophone
Répondre
#10
Bonjour,

Même avec la version d'eggdrop 1.6.20 il et possible de faire un timer en minutes sans utilisé bind cron.

Exemple d'un morceau de code tcl :

tcl
bind EVNT - init-server proc:initje
proc proc:initje { type } {
 
    #### salon sur lequel se déroule le timer #####
    set ::salon "#salon"
    #### temps minimum entre deux phrases #####
    set ::temps "60"
    #### temps aléatoire max à ajouter au temps minimum ####
    set ::add_temps "5"
    #### Phrases à faire répéter #####
    set ::phrases {
        "blablabla"
        "reblablabla"
    }
    set ::active 0
}
 
bind pub -|- !active onn
proc onn { nick uhost hand chan arg } {
    if [info exists ::active]&&($::active==1) {
        putserv "PRIVMSG $::salon :\0031Les Annonces sont déjà \0034activé\0031, veuillez d'abord les \0034désactivé avant de le relancer !"
        return
    }
    putserv "PRIVMSG $::salon :\0031Les Annonces sont \0034activé !"
    active
}
 
bind pub o|o !inactive off
proc off { nick uhost hand chan arg } {
    if ![info exists ::active]||($::active==0) {
        putserv "PRIVMSG $::salon :\0031Les Annonces sont déjà \0034déactivé !"
        return
    }
    putserv "PRIVMSG $::salon :\0031Les Annonces sont \0034désactivé !"
    set ::active 0
    foreach t [timers] {
        if {[lindex $t 1] == " active "} {
            killtimer [lindex $t 2]
        }
    }
}
 
proc active {} {
    set ::active 1
    set ::phrase [lindex $::phrases [rand [llength $::phrases]]]
    putserv "PRIVMSG $::salon :\0031Annonces : \0034 $::phrase\0031"
    timer [expr $::temps + [rand $::add_temps]] { active }
}


Répondre
#11
CrazyCat a écrit :Et frakir a raison, depuis la sortie d'eggdrop 1.6.20, il vaut mieux utiliser le bind cron pour ce genre d'action.

alias_angelius a écrit :Même avec la version d'eggdrop 1.6.20 il et possible de faire un timer en minutes sans utilisé bind cron.

"Il vaut mieux" ne veut pas dire "il est imopssible".
Présent sur le Tchat francophone
Répondre
#12
Oui,

Donc sa donnerais en exemple comme ceci :

tcl
bind cron - "*/5 * * * *" active
proc active { min hour day month weekday } {
set ::active 1
    set ::phrase [lindex $::phrases [rand [llength $::phrases]]]
    putserv "PRIVMSG $::salon :\0031Annonces : \0034 $::phrase\0031"
    timer [expr $::temps + [rand $::add_temps]] { active }
}



Si je ne me trompe pas ?
Répondre
#13
Comme a dit uto sur #eggdrop: "Heu."
Présent sur le Tchat francophone
Répondre
#14
alias_angelius a écrit :Oui,

Donc sa donnerais en exemple comme ceci :

tcl
bind cron - "*/5 * * * *" active
proc active { min hour day month weekday } {
set ::active 1
    set ::phrase [lindex $::phrases [rand [llength $::phrases]]]
    putserv "PRIVMSG $::salon :\0031Annonces : \0034 $::phrase\0031"
    timer [expr $::temps + [rand $::add_temps]] { active }
}



Si je ne me trompe pas ?

avec le bind cron + le timer tu vas faire exploser ton eggdrop :x
de plus je ne vois pas de que fait la variable ::active ni pourquoi tu utilises une global pour $phrase
C'est en reconnaissant ses erreurs que l'on progresse
Répondre
#15
Et je ne vois pas l'intérêt de chercher ce qu'il faudrait faire alors que frakir a déjà donné le code.
Présent sur le Tchat francophone
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet :
Tchat 100% gratuit - Discutez en toute liberté - Transitionnez vers Linux - Discussions dans le Lauragais - Communauté LGBT respectueuse - soutien aux victimes de cybermalveillance - pour les filles par les filles