[script] Vie de merde (VDM)
#61
Bonjour,

Le script marche très bien chez moi.
Quelle est l'erreur ?
Répondre Avertir
#62
ealexp a écrit :Bonjour,

Le script marche très bien chez moi.
Quelle est l'erreur ?

Bonjour

Heu c'est quelle version que tu as et ou le DL ?

merci Smile

Mon ancienne version ne marche plus en !vdm

cdt Smile
Répondre Avertir
#63
Et l'erreur c'est quoi ?
Répondre Avertir
#64
ealexp a écrit :Et l'erreur c'est quoi ?

Bah rien il affiche queud ou alors le message en PL :

Tcl error [::vdm::pub_disp_vdm]: can't read "res": no such variable

Voilou Smile
Répondre Avertir
#65
En cherchant un peut sur le forum tu trouvera comment régler ton souci. Smile

ton erreur a était poster et résolu
Répondre Avertir
#66
Yes p'être mais tout ce que j'ai lu n'a pas résolu le pb Sad

pas grave merci qd même Smile
Répondre Avertir
#67
Reuu j'ai trouvé la version 2 de vdm Smile

Mais comme j'avais pas le Http.tcl, un ami m'a envoyé le sien mais ça me bug en ssh :

[11:54] Tcl error in file 'bot.conf':
[11:54] conflicting versions provided for package "http": 2.7.2, then 2.3
while executing
"package provide http 2.3"
(file "scripts/Http.tcl" line 1)
invoked from within
"source scripts/Http.tcl"
(file "bot.conf" line 302)
[11:54] * FICHIER DE CONFIGURATION NON CHARGE (INTROUVABLE OU ERREUR)

(alors que le fichier est bien ds le .conf en source scripts/Http.tcl et également dans le dossier "scripts" )

je n'y connais pas trop, voire très peu ...

ké sé passa ?

Si quelqu'un peut m'éclairer merci bcp
Répondre Avertir
#68
Je pense que tu as déjà le package http 2.7.2 (surement dans libtcl) et ça fait un conflit de fournir en plus le package du même nom à une version inférieure.
Essaye de ne pas mettre l'appel à scripts/Http.tcl
Répondre
#69
CrazyCat a écrit :Je pense que tu as déjà le package http 2.7.2 (surement dans libtcl) et ça fait un conflit de fournir en plus le package du même nom à une version inférieure.
Essaye de ne pas mettre l'appel à scripts/Http.tcl

merci de ta réponse, mais (non chui pas blond quoikeu ...) tu le trouve ou le http 2.7.2 ?? car j'ai pas vu le libtcl ....

j'ai viré de source scripts le Http.tcl mais !vdm fonctionne pas Smile

marchi
Répondre Avertir
#70
Quelle est l'erreur sans l'appel à Http.tcl ?

Comme je te l'ai dit juste au dessus, il y a un package http.tcl inclut dans tcllib, tu ne le trouveras pas en tant que fichier tcl, ne le cherche donc pas. Cherche plutôt la source du problème, si elle n'est pas sur le package http, kénenahafout' ?
Répondre
#71
En fait aucune erreur que ce soit en PL ou ailleurs, a part le fait qu'a la commande !vdm rien ne se passe :)

En y regardant mieux je n'ai pas vu non plus de spécification de salons ou le !vdm doit être actif .... Ou alors j'ai loupé quelque chose ..

je CC le TCL ici :

tcl
###############################################
#                                               #
#             V i e D e M e r d e               #
#              v2.0 (04/08/2010)                #
# 	    par Galdinx, MenzAgitat et ealexp     #
#                                               #
#          http://www.boulets-roxx.com          #
#        IRC:  irc.teepi.net    #boulets        #
#              irc.epiknet.org  #boulets        #
#                                               #
#         Les scripts de MenzAgitat sont        #
#  téléchargeables sur  http://www.egghelp.org  #
#                   ou  http://www.eggdrop.fr   #
#                                               #
 ###############################################

 
# Description
# script permettant d'afficher une citation, soit prise au hasard, soit selon son numéro, soit la dernière parue,
# depuis le site http://www.viedemerde.fr/

 
# Changelog : 
# 1.0 : 1ère version
# 1.1 : Correction suite à un changement de payload du site + simplification des regsub
# 2.0 : Modifications apportees par ealexp
#			- Correction suite à un changement du payload du site.
#			- Commandes !vdm last[- nombre] et !vdm <numéro>. 
#			- Paramètres suppélmentaires (urls du site, et couleurs de la VDM).

#
# LICENCE:
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
 
if {[catch {package require http}]} {
	putlog "\002$::vdm::scriptname\002 : Vous avez besoin du package http pour pouvoir utiliser ce script."
	return
}
 
if {[catch {package require Tcl 8.5}]} {
	putlog "\002$::vdm::scriptname\002 : Vous avez besoin de Tcl en version 8.5 au moins pour pouvoir utiliser ce script."
}
 
if {[info commands vdm::uninstall] eq "::vdm::uninstall"} { vdm::uninstall }
 
namespace eval ::vdm {
	#######################
	#                     #
	#    CONFIGURATION    #
	#                     #
	#######################
	
	########################################
	# COMMANDES PUBLIQUES ET AUTORISATIONS #
	#######################################

	# Nom de la commande publique
	# Valeur par défaut : "!vdm"
	variable vdm_command_name "!vdm"

	# Autorisations pour la commande
	# Valeur par défaut "-|-"
	variable vdm_command_flags "-|-"
	
	###################
	# PARAMÈTRES HTTP #
	###################

	# UserAgent
	# Valeur par défaut : "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
	variable useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
	
	# Url pour récupérer une VDM aléatoire
	# Valeur par défaut : "http://www.viedemerde.fr/aleatoire"
	variable url_aleatoire "http://www.viedemerde.fr/aleatoire"

	# Url pour récupérer une seule VDM
	# Valeur par défaut : "http://www.viedemerde.fr/inclassable/"
	variable url_une "http://www.viedemerde.fr/inclassable/"

	# Url pour récupérer la dernière VDM
	# Valeur par défaut : "http://www.viedemerde.fr/"
	variable url_dernieres "http://www.viedemerde.fr/"
	
	#################
	# MISE EN FORME #
	#################
	
	# Note : les couleurs sont à mettre sous la forme "<avant-plan>[,arrière-plan]".
	#        Si vous ne voulez pas de couleurs, mettez une chaîne vide ("")

	# Couleur du texte des VDM
	# Valeur par défaut : ""
	variable couleur_texte_vdm "00,01"
	
	# Couleur du texte des erreurs
	# Valeur par défaut : "14"
	variable couleur_texte_erreurs "14"
	
	# Affichage de l'ID, de la date ou de l'auteur de la VDM (dans l'ordre).
	# Valeur par défaut : "1 1 1"
	# Exemples : "1 1 0" pour afficher l'id, la date mais pas l'auteur de la VDM.
	variable affichage "1 1 1"

	# Couleur de l'ID de la VDM
	# Valeur par défaut : "01,15"
	variable couleur_id_vdm "01,15"
	
	# Couleur de la date de la VDM
	# Valeur par défaut : ""
	variable couleur_date_vdm ""
	
	# Couleur de l'auteur de la VDM
	# Valeur par défaut : ""
	variable couleur_auteur_vdm ""

	# Nombre de caractères maximum par ligne
	# Valeur par défaut : 420
	variable max_line_length 420

	##############################
	# PARAMETRES DE L'ANTI-FLOOD #
	##############################
	
	# Anti-flood (0 = désactivé, 1 = activé)
	variable antiflood 1

	# Combien de commandes sont autorisées en combien de temps ?
	# exemple : "4:45" = 4 commandes maximum en 45 secondes;
	# les suivantes seront ignorées.
	variable cmdflood_vdm "4:45"
	
	# Intervalle de temps minimum entre l'affichage de 2 messages
	# avertissant que l'anti-flood a été déclenché (ne réglez pas
	# cette valeur trop bas afin de ne pas être floodé par les messages
	# d'avertissement de l'anti-flood...)
	variable antiflood_msg_interval 20

	#######################################################################
	#                                                                     #
	#    NE RIEN MODIFIER APRÈS CE CADRE SI VOUS NE CONNAISSEZ PAS TCL    #
	#                                                                     #
	#######################################################################	
 
	variable script_name "VDM"
	variable script_version "2.0"
 
	variable nb_vdm_page 13

	# Flag udef
	setudef flag vdm
 
	variable current_flood ""
	variable antiflood_msg ""
 
	proc uninstall {args} {
		putlog "Désallocation des ressources de \002$::vdm::script_name\002..."
		foreach binding [lsearch -inline -all -regexp [binds *[set ns [string range [namespace current] 2 end]]*] " \{?(::)?$ns"] {
			unbind [lindex $binding 0] [lindex $binding 1] [lindex $binding 2] [lindex $binding 4]
		}
		foreach running_timer [timers] {
			if { [string match "*[namespace current]::*" [lindex $running_timer 1]] } { killtimer [lindex $running_timer 2] }
		}
		foreach running_utimer [utimers] {
			if { [string match "*[namespace current]::*" [lindex $running_utimer 1]] } { killutimer [lindex $running_utimer 2] }
		}
		namespace delete [namespace current]
	}
}

 
# ::vdm::vdm_command
#
# Procédure principale
proc ::vdm::vdm_command {nick host handle chan arg} {
	if {![channel get $chan vdm]} {
		return
	}
	if {($::vdm::antiflood == 1) && ([::vdm::antiflood $chan] == "flood")} {
		return
	}
 
	if {[lindex [set arg [split $arg]] 0] eq ""} {
		set vdm [::vdm::fetch_vdm $::vdm::url_aleatoire]
	} elseif {[string is integer [lindex $arg 0]]} {
		set vdm [::vdm::fetch_vdm $::vdm::url_une$arg]
	} elseif {$arg eq "last"} {
		set vdm [::vdm::fetch_vdm $::vdm::url_dernieres]
	} elseif {[regexp {last-(.*)} $arg dummy nb]} {
		if {$nb > $::vdm::nb_vdm_page} {
			puthelp "PRIVMSG $chan :[code $::vdm::couleur_texte_erreurs $chan]L'index doit être inférieur ou égal à $::vdm::nb_vdm_page.[code endcolor $chan]"
			return
		}
		set vdm [::vdm::fetch_vdm $::vdm::url_dernieres $nb]
	} else {
		puthelp "PRIVMSG $chan :[code $::vdm::couleur_texte_erreurs $chan]Usage : !vdm \[numéro/last\[- 1 à $::vdm::nb_vdm_page\]\][code endcolor $chan]"
		return
	}
 
	switch $vdm {
		"http_error" {
			puthelp "PRIVMSG $chan :[code $::vdm::couleur_texte_erreurs $chan]La connexion à VDM n'a pas pu être établie. Peut-être le site rencontre-t-il des difficultés techniques. Veuillez réessayer plus tard.[code endcolor $chan]"
			return
		}
 
		"vdm_error" {
			puthelp "PRIVMSG $chan :[code $::vdm::couleur_texte_erreurs $chan]La VDM n'a pas pu être récupérée.[code endcolor $chan]"
			return
		}
	}
 
	lassign $::vdm::affichage afficher_id afficher_date afficher_auteur
	lassign $vdm id message date auteur

	# Affichage de l'ID 
	if {$afficher_id} {
		append privmsg "[code $::vdm::couleur_id_vdm $chan]\[$id\][code endcolor $chan] "
	}

	# La VDM en elle-même
	append privmsg "[code $::vdm::couleur_texte_vdm $chan][::vdm::string_filter $message $chan][code endcolor $chan]"

	# Affichage de la date
	if {$afficher_date} {
		append privmsg " - [code $::vdm::couleur_date_vdm $chan]$date[code endcolor $chan]"
	}
	
	# Affichage de l'auteur
	if {$afficher_auteur} {
		append privmsg " - par [code $::vdm::couleur_auteur_vdm $chan]$auteur[code endcolor $chan]"
	}
 
	foreach ligne [::vdm::split_line $privmsg] {
		puthelp "PRIVMSG $chan :$ligne"
	}
	return
}

# ::vdm::fetch_vdm
#
# Récupère la page donnée, et la parse pour récupérer la xième VDM présente.
# En cas de succès, elle retourne une liste contenant l'id et le contenu de la VDM.
# Si une erreur s'est produite, elle retourne "error"
# Note : la présentation des VDM est la même pour toutes les pages (VDM aléatoires, une seule VDM et dernière VDM postée), donc il n'y a pas besoin de plusieurs procédures.
 
proc ::vdm::fetch_vdm {url {index 0} args} {
	set token [::vdm::geturl $url {*}$args]
 
	if {[::http::status $token] ne "ok"} {
		::http::cleanup $token
		return "http_error"
	}
 	foreach {dummy id vdm date auteur} [regexp -all -inline {<div class="post" id="(.+?)">(.+?)</p><div class="date">(?:.*?)<p style="margin-top:(?:.*?)">(.*?) - <a class="(?:.*?)" href="(?:.*?)">(?:.*?)</a> - par (.*?) } [::http::data $token]] {
		lappend vdm_list [list $id $vdm $date $auteur]
	}
 
	::http::cleanup $token
	if {[info exists vdm_list] eq ""} {
		return "vdm_error"
	}
 
	return [lindex $vdm_list $index]
}

# ::vdm::string_filter
#
# Nettoie la VDM
 
proc ::vdm::string_filter {str chan} {
	set str [string map -nocase {
		"&agrave;"			"à"		"&agrave;"			"à"		"&aacute;"			"á"		"&acirc;"			"â"
		"&atilde;"			"ã"		"&auml;"			"ä"		"&aring;"			"å"		"&aelig;"			"æ"
		"&ccedil;"			"ç"		"&egrave;"			"è"		"&eacute;"			"é"		"&ecirc;"			"ê"
		"&euml;"			"ë"		"&igrave;"			"ì"		"&iacute;"			"í"		"&icirc;"			"î"
		"&iuml;"			"ï"		"&eth;"				"ð"		"&ntilde;"			"ñ"		"&ograve;"			"ò"
		"&oacute;"			"ó"		"&ocirc;"			"ô"		"&otilde;"			"õ"		"&ouml;"			"ö"
		"&divide;"			"÷"		"&oslash;"			"ø"		"&ugrave;"			"ù"		"&uacute;"			"ú"
		"&ucirc;"			"û"		"&uuml;"			"ü"		"&yacute;"			"ý"		"&thorn;"			"þ"
		"&yuml;"			"ÿ"		"&quot;"			"\""	"&amp;"				"&"		"&euro;"			"€"
		"&oelig;"			"œ"		"&Yuml;"			"Ÿ"		"&nbsp;"			" "		"&iexcl;"			"¡"
		"&cent;"			"¢"		"&pound;"			"£"		"&curren;"			"¤"		"&yen;"				"¥"
		"&brvbar;"			"¦"		"&brkbar;"			"¦"		"&sect;"			"§"		"&uml;"				"¨"
		"&die;"				"¨"		"&copy;"			"©"		"&ordf;"			"ª"		"&laquo;"			"«"
		"&not;"				"¬"		"&shy;"				"­-"	"&reg;"				"®"		"&macr;"			"¯"
		"&hibar;"			"¯"		"&deg;"				"°"		"&plusmn;"			"±"		"&sup2;"			"²"
		"&sup3;"			"³"		"&acute;"			"´"		"&micro;"			"µ"		"&para;"			"¶"
		"&middot;"			"·"		"&cedil;"			"¸"		"&sup1;"			"¹"		"&ordm;"			"º"
		"&raquo;"			"»"		"&frac14;"			"¼"		"&frac12;"			"½"		"&frac34;"			"¾"
		"&iquest;"			"¿"		"&Agrave;"			"À"		"&Aacute;"			"Á"		"&Acirc;"			"Â"
		"&Atilde;"			"Ã"		"&Auml;"			"Ä"		"&Aring;"			"Å"		"&AElig;"			"Æ"
		"&Ccedil;"			"Ç"		"&Egrave;"			"È"		"&Eacute;"			"É"		"&Ecirc;"			"Ê"
		"&Euml;"			"Ë"		"&Igrave;"			"í"		"&Iacute;"			"Í"		"&Icirc;"			"Î"
		"&Iuml;"			"Ï"		"&ETH;"				"Ð"		"&Dstrok;"			"Ð"		"&Ntilde;"			"Ñ"
		"&Ograve;"			"Ò"		"&Oacute;"			"Ó"		"&Ocirc;"			"Ô"		"&Otilde;"			"Õ"
		"&Ouml;"			"Ö"		"&times;"			"×"		"&Oslash;"			"Ø"		"&Ugrave;"			"Ù"
		"&Uacute;"			"Ê"		"&Ucirc;"			"Û"		"&Uuml;"			"í"		"&Yacute;"			"Ý"
		"&THORN;"			"Î"		"&szlig;"			"ß"		"\r"				""		"\t"				""
		"'"			"\'"	"'"				"\'"	"&gt;"				">"		"&lt;"				"<"
		"""				"\'"	"&"				"&"		"#91;"				"\("	"\"				"\/"
		"]"				")"		"{"			"("		"}"			")"		"£"			"£"
		"¨"			"¨"		"©"			"©"		"«"			"«"		"­"			"­"
		"®"			"®"		"´"			"´"		"·"			"·"		"¹"			"¹"
		"»"			"»"		"¼"			"¼"		"½"			"½"		"¾"			"¾"
		"À"			"À"		"Á"			"Á"		"Â"			"Â"		"Ã"			"Ã"
		"Ä"			"Ä"		"Å"			"Å"		"Æ"			"Æ"		"Ç"			"Ç"
		"È"			"È"		"É"			"É"		"Ê"			"Ê"		"Ë"			"Ë"
		"í"			"í"		"Í"			"Í"		"Î"			"Î"		"Ï"			"Ï"
		"Ð"			"Ð"		"Ñ"			"Ñ"		"Ò"			"Ò"		"Ó"			"Ó"
		"Ô"			"Ô"		"Õ"			"Õ"		"Ö"			"Ö"		"×"			"×"
		"Ø"			"Ø"		"Ù"			"Ù"		"Ê"			"Ê"		"Û"			"Û"
		"í"			"í"		"Ý"			"Ý"		"Î"			"Î"		"ß"			"ß"
		"à"			"à"		"á"			"á"		"â"			"â"		"ã"			"ã"
		"ä"			"ä"		"å"			"å"		"æ"			"æ"		"ç"			"ç"
		"è"			"è"		"é"			"é"		"ê"			"ê"		"ë"			"ë"
		"ì"			"ì"		"í"			"í"		"î"			"î"		"ï"			"ï"
		"ð"			"ð"		"ñ"			"ñ"		"ò"			"ò"		"ó"			"ó"
		"ô"			"ô"		"õ"			"õ"		"ö"			"ö"		"÷"			"÷"
		"ø"			"ø"		"ù"			"ù"		"ú"			"ú"		"û"			"û"
		"ü"			"ü"		"ý"			"ý"		"þ"			"þ"		
 
	} $str]
	regsub -all {<br />} $str " " str
	regsub -all {<[^>]+>} $str "" str
	regsub -all {\n} $str " " str
	regsub {VDM$} $str "[code bold $chan]VDM[code bold $chan]" str
 
	return $str
}
 
# ::vdm::geturl
#
# Appelle ::http::geturl et suit les redirections.
 
proc ::vdm::geturl {url args} {
	::http::config -useragent $::vdm::useragent
	set original_url_host [lindex [regexp -inline {http://(.*?)/} $url] 0]
	while {1} {
		set token [::http::geturl $url {*}$args]
		if {![string match {30[1237]} [::http::ncode $token]]} {
			return $token
		}
		set meta [set ${token}(meta)]
		::http::cleanup $token
		if {![dict exists $meta Location]} {
			return $token
		}
		set url [dict get $meta Location]
		unset meta
		if {[regexp -inline {http://(.*?)/} $url] eq ""} {
			set url $original_url_host$url
		}
	}
}
# ::vdm::antiflood
#
# Vérifie si l'antiflood n'est pas déclenché sur le chan.
 
proc ::vdm::antiflood {chan} {
	if {![dict exists $::vdm::current_flood $chan]} {
		dict set ::vdm::current_flood $chan 0
	}
	if {![dict exists $::vdm::antiflood_msg $chan]} {
		dict set ::vdm::antiflood_msg $chan 0
	}
 
	set max_requests [lindex [split $::vdm::cmdflood_vdm ":"] 0]
	set time [lindex [split $::vdm::cmdflood_vdm ":"] 1]
 
	if {[dict get $::vdm::current_flood $chan] >= $max_requests} {
		if {[dict get $::vdm::antiflood_msg $chan] == 0} {
			dict set ::vdm::antiflood_msg $chan 1
			putquick "PRIVMSG $chan :[code 7 $chan]:::[code $::vdm::couleur_texte_erreurs $chan] Contrôle de flood activé pour la commande [code bold $chan]$::vdm::vdm_command_name[code bold $chan] : pas plus de $max_requests requête(s) toutes les $time secondes.[code endcolor $chan]"
			utimer $::vdm::antiflood_msg_interval [list ::vdm::antiflood_msg_reset $chan]
		}
		return "flood"
	} else {
		dict incr ::vdm::current_flood $chan
		utimer $time [list ::vdm::antiflood_close_instance $chan]
		return "no flood"
	}
}
 
# ::vdm::antiflood_close_instance
 
proc ::vdm::antiflood_close_instance {chan} {
	if {[dict get $::vdm::current_flood $chan] > 0} {
		dict incr ::vdm::current_flood $chan -1
	}
}
 
# ::vdm::antiflood_msg_reset
 
proc ::vdm::antiflood_msg_reset {chan} {
	dict set ::vdm::antiflood_msg $chan 0
}
 
 
proc ::vdm::code {code chan} {
	if {$code eq "bold"} {
		if {![string match *c* [lindex [split [getchanmode $chan]] 0]]} { return "\002" } { return "" }
	} elseif {$code eq "underline"} {
		if {![string match *c* [lindex [split [getchanmode $chan]] 0]]} { return "\037" } { return "" }
	} elseif {$code eq "endcolor"} {
		if {![string match *c* [lindex [split [getchanmode $chan]] 0]]} { return "\003" } { return "" }
	} elseif {$code ne ""} {
		if {![string match *c* [lindex [split [getchanmode $chan]] 0]]} { return "\003$code" } { return "" }
	} else {
		return ""
	}
}
 
proc ::vdm::split_line {texte} {
	set output_length [string length $texte]
	set letter_index 0
	while {$letter_index < $output_length} {
		if {$output_length - $letter_index > $::vdm::max_line_length} {
			set cut_index [string last " " $texte [expr $letter_index + $::vdm::max_line_length ]]	
 		} else {
			set cut_index $output_length 
		}
		lappend output [string range $texte $letter_index $cut_index]
		set letter_index $cut_index
	}
	if { ![info exists output] } { lappend output {} }
	return $output
}
 
bind evnt -|- prerehash ::vdm::uninstall
bind pub $::vdm::vdm_command_flags $::vdm::vdm_command_name ::vdm::vdm_command


Répondre Avertir
#72
Il y a juste un "setudef flag vdm", ce qui indique que tu dois surement faire quelque chose comme:
Code :
.chanset #canal +vdm
pour activer le tcl sur #canal
Répondre
#73
reu et merci Smile

mais je met ça ou ?

dslé de ne pas être fortiche en tcl :/

cDt Smile
Répondre Avertir
#74
Bonjour

pheeric, tu dois taper ".chanset #<le nom de ton canal> +vdm" en partyline. Rassure-moi, tu sais comment accéder à la partyline de ton robot ?
Répondre Avertir
#75
Mdr oui qd même Smile

même si je ne suis pas un as du tcl loin de la

merci je test
Répondre Avertir


Atteindre :


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