VDM.tcl qui publie toutes les X minutes
#16
bonjour,

ceci peut tu nous dire à quoi sert cela sert il ?

tcl
utimer 10 vdm::timerAnnounce
        proc ::vdm::timerAnnounce {} {
        vdm::pub_disp_vdm 0 - - - <CHAN>
        utimer 10 vdm::timerAnnounce



je vois nul part ta proc timerAnnounce mise à part ceci: proc ::vdm::timerAnnounce {} { mais que fait elle ? mystère ?

TCL VDM timer X 10mn

tcl
###############################################
#                                               #
#             V i e D e M e r d e               #
#  v1.0 (01/01/2009) par Galdinx et MenzAgitat  #
#                                               #
#          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 au hasard pris sur le site 
# http://www.viedemerde.fr/ grâce a une commande publique, "!vdm" par exemple
#

#
# Changelog
#
# 1.0 - 1ère version
#

#
# 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 { [lindex [split $version] 1] < 1061800 } { putloglev o * "\00304\002\[VDM - ERREUR\]\002\003 La version de votre eggdrop est \00304\002[lindex [split $version] 0]\002\003; vdm.tcl ne fonctionnera correctement que sur les eggdrops version 1.6.18 ou supérieure." ; return }
if { $tcl_version < 8.4 } { putloglev o * "\00304\002\[VDM - ERREUR\]\002\003 vdm.tcl nécessite que Tcl 8.4 (ou plus) soit installé pour fonctionner. Votre version actuelle de Tcl est \00304\002$tcl_version\002\003." ; return }
package require Tcl 8.4
if {[info commands vdm::uninstall] eq "::vdm::uninstall"} { vdm::uninstall }
namespace eval vdm {
 
 
 
	#######################
	#		  PARAMETRES      #
	#######################

	# Chans sur lesquels le script sera actif (séparés par un espace)
	# Remarque : attention aux majuscules, le nom du chan est sensible à la casse
	variable allowed_chans "#Salon"
	
 
	#### COMMANDES PUBLIQUES ET AUTORISATIONS

  # Commande utilisée pour afficher une citation
 	# ex. : "!vdm"
 	variable vdmcmd "!vdm"
 	# autorisations pour la commande !vdm
 	variable vdmauth "-|-"

 
	#### 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 MODIFIEZ RIEN APRES CE CADRE SI VOUS NE CONNAISSEZ PAS LE TCL #
#                                                                  #
#   DO NOT MODIFY ANYTHING BELOW THIS BOX IF YOU DON'T KNOW TCL    #
#                                                                  #
####################################################################
 
	variable scriptname "VieDeMerde"
	variable version "1.0.20090101"
	# inutilisé, conservé au cas où
	variable cmdflood_global "5:120"
 
	variable floodsettingsstring [split "global $cmdflood_global vdm $cmdflood_vdm"]
	variable floodsettings ; array set floodsettings $floodsettingsstring
	variable instance ; array set instance {}
	variable antiflood_msg ; array set antiflood_msg {}
	bind evnt - prerehash [namespace current]::uninstall
	bind time -|- {*0 * * * *} ::AutoMsgVdm
	bind pub $vdmauth $vdmcmd [namespace current]::pub_disp_vdm
	proc uninstall {args} {
		putlog "Désallocation des ressources de \002$vdm::scriptname...\002"
 		unbind evnt - prerehash [namespace current]::uninstall
 		catch { unbind pub $vdm::vdmauth $vdm::vdmcmd [namespace current]::pub_disp_vdm }
		namespace delete ::vdm
	}
 
}

 
#  Envoie de la Citation sur le Salon 

# -> Tout les combiens de minutes voulez vous que la publicité soit envoyé ?
 
proc ::AutoMsgVdm {min hour args} {
global botnick
 
foreach chan $vdm::allowed_chans {
 
		set useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
		set url "http://www.viedemerde.fr/aleatoire"
 
		::http::config -useragent $useragent
		set token [::http::geturl "$url" -timeout 6000]
 
		if {[::http::status $token] == "ok"} {
			regexp {<div class="post">(.+?)</p>} [::http::data $token] res
			regsub {<div class="post"><p>} $res "" res
			regsub "<img src=\"http://cdn.betacie.com/viedemerde/images/new.png\" align=\"absmiddle\" /> " $res "" res
			regsub {</p>} $res "" res
			regsub {\n} $res "" res
			regsub -all {<a href="[^\ ]+" class="lienvdm">} $res "" res
            regsub -all {</a>} $res "" res
			regsub {VDM$} $res "\002VDM\002" res
			set result [vdm::string_filter $res]
			puthelp "privmsg $chan :(\002Vie De Merde\002) $result"
		} else {
			puthelp "privmsg $chan :\00314La connexion à \002Vie de merde\002 n'a pu être établie. Peut-être le site rencontre-t-il des difficultés techniques. Veuillez réessayer plus tard.\003"
		}
	}
  }
 
proc vdm::pub_disp_vdm {nick host handle chan args} {
	if {[lsearch -exact [split $vdm::allowed_chans] $chan] != -1} {
		if {($vdm::antiflood == 1) && ([vdm::antiflood $chan "vdm"] == "flood")} { return }
 
		set useragent "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
		set url "http://www.viedemerde.fr/aleatoire"
 
		::http::config -useragent $useragent
		set token [::http::geturl "$url" -timeout 6000]
 
		if {[::http::status $token] == "ok"} {
			regexp {<div class="post">(.+?)</p>} [::http::data $token] res
			regsub {<div class="post"><p>} $res "" res
			regsub "<img src=\"http://cdn.betacie.com/viedemerde/images/new.png\" align=\"absmiddle\" /> " $res "" res
			regsub {</p>} $res "" res
			regsub {\n} $res "" res
			regsub -all {<a href="[^\ ]+" class="lienvdm">} $res "" res
            regsub -all {</a>} $res "" res
			regsub {VDM$} $res "\002VDM\002" res
			set result [vdm::string_filter $res]
			puthelp "privmsg $chan :(\002Vie De Merde\002) $result"
		} else {
			puthelp "privmsg $chan :\00314La connexion à \002Vie de merde\002 n'a pu être établie. Peut-être le site rencontre-t-il des difficultés techniques. Veuillez réessayer plus tard.\003"
		}
	}
}

 
##### Conversion des caractères html spéciaux et filtrage des balises HTML
proc vdm::string_filter { str } {
	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
 	set str [encoding convertfrom "utf-8" $str ]
	return "${str}"
}
 
 
proc vdm::antiflood {chan type} {
  variable antiflood_msg
  if {![info exists antiflood_msg($chan$type)]} { set antiflood_msg($chan$type) 0 }
  variable instance
  if {![info exists instance($chan$type)]} { set instance($chan$type) 0 }
  set max_instances [lindex [split $vdm::floodsettings($type) ":"] 0]
  set instance_length [lindex [split $vdm::floodsettings($type) ":"] 1]
  if { $instance($chan$type) >= $max_instances } {
    if { $antiflood_msg($chan$type) == 0 } {
      set antiflood_msg($chan$type) 1
      if {$type != "global"} {
        putquick "privmsg $chan :\0037:::\00314 Contrôle de flood activé pour la commande \002!$type\002 : pas plus de $max_instances requête(s) toutes les $instance_length secondes.\003"
      } else {
        putquick "privmsg $chan :\0037:::\00314 Contrôle de flood sur les commandes de \002Vie De Merde\002 : pas plus de $max_instances commandes toutes les $instance_length secondes.\003"
      }
      utimer $vdm::antiflood_msg_interval "vdm::antiflood_msg_reset $chan $type"
    }
    return "flood"
  } else {
    incr instance($chan$type)
    utimer $instance_length "vdm::antiflood_close_instance $chan $type"
    return "no flood"
  }
}
 
proc vdm::antiflood_close_instance {chan type} {
  variable instance
  if { $instance($chan$type) > 0 } { incr instance($chan$type) -1 }
}
 
proc vdm::antiflood_msg_reset {chan type} {
  variable antiflood_msg
  set antiflood_msg($chan$type) 0
}
 
 
putlog "\002*$vdm::scriptname v$vdm::version*\002 par Galdinx et MenzAgitat ( \037\00312http://www.boulets-roxx.com\003\037 ) a été chargé."



Avant de faire bêtement un copier coller modifie bien le tcl car dans le poste y a \ à remettre donc la je t'invite à corriger cela :)


Cordialement DnS
Répondre Avertir


Atteindre :


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