Script pour afficher la date à une heure donnée (ephemeride)
#1
Bonjour,

Je cherchais un script qui serait capable de faire dire à mon eggdrop à une heure donnée "La date est jour/mois/année"

Je suppose que ce genre de chose doit vous sembler tout con mais mes compétences en codages TCL sont très minces (même si je me soigne)

J'ai donc réussi à trouver un script qui se base sur le site http://www.ephemeride.com/ pour annoncer à une (ou plusieurs) heures données différentes infos prise sur le site.

Voici le code :

TCL
# nouveaujour (13/06/2003)							#
#################################################################################
#    ___          ___           ___           ___          _____    		#
#   /  /\        /  /\         /  /\         /  /\        /  /::\   		#
#  /  /:/       /  /::\       /  /::\       /  /::\      /  /:/\:\  		#
# /__/::\      /  /:/\:\     /  /:/\:\     /  /:/\:\    /  /:/  \:\ 		#
# \__\/\:\    /  /:/~/::\   /  /:/~/:/    /  /:/  \:\  /__/:/ \__\:|		#
#    \  \:\  /__/:/ /:/\:\ /__/:/ /:/___ /__/:/ \__\:\ \  \:\ /  /:/		#
#     \__\:\ \  \:\/:/__\/ \  \:\/:::::/ \  \:\ /  /:/  \  \:\  /:/ 		#
#     /  /:/  \  \::/       \  \::/~~~~   \  \:\  /:/    \  \:\/:/  		#
#    /__/:/    \  \:\        \  \:\        \  \:\/:/      \  \::/   		#
#    \__\/      \  \:\        \  \:\        \  \::/        \__\/    		#
#                \__\/         \__\/         \__\/                  		#
#										#
#										#
#					 ___					#
#  			     ___        /  /\                  			#
#  			    /  /\      /  /:/                  			#
#  			   /  /:/     /  /:/       ___     ___ 			#
#  			  /  /:/     /  /:/  ___  /__/\   /  /\			#
#  			 /  /::\    /__/:/  /  /\ \  \:\ /  /:/			#
# 			/__/:/\:\   \  \:\ /  /:/  \  \:\  /:/ 			#
# 			\__\/  \:\   \  \:\  /:/    \  \:\/:/  			#
# 			     \  \:\   \  \:\/:/      \  \::/   			#
# 			      \__\/    \  \::/        \__\/    			#
# 			                \__\/                  			#
#										#
#										#
#					web  : http://tcl.lagon-bleu.org	#
#					mail : jarod_angel@yahoo.fr		#
#					IRC  : Jarod_@IRCNet #buffy		#
#					       Asco@UNDERNet #tyranz		#
#										#
#################################################################################
#										#
# NOUVEAUJOUR.tcl affiche tous les jours à 00h15 et à 10h45 des informations	#
# sur le jour en cours (par exemple le saint du jour, le dicton du jour, heure	#
# du levé du soleil, etc).							#
# Ces informations peuvent être demandé à tout moment en tapant :		#
#			!aujourdhui						#
#										#
# De plus, vous pouvez mettre votre date d'anniversaire. Le bot le rappellera	#
# dans les infos du jour et vous souhaitera un bon anniv lorsque vous joindrez	#
# le channel. Pour add sa date de naissance :					#
#			/msg lebot monanniv <jj/mm/aaaa>			#
# Et pour voir celle de kk'un :							#
#			!anniv <nick>						#
#										#
# HTTP.TCL est nécessaire ! ( http://jarodirc.free.fr/tcl/http.tcl )		#
#										#
#################################################################################

 
 
##### CONFIGURATION #####

### nom du channel sur lequel le bot affichera les informations du jour :
set nouveaujour(channel) "#channel"

##### FIN DE LA CONFIGURATION #####

 
 
##### DEBUT DU PROGRAMME #####
 
 
bind pub - !aujourdhui aujourd:hui
 
proc aujourd:hui { nick uhost handle channel arg } {
	global nouveaujour
	if {$channel != $nouveaujour(channel)} { return 0 }
	putlog "#NOUVEAUJOUR# Consultation du jour par $nick sur $channel !"
	set res [catch { exec lynx -source http://www.ephemeride.com } x]
	if {$x != ""} {
		set reponse [string tolower $x]
	}
	set indextest [string first "img/sun.gif" $reponse]
 
	set test [bongettext "$reponse" "<td width=\"41\" class=\"info\">&nbsp;" "</td>" $indextest]
	set nouveaujour(leve_soleil) [lindex $test 0]
	set indextest [lindex $test 1]
 
	set test [bongettext "$reponse" "<td width=\"30\" class=\"info\">&nbsp;" "</td>" $indextest]
	set nouveaujour(couche_soleil) [lindex $test 0]
	set indextest [lindex $test 1]
 
        set indextest2 [string first "<font color=\"blue\">" $reponse]
 
        if { $indextest2 == -1 } {
                set test [bongettext "$reponse" "<font color=\"#ff5f5f\">" "</font>" $indextest]
        } else {
                set test [bongettext "$reponse" "<font color=\"blue\">" "</font>" $indextest]
        }
	set taille [llength $test]
	set nouveaujour(saint) [lrange $test 0 [expr $taille - 2]]
 
	set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
	regsub -all "\"" $test "-" test
	set taille [llength $test]
	set indextest [lindex $test [expr $taille - 1]]
	set nouveaujour(dicton) [lrange $test 0 [expr $taille - 2]]
 
	set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
	regsub -all "\"" $test "-" test
	set taille [llength $test]
	set indextest [lindex $test [expr $taille - 1]]
	set nouveaujour(proverbe) [lrange $test 0 [expr $taille - 2]]
 
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Soleil\003 : levé à [traitementtexte [traitementhtml $nouveaujour(leve_soleil)]] et couché à [traitementtexte [traitementhtml $nouveaujour(couche_soleil)]] !"
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Fête du Jour\003 : [traitementtexte [traitementhtml $nouveaujour(saint)]]"
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Dicton du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(dicton)]] \""
	puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Proverbe du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(proverbe)]] \""
	foreach user [userlist $nouveaujour(channel)] {
		set un_anniv [un_anniv $user]
		if {$un_anniv != ""} {
			if {[lrange [ctime [unixtime]] 1 2] == "[lindex $un_anniv 1] [lindex [string trimleft $un_anniv 0] 0]" } {
				puthelp "privmsg $channel :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Anniversaire du jour\003 : $user !!"
			}
		}
	}
	return 0
}
 
 
bind time - "* * * * *" nouveau_jour
 
proc nouveau_jour { min hour day month year } {
	global nouveaujour botnick
	set nouveaujour(ok) 0
	if {[lindex [ctime [unixtime]] 3] == "00:15:00"} {
		set nouveaujour(ok) 1
		puthelp "privmsg $nouveaujour(channel) :\002~~~~ Voila une nouvelle journée qui commence ! ~~~~\002"
	}
	if {[lindex [ctime [unixtime]] 3] == "10:45:00"} {
		set nouveaujour(ok) 1
		puthelp "privmsg $nouveaujour(channel) :\002~~~~ nouveaujour ! Voila pour les leves-tards ... ~~~~\002"
	}
	if {$nouveaujour(ok)} {
		set res [catch { exec lynx -source http://www.ephemeride.com } x]
		if {$x != ""} {
			set reponse [string tolower $x]
		}
		set indextest [string first "img/sun.gif" $reponse]
 
		set test [bongettext "$reponse" "<td width=\"41\" class=\"info\">&nbsp;" "</td>" $indextest]
		set nouveaujour(leve_soleil) [string range [lindex $test 0] 1 end]
		set indextest [lindex $test 1]
 
		set test [bongettext "$reponse" "<td width=\"30\" class=\"info\">&nbsp;" "</td>" $indextest]
		set nouveaujour(couche_soleil) [lindex $test 0]
		set indextest [lindex $test 1]
 
		set indextest2 [string first "<font color=\"blue\">" $reponse]
 
		if { $indextest2 == -1 } {
			set test [bongettext "$reponse" "<font color=\"#ff5f5f\">" "</font>" $indextest]
		} else {
			set test [bongettext "$reponse" "<font color=\"blue\">" "</font>" $indextest]
		}
		set taille [llength $test]
		set nouveaujour(saint) [lrange $test 0 [expr $taille - 2]]
 
		set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
		regsub -all "\"" $test "-" test
		set taille [llength $test]
		set indextest [lindex $test [expr $taille - 1]]
		set nouveaujour(dicton) [lrange $test 0 [expr $taille - 2]]
 
		set test [bongettext "$reponse" "«&nbsp;" "&nbsp;»" $indextest]
		regsub -all "\"" $test "-" test
		set taille [llength $test]
		set indextest [lindex $test [expr $taille - 1]]
		set nouveaujour(proverbe) [lrange $test 0 [expr $taille - 2]]
 
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Soleil\003 : levé à [traitementtexte [traitementhtml $nouveaujour(leve_soleil)]] et couché à [traitementtexte [traitementhtml $nouveaujour(couche_soleil)]] !"
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Fête du Jour\003 : [traitementtexte [traitementhtml $nouveaujour(saint)]]"
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Dicton du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(dicton)]] \""
		puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\]\003 \0036Proverbe du Jour\003 : \" [traitementtexte [traitementhtml $nouveaujour(proverbe)]] \""
		foreach user [userlist $nouveaujour(channel)] {
			set un_anniv [un_anniv $user]
			if {$un_anniv != ""} {
				if {[lrange [ctime [unixtime]] 1 2] == "[lindex $un_anniv 1] [lindex [string trimleft $un_anniv 0] 0]" } {
					puthelp "privmsg $nouveaujour(channel) :\0033\[[lrange [ctime [unixtime]] 0 2]\] \003\0036Anniversaire du jour\003 : $user !!"
				}
			}
		}
		return 0
	}
}

### /msg lebot monanniv <jj/mm/aaaa>
 
bind msg - monanniv monanniv:msg
 
proc monanniv:msg {nick host hand arg} {
	global botnick
	if {($arg == "") || ([string length $arg] != 10)} {
		puthelp "notice $nick :Commande : \002/msg $botnick monanniv <jj/mm/aaaa>\002"
		puthelp "notice $nick :Tapez : \002/msg $botnick finanniv\002 pour que votre date d'anniversaire soit supprimé de la mémoire du bot."
		return 0
	} else {
		set monanniv_jour [string range $arg 0 1]
		set monanniv_mois [string range $arg 3 4]
		set monanniv_annee [string range $arg 6 9]
		set monanniv_mois [datefr_dateus $monanniv_mois]
		setuser $hand XTRA ANNIV "$monanniv_jour $monanniv_mois $monanniv_annee"
		set monanniv_mois [dateus_datefr $monanniv_mois]
		puthelp "notice $nick :Votre anniversaire est le $monanniv_jour $monanniv_mois $monanniv_annee"
		save
		return 0
	}
}

### !anniv <handle>
 
bind pub - !anniv anniv:pub
 
proc anniv:pub {nick host hand chan arg} {
	global botnick
	if {$arg == ""} {
		puthelp "notice $nick :Commande : \002!anniv <nick_de_la_personne_dans_le_bot>\002"
		return 0
	} else {
		set handle [lindex $arg 0]
		if {![validuser $handle]} {
			puthelp "notice $nick :Désolé mais je ne connais pas $handle !"
			return 0
		} else {
			set anniv [un_anniv $handle]
			if {$anniv == ""} {
				puthelp "privmsg $chan :Désolé, mais $handle n'a pas d'anniversaire d'enregistré !"
				puthelp "privmsg $chan :Si vous voulez enregistrer votre date d'anniversaire, tapez : /msg $botnick monanniv <jj/mm/aaaa>"
				return 0
			} else {
				set anniv_mois [dateus_datefr [lindex $anniv 1]]
				puthelp "privmsg $chan :$handle est né le [lindex $anniv 0] $anniv_mois [lindex $anniv 2]"
				return 0
			}
		}
	}
	return 0
}

 
### Fonction pour convertir la date d'anniv des gens !
 
proc datefr_dateus { moisfr } {
	if {$moisfr == "01"} { return "Jan" }
	if {$moisfr == "02"} { return "Feb" }
	if {$moisfr == "03"} { return "Mar" }
	if {$moisfr == "04"} { return "Apr" }
	if {$moisfr == "05"} { return "May" }
	if {$moisfr == "06"} { return "Jun" }
	if {$moisfr == "07"} { return "Jul" }
	if {$moisfr == "08"} { return "Aug" }
	if {$moisfr == "09"} { return "Sep" }
	if {$moisfr == "10"} { return "Oct" }
	if {$moisfr == "11"} { return "Nov" }
	if {$moisfr == "12"} { return "Dec" } 
	return 0
}
 
proc dateus_datefr { moisus } {
	if {$moisus == "Jan"} { return "Janvier" }
	if {$moisus == "Feb"} { return "Fevrier" }
	if {$moisus == "Mar"} { return "Mars" }
	if {$moisus == "Apr"} { return "Avril" }
	if {$moisus == "May"} { return "Mai" }
	if {$moisus == "Jun"} { return "Juin" }
	if {$moisus == "Jul"} { return "Juillet" }
	if {$moisus == "Aug"} { return "Aout" }
	if {$moisus == "Sep"} { return "Septembre" }
	if {$moisus == "Oct"} { return "Octobre" }
	if {$moisus == "Nov"} { return "Novembre" }
	if {$moisus == "Dec"} { return "Decembre" }
}
 
proc un_anniv { handle } {
	set anniv [getuser $handle XTRA ANNIV]
	if {$anniv == ""} {
		return ""
	} else {
		return "$anniv"
	}
}

### bon anniversaire on join
bind join - * join:anniv
 
proc join:anniv {nick host handle channel} {
	global nouveaujour
	if {![validuser $handle]} { return 0 }
	if {$channel != $nouveaujour(channel)} { return 0 }
	set un_anniv [un_anniv $handle]
	if {$un_anniv != ""} {
		if {[lrange [ctime [unixtime]] 1 2] == "[lindex $un_anniv 1] [lindex [string trimleft $un_anniv 0] 0]" } {
			puthelp "privmsg $channel :Bon anniversaire $nick !!!"
		}
	}
	return 0	
}

 
### outils
 
proc traitementhtml { contenu } {
	regsub -all "&lt;" $contenu "<" contenu
	regsub -all "&gt;" $contenu ">" contenu
	regsub -all "&amp;" $contenu "et" contenu
	regsub -all "&quot;" $contenu "" contenu
	regsub -all "&Aacute;" $contenu "Á" contenu
	regsub -all "&Acirc;" $contenu "Â" contenu
	regsub -all "&Agrave;" $contenu "À" contenu
	regsub -all "&Aring;" $contenu "Å" contenu
	regsub -all "&Atilde;" $contenu "Ã" contenu
	regsub -all "&Auml;" $contenu "Ä" contenu
	regsub -all "&Ccedil;" $contenu "Ç" contenu
	regsub -all "&Eacute;" $contenu "É" contenu
	regsub -all "&Ecirc;" $contenu "Ê" contenu
	regsub -all "&Egrave;" $contenu "È" contenu
	regsub -all "&Iacute;" $contenu "Í" contenu
	regsub -all "&Icirc;" $contenu "Î" contenu
	regsub -all "&Igrave;" $contenu "Ì" contenu
	regsub -all "&Iuml;" $contenu "Ï" contenu
	regsub -all "&Ntilde;" $contenu "Ñ" contenu
	regsub -all "&Oacute;" $contenu "Ó" contenu
	regsub -all "&Ocirc;" $contenu "Ô" contenu
	regsub -all "&Ograve;" $contenu "Ò" contenu
	regsub -all "&Oslash;" $contenu "Ø" contenu
	regsub -all "&Otilde;" $contenu "Õ" contenu
	regsub -all "&Ouml;" $contenu "Ö" contenu
	regsub -all "&Uacute;" $contenu "Ú" contenu
	regsub -all "&Ucirc;" $contenu "Û" contenu
	regsub -all "&Ugrave;" $contenu "Ù" contenu
	regsub -all "&Uuml;" $contenu "Ü" contenu
	regsub -all "&Yacute;" $contenu "Ý" contenu
	regsub -all "&aacute;" $contenu "á" contenu
	regsub -all "&aelig;" $contenu "ae" contenu
	regsub -all "&oelig;" $contenu "oe" contenu
	regsub -all "&agrave;" $contenu "à" contenu
	regsub -all "&aring;" $contenu "å" contenu
	regsub -all "&atilde;" $contenu "ã" contenu
	regsub -all "&auml;" $contenu "ä" contenu
	regsub -all "&ccedil;" $contenu "ç" contenu
	regsub -all "&eacute;" $contenu "é" contenu
	regsub -all "&euml;" $contenu "ë" contenu
	regsub -all "&iacute;" $contenu "í" contenu
	regsub -all "&egrave;" $contenu "è" contenu
	regsub -all "&igrave;" $contenu "ì" contenu
	regsub -all "&iuml;" $contenu "ï" contenu
	regsub -all "&ntilde;" $contenu "ñ" contenu
	regsub -all "&oacute;" $contenu "ó" contenu
	regsub -all "&ocirc;" $contenu "ô" contenu
	regsub -all "&acirc;" $contenu "â" contenu
	regsub -all "&ecirc;" $contenu "ê" contenu
	regsub -all "&ograve;" $contenu "ò" contenu
	regsub -all "&icirc;" $contenu "î" contenu
	regsub -all "&otilde;" $contenu "õ" contenu
	regsub -all "&ouml;" $contenu "ö" contenu
	regsub -all "&uacute;" $contenu "ú" contenu
	regsub -all "&ucirc;" $contenu "û" contenu
	regsub -all "&ugrave;" $contenu "ù" contenu
	regsub -all "&uuml;" $contenu "ü" contenu
	regsub -all "&yuml;" $contenu "ÿ" contenu
	regsub -all "&AElig;" $contenu "AE" contenu
	regsub -all "&OElig;" $contenu "OE" contenu
	regsub -all "&reg;" $contenu "®" contenu
	regsub -all "&copy;" $contenu "©" contenu
	regsub -all "&trade;" $contenu "(tm)" contenu
	regsub -all "&plusmn;" $contenu "±" contenu
	regsub -all "&deg;" $contenu "°" contenu
	regsub -all "&sup1;" $contenu "¹" contenu
	regsub -all "&sup2;" $contenu "²" contenu
	regsub -all "&sup3;" $contenu "³" contenu
	regsub -all "&times;" $contenu "×" contenu
	regsub -all "&divide;" $contenu "÷" contenu
	regsub -all "&euro;" $contenu "euro" contenu
	regsub -all -nocase "<p>" $contenu "" contenu
	regsub -all -nocase "</p>" $contenu "" contenu
	regsub -all -nocase "<i>" $contenu "" contenu
	regsub -all -nocase "</i>" $contenu "" contenu
	regsub -all -nocase "<b>" $contenu "" contenu
	regsub -all -nocase "<u>" $contenu "" contenu
	regsub -all -nocase "</u>" $contenu "" contenu
	regsub -all -nocase "</b>" $contenu "" contenu
	regsub -all -nocase "<br>" $contenu "" contenu
	regsub -all -nocase "œ" $contenu "oe" contenu
	regsub -all -nocase "&laquo;" $contenu "\"" contenu
	regsub -all -nocase "&raquo;" $contenu "\"" contenu
	regsub -all -nocase "{" $contenu "" contenu
	regsub -all -nocase "}" $contenu "" contenu
	return $contenu
}
 
 
proc traitementtexte { contenu } {
	regsub -all "{" $contenu "" contenu
	regsub -all "}" $contenu "" contenu
	regsub -all "\"" $contenu "\'" contenu
	return $contenu
}
 
proc bongettext { data start end index } {
	set index0 [string first $start $data $index]
	set index1 [expr $index0 + [string length $start]]
	set index2 [string first $end $data $index1]
	set index2 [expr $index2 - 1]
	set index  [expr $index2 + [string length $end]]
	return "[string range $data $index1 $index2] $index"
}
 
 
putlog "\0032NOUVEAUJOUR.TCL\003 (\0031313/06/2003\003) par Jarod_"



Bien évidement j'ai changé la ligne où il y a besoin de renseigner le chan où les infos doivent être echoed :
Code :
set nouveaujour(channel) "#channel"

Ensuite j'ai trouvé les deux lignes où l'on set les heures auxquelles le script doit se déclencher.

Quand sur le chan en question j'essaye d'éxécuter le trigger "!aujourdhui" j'ai cette erreur en PL :
Code :
[11:43:35] <MonBot> [11:42:58] #NOUVEAUJOUR# Consultation du jour par 0wner sur #animateurs !
[11:43:35] <MonBot> [11:42:58] Tcl error [aujourd:hui]: bad index "": must be integer?[+-]integer? or end?[+-]integer?

Avez-vous une idée de pourquoi cette erreur et si le script est trop ancien alors m'aiguiller sur le fait de faire dire à mon bot la date tous les jours à une heure donnée.

Merci par avance de l'aide que vous pourrez m'apporter.

Bonne journée.
Répondre Avertir
#2
allo conscience

je ne c'est pas si sa peut t'aider

mais jais ce script la que moi j'utilise.

voici le script.
Répondre Avertir
#3
(01/06/2013, 17:44)MrStephane a écrit : allo conscience

je ne c'est pas si sa peut t'aider

mais jais ce script la que moi j'utilise.

voici le script.

Bonjour MrStephane,

Merci pour avoir pris le temps de me répondre.

Si je ne me trompe pas ton script echo sur le chan l'heure qu'il est avec le trigger ?

De mon côté ce que j'aimerais c'est que le bot, tout seul sans avoir besoin de trigger, à une ou plusieurs heures données, écrive sur le #chan par exemple : "Un nouveau jour vient de naître : nous sommes le lundi 26 juin 2013" (c'est mon côté poète)

Bonne journée.

(Allez le CO) Smile
Répondre Avertir
#4
Bon j'essaye de trouver ma soluce au moins pour afficher la date, le script en lui-même je ne pense pas y arriver tout seul sans votre aide Smile

J'ai vu qu'il existait une commande "strftime" et j'ai pensé à un genre de "script"

Désolé par avance aux puristes car je risque d'écrire de grosses bêtises, je ne me base que sur de l'empirisme en regardant et en essayant de comprendre quelques bouts de scripts par-ci par-là !

TCL
if {[lindex [ctime [unixtime]] 3] == "08:00:00"} {
                puthelp "privmsg #animateurs :\002Un nouveau jour se lève ! Nous sommes le : [strftime %A %e %B %Y]\002"
 }



Dans mon esprit le script check l'heure du serveur et regarde si elle correspond à 8h00 (du matin), si oui elle envoie un message au serveur (basse priorité) et et lui demande d'afficher la phrase en gras sur le channel #animateurs. J'ai mis le "strftime" et ses arguments entre-crochet mais je ne sais pas trop...

Qu'en pensez-vous ? En espérant ne pas trop avoir écrit n'importe quoi !
Est-ce que cela a des chances de fonctionner tel quel ? Ou faut-il ajouter une procédure ou autre ?

Niveau test, j'ai donc créé un newday.tcl dans mon rep /scripts
J'ai ensuite ajouter une ligne dans mon eggdrop.conf "source /scripts/newday.tcl"
J'ai fait un .restart et un .rehash en PL
Quand l'heure précisée dans le script est arrivée... rien ni en PL ni sur le chan #animateurs

Help Smile
Répondre Avertir
#5
Quel bind déclenche la procédure contenant ce code ?
Et figure toi que pour déclencher une procédure à un moment donné, il y a le bind time

Pour appeler une procédure "aujourd'hui" tous les jours à 08h00 et 10h30 :
TCL
bind time - "00 08 * * *" aujourdhui
bind time - "30 10 * * *" aujourdhui



Sinon, tu peux utiliser le bind cron
Répondre
#6
(02/06/2013, 18:16)CrazyCat a écrit : Quel bind déclenche la procédure contenant ce code ?
Et figure toi que pour déclencher une procédure à un moment donné, il y a le bind time

Pour appeler une procédure "aujourd'hui" tous les jours à 08h00 et 10h30 :
TCL
bind time - "00 08 * * *" aujourdhui
bind time - "30 10 * * *" aujourdhui



Sinon, tu peux utiliser le bind cron

Merci CrazyCat pour ta réponse !!

Tu viens d'éclairer ma journée, je vais me pencher sur ton message.
Du coup le "if" ne sert plus à rien et je suppose qu'il faut je crée une "proc" "aujourdhui"
J'ai bon ? Wink

Merci encore, je te (vous) tiens au courant de mes avancées Smile
Répondre Avertir
#7
C'est exactement ça.
Répondre
#8
Salut !

Alors voici le script que je viens de load :

TCL
bind time - "00 08 * * *" say:time
bind time - "33 07 * * *" say:time
bind pub - "!time" say:time
 
proc say:time {nick uhost handle chan args} {
        set ajd [clock format [clock seconds] -format "Un nouveau jour s'est levé sur Pyramide il est %H:%M et nous sommes le %A %d %B %Y" -local fr]
        putserv "privmsg $chan :$ajd"
        }
 
putlog "\002Script date du jour chargé\002"



J'ai rajouté un trigger "!time" qui fonctionne parfaitement.

Par contre à l'heure indiquée je n'ai rien qui s'affiche, je pense que c'est parce que je n'ai pas précisé de channel en particulier...
Il faut que je me penche sur ça : {nick uhost handle chan args} où j'avoue avoir copié bêtement sans trop comprendre

J'aimerai que le trigger fonctionne sur tous les chan où l'egg est présent et que la phrase s'affiche automatiquement sur UN channel en particulier

Merci de votre aide, c'est précieux pour un débutant comme moi qui tâtonne de façon empirique.
Répondre Avertir
#9
Bonjour,

Je pense que sa devrez t'aider.. C'est du vite fait à l'arrache bien sur mais le principe et la si je ne me trompe pas..

TCL
namespace eval ::ann {
 
    procsal { min hour day month year } {
        set lis8h {Un nouveau jour s'est levé sur Pyramide il est %H:%M et nous sommes le %A %d %B %Y"}
        foreach c [channels] {
            putserv "PRIVMSG $c :${lis8h}
        }
    }
    bind cron - "/8 * * * * *" procsal
}


Répondre Avertir
#10
(03/06/2013, 07:39)conscience a écrit :
TCL
bind time - "00 08 * * *" say:time
bind pub - "!time" say:time
 
proc say:time {nick uhost handle chan args} {


Tes binds time et pub appellent la même procédure, laquelle ne reçoit pas les mêmes informations.

Il faut que tu fasses une procédure "intermédiaire" pour l'un des deux appels.
Exemple:
TCL
bind time - "00 08 * * *" say:time
bind time - "33 07 * * *" say:time
bind pub - "!time" say:pubtime
 
set tchan "#bla"

# ici la procédure globale
proc say:time {ho mi da mo ye} {
   set ajd [clock format [clock seconds] -format "Un nouveau jour s'est levé sur Pyramide il est %H:%M et nous sommes le %A %d %B %Y" -local fr]
   putserv "privmsg $::tchan :$ajd"
}

# ici la procédure appelée par !time
proc say:pubtime {nick uhost handle chan args} {
   if { [string tolower $chan] != [string tolower $::tchan]} { return 0; }
   # Ligne juste au dessus : on ne réagit que si c'est sur le canal où on doit afficher l'heure
   say:time 0 0 0 0 0
}
 
putlog "\002Script date du jour chargé\002"


Répondre
#11
Et bien merci à Aliasangelius et CrazyCat pour leurs conseils !

J'y vois maintenant beaucoup plus clair

Il faut juste que je comprenne la 1ère ligne de chacune de tes procédures, surtout ce qui est entre {}

TCL
proc say:time {ho mi da mo ye}



TCL
proc say:pubtime {nick uhost handle chan args}



En tout cas merci pour votre aide toujours très précieuse, je suis ravi d'être tombé sur votre forum même si je n'y apporte pas grand chose côté TCL.

Bonne journée tout le monde !
Répondre Avertir
#12
Salut,

TCL
proc say:time {ho mi da mo ye}



Ceci et des raccourcis de : hour, min, day, month, year tout comme si tu avais :

TCL
proc:blabla { nick host hand chan arg }
[tcl]
 
Tu peut transformer sa en : 
 
[tcl]
proc:blabla { n h h c a }



Ensuite tu retrouve par exemple si tu doit appeler $nick en $n
Tu vois le principe ?

Après pour ce qui la seconde procédure :

TCL
proc say:pubtime {nick uhost handle chan args}



nick correspond par exemple à la personne qui exécute la commande !op.
Exemple tu va taper !op le bot va éxécuter le mode +o sur $nick qui et toi.

uhost = le host moi perso je fait jamais uhost mais host directement..
handle = ton accès plus ou moins dans l'eggdrop.

Exemple lorsque tu es en pl tu tape .match * il va te sortir les pseudos enregistré dans sa base de données plus exactement les handle c'est ça en faite.

chan c'est ce qui correspond au salon lorsque tu appel $chan

Exemple tu et sur #toto et tu tape !op le bot va faire : mode +o $nick sur $chan et $chan correspond à #toto.. Même si selon moi il et préférable de mettre un "set chan [lindex $arg 2] Par exemple"

et args tu l'utilise lorsque tu appel par exemple la victime ou une autre utilisation.

Exemple $nick viens de kick $args sur $chan même si $args moi je préfére pareil "set args..." avec un split sur arg celon la fonction..

En gros c'est ça
Répondre Avertir
#13
Ce que dit alias est juste, en gros, à un détail près, et très important.
aliasangelius a écrit :Ceci et des raccourcis de : hour, min, day, month, year
Ce ne sont pas du tout des raccourcis mais des nommages de variables.

Un bind time envoit 5 éléments à la procédure. Il faut donc que la déclaration de la procédure contienne l'affectation de ces éléments à des variables utilisables.
Ensuite, le nommage n'a pas ou peu d'importance, le but est juste de rendre le code relativement lisible et explicite.

Tu vois d'ailleurs l'appel explicite à la procédure:
TCL
say:time 0 0 0 0 0


Il y a bien 5 arguments envoyés.

Autre petit nota:
TCL
proc:blabla { n h h c a }


Ca, jamais : il y a deux fois l'affectation à $h...
Répondre
#14
Salut CC,

Oui en effet j'ai fait une erreur c'est plus explicité comment tu le dit Smile

Pour ce qui et des n h h c a je suis d'accord avec toi je prenez un exemple tout comme j'aurais pus dire n h c a c'était pour expliquer plus ou moins.

Même si pour ma part faire ce type de chose dans une procédure je trouve ça idiot et inutile il et préférable de faire un code stricte !
Répondre Avertir


Atteindre :


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