21/07/2009, 01:50
Bonjour
Je viens poste un petit script qui devrais annoncer la saint du jour, un dicton, levé de soleil etc.... Mais aussi dire les anniversaires des gens qui ont rentré leur anniversaire.
Mais un soucis au niveau de l'annonce de la saint de jour dicton levé de soleil quand je tape la commande !aujourdhui j'ai une erreure en PL
voici ce que ca me dis:
[00:38] Tcl error [aujourd:hui]: bad index "html": must be integer or end?-integer?
Par contre l'ajout des anniversaires fonctionne bien.
Voici le script
Si quelqu'un a une petite idée....
Merci de votre futur aide
Je viens poste un petit script qui devrais annoncer la saint du jour, un dicton, levé de soleil etc.... Mais aussi dire les anniversaires des gens qui ont rentré leur anniversaire.
Mais un soucis au niveau de l'annonce de la saint de jour dicton levé de soleil quand je tape la commande !aujourdhui j'ai une erreure en PL
voici ce que ca me dis:
[00:38] Tcl error [aujourd:hui]: bad index "html": must be integer or end?-integer?
Par contre l'ajout des anniversaires fonctionne bien.
Voici le script
tcl
#################################################################################
# #
# 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> #
# #
# #
#################################################################################
##### CONFIGURATION #####
### nom du channel sur lequel le bot affichera les informations du jour :
set nouveaujour(channel) "#delirium"
##### 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\"> " "</td>" $indextest]
set nouveaujour(leve_soleil) [lindex $test 0]
set indextest [lindex $test 1]
set test [bongettext "$reponse" "<td width=\"30\" class=\"info\"> " "</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" "« " " »" $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" "« " " »" $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\"> " "</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\"> " "</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" "« " " »" $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" "« " " »" $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 "<" $contenu "<" contenu
regsub -all ">" $contenu ">" contenu
regsub -all "&" $contenu "et" contenu
regsub -all """ $contenu "" contenu
regsub -all "Á" $contenu "Á" contenu
regsub -all "Â" $contenu "Â" contenu
regsub -all "À" $contenu "À" contenu
regsub -all "Å" $contenu "Å" contenu
regsub -all "Ã" $contenu "Ã" contenu
regsub -all "Ä" $contenu "Ä" contenu
regsub -all "Ç" $contenu "Ç" contenu
regsub -all "É" $contenu "É" contenu
regsub -all "Ê" $contenu "Ê" contenu
regsub -all "È" $contenu "È" contenu
regsub -all "Í" $contenu "Í" contenu
regsub -all "Î" $contenu "Î" contenu
regsub -all "Ì" $contenu "í" contenu
regsub -all "Ï" $contenu "Ã" contenu
regsub -all "Ñ" $contenu "Ñ" contenu
regsub -all "Ó" $contenu "Ó" contenu
regsub -all "Ô" $contenu "Ô" contenu
regsub -all "Ò" $contenu "Ò" contenu
regsub -all "Ø" $contenu "Ø" contenu
regsub -all "Õ" $contenu "Õ" contenu
regsub -all "Ö" $contenu "Ö" contenu
regsub -all "Ú" $contenu "Ú" contenu
regsub -all "Û" $contenu "Û" contenu
regsub -all "Ù" $contenu "Ù" contenu
regsub -all "Ü" $contenu "í" contenu
regsub -all "Ý" $contenu "Ã" contenu
regsub -all "á" $contenu "á" contenu
regsub -all "æ" $contenu "ae" contenu
regsub -all "œ" $contenu "oe" contenu
regsub -all "à" $contenu "à" contenu
regsub -all "å" $contenu "å" contenu
regsub -all "ã" $contenu "ã" contenu
regsub -all "ä" $contenu "ä" contenu
regsub -all "ç" $contenu "ç" contenu
regsub -all "é" $contenu "é" contenu
regsub -all "ë" $contenu "ë" contenu
regsub -all "í" $contenu "í" contenu
regsub -all "è" $contenu "è" contenu
regsub -all "ì" $contenu "ì" contenu
regsub -all "ï" $contenu "ï" contenu
regsub -all "ñ" $contenu "ñ" contenu
regsub -all "ó" $contenu "ó" contenu
regsub -all "ô" $contenu "ô" contenu
regsub -all "â" $contenu "â" contenu
regsub -all "ê" $contenu "ê" contenu
regsub -all "ò" $contenu "ò" contenu
regsub -all "î" $contenu "î" contenu
regsub -all "õ" $contenu "õ" contenu
regsub -all "ö" $contenu "ö" contenu
regsub -all "ú" $contenu "ú" contenu
regsub -all "û" $contenu "û" contenu
regsub -all "ù" $contenu "ù" contenu
regsub -all "ü" $contenu "ü" contenu
regsub -all "ÿ" $contenu "ÿ" contenu
regsub -all "Æ" $contenu "AE" contenu
regsub -all "Œ" $contenu "OE" contenu
regsub -all "®" $contenu "®" contenu
regsub -all "©" $contenu "©" contenu
regsub -all "™" $contenu "(tm)" contenu
regsub -all "±" $contenu "±" contenu
regsub -all "°" $contenu "°" contenu
regsub -all "¹" $contenu "¹" contenu
regsub -all "²" $contenu "²" contenu
regsub -all "³" $contenu "³" contenu
regsub -all "×" $contenu "×" contenu
regsub -all "÷" $contenu "÷" contenu
regsub -all "€" $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 "«" $contenu "\"" contenu
regsub -all -nocase "»" $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"
}
Si quelqu'un a une petite idée....
Merci de votre futur aide