Fermeture automatique d'un salon a une heure prédéfinie
#31
Bonjour la communauté.

Après les tests qui s'avèrent positifs, j'ai un soucis au niveau de temps, car en effet j'ai mis 10h00 19h00 pour ouverture du salon. Mais il ferme le salon aussi a 15h00.
Est ce un décalage horaire ?? lol
Je vous joint le tcl qui est en place, peu être j'ai fait une erreur
Merci

Bonne journée la communauté

Cordialement
Répondre Avertir
#32
n'aurais tu pas un autre code de la sorte avec la fermeture à 15 heure charger dans un TCL ? l'as tu restart ?
ensuite n'utilise pas les code couleur mirc dans un TCL regarde sur le site y des explication. :) puis met ton code joins en tcl aussi stp :x

tcl
set salonmx "#jeuxxxxx"
 
bind time - "00 19 * * *" ceciestuntest
 
proc ceciestuntest { min hour day month year } {
global salonmx
   foreach chan [string tolower $::salonmx] {
   if {$chan != ""} {
    putquick "PRIVMSG $chan : Fermeture du salon, veuillez le quitter et revenir aux heures d'ouverture Merci ( 10h00- 19h00 ) "
    putquick "MODE $chan +im"
      }
   }
}
 
bind time - "00 10 * * *" ceciestuntest2
 
proc ceciestuntest2 { min hour day month year } {
global salonmx
   foreach chan [string tolower $::salonmx] {
   if {$chan != ""} {
    putquick "PRIVMSG $chan : re-ouverture du salon"
    putquick "MODE $chan -im"
      }
   }
}


Répondre Avertir
#33
d'accord mais comment on fait je ni suis jamais arriver
C'est pour cela que j'ai joint le fichier de cette manière
Apparemment il y avait pas d'erreur sur le tcl joint ?

cordialement
Répondre Avertir
#34
Bon je sais que je suis pas le premier a essayer, mais j'essaie quand même avec ma version (non testée <_<) :
tcl
# Une liste des canaux
# Les {, } et \ doivent etre précédés d'un \ !!
variable timedChans_chanlist {#chan1 #chan2}

# On met les binds time en place
bind time -|- {00 19 * * *} ::timedChans_close 
bind time -|- {00 10 * * *} ::timedChans_open
 
proc ::timedChans_close {min hour args} {
putquick "PRIVMSG [join $::timedChans_chanlist ,] :Il est 19h, le canal va fermer. Nous esperons vous revoir demain."
foreach chan $::timedChans_chanlist { 
pushmode $chan +im
putserv "ChanServ CLEAR $chan USERS" }
putserv "JOIN [join $::timedChans_chanlist ,]"
}
 
proc ::timedChans_open {min hour args} {
timer 5 {::timeChans_announce} 
foreach chan $::timedChans_chanlist {
pushmode $chan -im
}
}
 
proc ::timedChans_announce {} {
putquick "PRIVMSG [join $::timedChans_chanlist ,] :Il est 10h, le canal est désormais ouvert !" }



A noter: neccessite chanserv, et peux ne pas marcher pour plus de 20 canaux
Répondre Avertir
#35
bonsoir je viens de te codé sa en 5 min j'ai pas testé mais sa doit marché du premier coup :x
protection des flag mno
annonce x temps avant fermeture du salon
auto ouverture du salon apres x temps
j'espere que sa pourra t'aidé

tcl
## les personne ayant les flag mno ne sont pas kické ##

## salon a fermer ##
set AF(verif) "#test"
## moment de la fermeture apres l'annonce en minute ##
set AF(times) "5"
## nombre de temps que le salon est fermer en minute ##
set AF(timeouv) "120"
 
 
 
bind time - "55 19 * * *" fermeture
# Annonce de la fermeture # 
proc fermeture {min heure jour mois annee} { 
     global AF
     set curtime [clock seconds]
     set heure [clock format $curtime -format "%H:%M:%S"]	 
     foreach salon [channels] { 
     if {[string equal -nocase $salon $AF(verif)}{
putquick "PRIVMSG $salon : Il est $heure le salon va fermé est mettre les modes +im dans $AF(times) merci de votre compréhension....."
timer $AF(times) "ferme $salon"
     }
	 }
return 0 
}  

# fermeture du salon + kick des user sauf ayant flag (mno) #  
proc ferme {salon} { 	
     global AF 
     putquick "MODE $salon +im"	 
	 foreach user [chanlist $salon] {
      if {![matchattr $hand mno]} {	
putquick "KICK $salon $user : Salon Fermé"  
	 }
	 }
timer $AF(timeouv) "ouvre $salon"   
     return	 
}
	
# réouverture du salon #	
proc ouvre {salon} { 	
     global AF 
     putquick "MODE $salon -im"	 
	 return
}


Répondre Avertir
#36
j'ai oublié comme c configuré en gros l'annonce de fermeture se fait a 19h55 , la fermeture a 20h00 et la réouverture a 22h
Répondre Avertir
#37
Bonjour la communauté

avec ton tcl snoopy il me met cela en pl : Tcl error [fermeture]: extra characters after close-brace
Mais ton tcl se rapproche bien de ce que je recherche avec le message 5 minutes avant la fermeture , le kick après etc.
Pour artix, au niveau du temps , il respecte pas les heures prédéfinies. même après un rehash ou restart.

Bonne journée
Cordialement
Répondre Avertir
#38
Bon si tous les scripts que tu as essayé jusqu'a présent donnent des problèmes concernant l'heure de déclenchement, tout ce que je vois, c'est que tu as peut etre un problème avec l'horloge interne :|
Essaie de taper en PL ceci et compare par rapport a l'heure actuelle : (assure toi d'avoir activé la commande .tcl)
Citation :.tcl clock format [clock seconds] -format "%H:%M"

Edit Et tant qu'a faire aussi :
Citation :.tcl strftime "%H:%M"
Répondre Avertir
#39
Citation :avec ton tcl snoopy il me met cela en pl : Tcl error [fermeture]: extra characters after close-brace
Mais ton tcl se rapproche bien de ce que je recherche avec le message 5 minutes avant la fermeture , le kick après etc.
Pour artix, au niveau du temps , il respecte pas les heures prédéfinies. même après un rehash ou restart.
Bonne journée
Cordialement

nous somme pas là pour te crée ton tcl ! Tous ce qu'ont ta mit sur les divers postes sont des exemples voir pour certain le tcl quasi complet. Âpres à toi aussi de faire ce TCL avec tous ce qu'ont ta mis tu doit pouvoir y arriver !ensuite nous pouvons comme ont la fait t'aider si ta à certaine erreur ... mais y un peut du tien :)
Répondre Avertir
#40
bonjour la communauté
en tapant les deux commande artix, il me donnes l'heure exacte
cordialement
Répondre Avertir
#41
Salut, normal que ca ne marche pas, les arg de la proc doivent etre min hour day month year
Je pensais a ça
tcl
set chanToClose "#tonchan"
set kickmin 5
set fermetureshour 20
 
bind - "00 $fermetureshour * * *" time:warningClose
bind - "$kickmin $fermeturesclose * * *" time:closing
 
proc time:warningClose {min hour day month year} { 
  global chanToClose
  putserv "PRIVMSG $chanToClose :Ce channel va fermer dans 5minutes, veuillez partir ou vous serez kické"
  putserv "MODE $chanToClose +im"
}
 
proc time:closing {min hour day month year} { 
  global chanToClose
  putserv "PRIVMSG $chanToClose :Kicking..."
  foreach toKick [chanlist chanToClose] {
    putserv "KICK $chan $toKick :Fermeture automatique du chan"
  }
}



Voila ca devrait marcher, par contre ca kick tout le monde, si tu veux icker seulement les non reg, faudrait mettre un if après le foreach ou un truc comme ça, a toi de le continuer =)
Répondre Avertir
#42
A mon avis, je me goure peut etre mais si la variable $chan n'est pas defini sa risque pas de marcher et donc de ce fait il faut modifier

tcl
proc time:closing {min hour day month year} { 
  global chanToClose
  putserv "PRIVMSG $chanToClose :Kicking..."
  foreach toKick [chanlist chanToClose] {
    putserv "KICK $chan $toKick :Fermeture automatique du chan"
  }
}




par
tcl
proc time:closing {min hour day month year} { 
  global chanToClose
  putserv "PRIVMSG $chanToClose :Kicking..."
  foreach toKick [chanlist chanToClose] {
    putserv "KICK $chanToClose $toKick :Fermeture automatique du chan"
  }
}


Répondre
#43
Bonjour, ..
Je vien de coder ceci, regarde si ca marche, je n'est pas testé :s
Pour plus de facilité à tes salons contrôle les via .db Je te rajoute ce qu'il faut :)

Bien sur dans le dossier scripts de ton eggdrop rajoute un fichier nommé chan.db et met y les salons que tu veut que l'eggdrop ferme, il doit être OP !!

tcl
# Minute de fermeture de salon
set CC(min) "00"

# Heure de fermeture du salon
set CC(ferme) "22"

# Heure d'ouverture du salon
set CC(ouvre) "10"

# Minute d'ouverture du salon
set CC(mouvre) "00"

# Heure d'avertissement de fermeture
set CC(afh)   "21"

# Minute d'avertissement de fermeture
set CC(amn)   "55"

# Mode de fermeture de salon
set CC(mode) "+iRm"

# Message d'avertissement de fermeture
set CC(af)   "Fermeture du salon dans 05minute.. veuillez quitter ce salon !"

# Message de fermeture
set CC(close) "Fermeture du salon !" 

# Message d'ouverture
 
set CC(ouvert) "Ouverture du salon ! Bon t'chat à tous ! ;)"
 
 
if {![file exists "scripts/chan.db"]} { set file_chan [open "host.db" a+]; close $file_chan }
 
bind time - "$CC(amn) $CC(afh) * * *" time:averto
proc time:averto {} {
global CC
catch {open scripts/chan.db r} salle
while {![eof $salle]} { gets $salle salon; if {$salon!=""} { puts "PRIVMSG $salon :$CC(af)" } }
catch {close $salle}
}
 
bind time - "$CC(min) $CC(ferme) * * *" time:close
proc time:close {} {
global CC
catch {open scripts/chan.db r} salle
while {![eof $salle]} { gets $salle salon; if {$salon!=""} { puts "PRIVMSG $salon :$CC(close)"; puts "MODE $salon +$CC(mode)"; foreach users [chanlist $salon] { puts "KICK $salon $user :$CC(ouvert)"} } }
catch {close $salle}
}
 
bind time - "$CC(mouvre) $CC(ouvre) * * *" time:ouvre
proc time:ouvre {} {
global CC
catch {open scripts/chan.db r} salle
while {![eof $salle]} { gets $salle salon; if {$salon!=""} { puts "PRIVMSG $salon :$CC(ouvert)"; puts "MODE $salon -$CC(mode)" } }
catch {close $salle}
}



Voila.. essaye ceci je sais pas si il marche
Répondre Avertir
#44
bonjour

voici les erreurs rencontrées :
Tcl error [time:ouvre]: wrong # args: should be "time:ouvre"
Tcl error [time:averto]: wrong # args: should be "time:averto"
Tcl error [time:close]: wrong # args: should be "time:close"

Cordialement
Répondre Avertir
#45
Ca me semble tout à fait normal: les procédures sont appelées par des bind time, elles doivent donc avoir 5 arguments vu que le bind en envoie 5.

A lire d'urgence
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté