[TCL] Problème Multichan & dédicace
#1
Bonjour,

je viens de me créer un petit tcl pour la gestion de ma webradio

Je viens me tournée vers vous vu que j'ai trouver votre site via google.

TCL
#
##############################################################
# TCL RADIO POUR RNG CODER PAR [Flo]  #
##############################################################
#
 
package require mysqltcl

#
########################
# CONFIGURATION DU TCL #
########################
#

# récupère le la variable titre
set ::basetitre ""

# récupère le titre 
set ::titre ""

# Salon ou serra poser le robot radio
set ::salradio  "#RnG"
set ::salradio2 "#accueil"
set ::salon "#accueil #rng"

 
# Nom de la radio
set ::anim "R-n-G"

# Url pour afficher toute les 10 mins une pub sur le général.
set ::url  "http://www.r-n-g.fr"
set ::url2 "http://www.facebook.com/pages/R-n-G-La-Puissance-de-la-Musique/141307675927662"
set ::cmds "!radio"
 
set SQL_HOST  "localhost"
set SQL_LOGIN "rng"
set SQL_PASS  "pass"
set SQL_BASE  "rng"
set SQL_SOCK  "/var/run/mysqld/mysqld.sock"

#
##################################
# FIN DE LA CONFIGURATION DU TCL #
# A PARTIR D ICI NE PLUS TOUCHER #
# SI VOUS CONNAISSER PAS LE TCL  #
##################################
#

#
#############
# LES BINDS #
#############
#
 
bind pub - !dedicace  		stream:pub:dedi
bind msg - dedicace   		stream:msg:dedi
bind pub - !titre     		stream:pub:titre
bind msg - titre      		stream:msg:titre
bind pub - !radio     		stream:pub:radio
bind msg - radio			stream:msg:radio
bind pub - !ecoute			stream:pub:ecoute
bind msg - ecoute			stream:msg:ecoute
bind pub - !facebook  		stream:pub:face
bind msg - facebook			stream:msg:face
bind time - "00 03 * * *" 	stream:time:animation
bind time - "00 * * * *"  	stream:time:pub
bind join RM * 				stream:animteur
bind join RF *				stream:animatrice 

#
#################
# FIN DES BINDS #
#################
#
 
proc mysql:connect {} {
set ::mysqlink [mysqlconnect -host $::SQL_HOST -user $::SQL_LOGIN -password $::SQL_PASS -sock $::SQL_SOCK]
mysqluse $::mysqlink $::SQL_BASE
}
 
proc mysql:deconnect {} {
mysqlclose $::mysqlink; unset -nocomplain ::mysqlink
}
 
proc mysql:add_dedi {user dedi} {
mysql:connect
mysqlsel $::mysqlink "INSERT INTO site_dedi VALUES('', '$user', '$dedi', 'irc')"
mysql:deconnect
}

#
################
# DEBUG ACCENT #
################
#
 
proc debuf {code_text}  {
regsub -all "‘" $code_text "\[" code_text
regsub -all "“" $code_text "\]" code_text
regsub -all "&#x3C;" $code_text "<" code_text
regsub -all "&#x3E;" $code_text ">" code_text
regsub -all "&#x22;" $code_text "\"" code_text
regsub -all "&#x27;" $code_text "'" code_text
regsub -all "&#xFF;" $code_text "" code_text
regsub -all "&#xB4;" $code_text "´" code_text
regsub -all "&#x96;" $code_text "-" code_text
regsub -all "&#xFC;" $code_text "ü" code_text
regsub -all "&#xD6;" $code_text "Ö" code_text
regsub -all "&#xC4;" $code_text "Ä" code_text
regsub -all "&#xDC;" $code_text "í" code_text
regsub -all "&#xE0;" $code_text "à" code_text
regsub -all "&#xE1;" $code_text "á" code_text
regsub -all "&#xE2;" $code_text "â" code_text
regsub -all "&#xE3;" $code_text "ã" code_text
regsub -all "&#xE4;" $code_text "ä" code_text
regsub -all "&#xE7;" $code_text "ç" code_text
regsub -all "&#xE8;" $code_text "è" code_text
regsub -all "&#xE9;" $code_text "é" code_text
regsub -all "&#xEA;" $code_text "ê" code_text
regsub -all "&#xEB;" $code_text "ë" code_text
regsub -all "&#xEC;" $code_text "ì" code_text
regsub -all "&#xED;" $code_text "í" code_text
regsub -all "&#xEE;" $code_text "î" code_text
regsub -all "&#xEF;" $code_text "ï" code_text
regsub -all "&#xF6;" $code_text "ö" code_text
regsub -all "&#xFC;" $code_text "ü" code_text
regsub -all "&#xA8;" $code_text "¨" code_text
regsub -all "&#xF9;" $code_text "ù" code_text
regsub -all "{" $code_text "" code_text
regsub -all "#x26;" $code_text "" code_text    
regsub -all "}" $code_text "" code_text
      return $code_text
}

#
######################
# AFFICHAGE DU TITRE #
######################
#
 
 
proc stream:pub:titre {nick uhost handle channel data} {
set ::page "http://www.r-n-g.fr/website_sources/shoutcast.inc.php"
set ::oups [http::geturl $::page ]
set ::titre [http::data $::oups ]
set ::titre [split $::titre]
set ::titre2 [ debuf $::titre ]
if { $::titre2 != $::basetitre } {
	foreach a [channels] {
		if {[string equal -nocase $channel $a]} {
set ::basetitre $::titre2
putquick "NOTICE $nick :\0033..::: \0034$::anim \0033:::..\0033 \0032Vous Propose d'écouter: \0033..::: \0034 $::titre2 \0033:::..\0032" 
		} else {
return $::titre2 
	}
	utimer 15 [list untel 1]
		}
	}
}
 
 
proc stream:msg:titre {nick uhost channel handle data} {
set ::page "http://www.r-n-g.fr/website_sources/shoutcast.inc.php"
set ::oups [http::geturl $::page ]
set ::titre [http::data $::oups ]
set ::titre [split $::titre]
set ::titre2 [ debuf $::titre ]
if { $::titre2 != $::basetitre } {
foreach a $::salon {
if {[string equal -nocase $channel $a]} {
set ::basetitre $::titre2
putquick "NOTICE $nick :\0033..::: \0034$::anim \0033:::..\0033 \0032Vous Propose d'écouter: \0033..::: \0034 $::titre2 \0033:::..\0032" 
		} else {
return $::titre2 
	}
	utimer 15 [list untel 1]
		}
	}
}

 
#
##############################
# TIMER POUR REBOOT LE ROBOT #
##############################
#
 
proc stream:time:animation {min hour day month year } {
   putquick "PRIVMSG $::salradio : \037\00302 Relancement automatique du bot :\037" 
   restart
}

#
#############################################
# TIMER POUR AFFICHER LA PUB SUR LE GENERAL #
#############################################
#
 
proc stream:time:pub {min hour day month year } {
putquick "PRIVMSG $::salradio :\0033..:::  Pour écouter notre webradio , rendez-vous à l'adresse suivante: $::url  :::..\003"
putquick "PRIVMSG $::salradio2 :\0033..:::  Pour écouter notre webradio , rendez-vous en tapent la commande suivante: $::cmds  :::..\0033"
}

#
##################
# COMMANDE RADIO #
##################
#
 
proc stream:pub:radio { nick uhost handle chan arg } {
	set arg [split $arg]
	set xchan [lindex $arg 1]
	foreach a $::salon {
		if {[string equal -nocase $chan $a]} {
	    putserv "NOTICE $nick :---\002 COMMANDES USER \002---"
		putserv "NOTICE $nick :"
		putserv "NOTICE $nick :!ecoute !titre !dedicace !facebook"
		putserv "NOTICE $nick :"
		putserv "NOTICE $nick :Vous pouvez aussi faire les commandes en privé:"
		putserv "NOTICE $nick :"
		putserv "NOTICE $nick :Exemple: /msg $::botnick ecoute"
		putserv "NOTICE $nick :              /msg $::botnick titre"
		putserv "NOTICE $nick :              /msg $::botnick dedicace"
		putserv "NOTICE $nick :              /msg $::botnick facebook"
		putserv "NOTICE $nick :"
		putserv "NOTICE $nick :Bonne écoute sur R-n-G."
		putserv "NOTICE $nick :"
		putserv "NOTICE $nick :---\002 FIN COMMANDES \002---"
			} 
		}
	}
 
proc stream:pub:ecoute { nick host hand chan arg } {
foreach a $::salon {
		if {[string equal -nocase $chan $a]} {
putserv "NOTICE $nick : \0033..:::  Pour écouter notre webradio , rendez-vous à l'adresse suivante : $::url  :::..\003"
		}
	}
}
 
proc stream:msg:ecoute { nick host hand chan arg } {
foreach a $::salon {
		if {[string equal -nocase $chan $a]} {
putserv "NOTICE $nick : \0033..:::  Pour écouter notre webradio , rendez-vous à l'adresse suivante : $::url  :::..\003"
		}
	}
}
 
 
proc stream:pub:face { nick host hand chan arg } {
foreach a $::salon {
		if {[string equal -nocase $chan $a]} {
putserv "NOTICE $nick : \0033..:::  Pour venir nous rejoindre est soutenir la webradio Rendez-vous sur Facebook : $::url2  :::..\003"
		}
	}
}
 
proc stream:msg:face { nick host hand chan arg } {
foreach a $::salon {
		if {[string equal -nocase $chan $a]} {
putserv "NOTICE $nick : \0033..:::  Pour venir nous rejoindre est soutenir la webradio Rendez-vous sur Facebook : $::url2  :::..\003"
		}
	}
}
 
proc stream:msg:dedi {nick uhost handle data} {
   set temp [open "djnick" r]
   set djnick [gets $temp]
   if {$data == ""} {putquick "NOTICE $nick :Erreur, un argument est manquant !"}
   putquick "NOTICE $nick :\0033Votre dédicasse a bien été transmise !"
   putquick "NOTICE $nick :\0037Elle sera peut-être lue d'ici quelques instants à l'antenne de R-n-G ;)"
   putquick "NOTICE $nick :\0034Attention, si vous envoyez trops de dédicasses en un court laps de temps , vous serez ignoré par nos services."
   putquick "PRIVMSG $djnick :\002Dédicace\002 de \002$nick\002: $data "
   utimer 1 [list mysql:add_dedi $nick $data]
}
 
proc stream:pub:dedi {nick uhost handle channel data} {
   set temp [open "djnick" r]
   set djnick [gets $temp]
   if {$data == ""} {putquick "NOTICE $nick :Erreur, un argument est manquant !"}
   putquick "NOTICE $nick :\0033Votre dédicasse a bien été transmise !"
   putquick "NOTICE $nick :\0037Elle sera peut-être lue d'ici quelques instants à l'antenne de R-n-G ;)"
   putquick "NOTICE $nick :\0034Attention, si vous envoyez trops de dédicasses en un court laps de temps , vous serez ignoré par nos services."
   putquick "PRIVMSG $djnick :\002Dédicace\002 de \002$nick\002: $data "
   utimer 1 [list mysql:add_dedi $nick $data]
}

#
############
# INFOLINE #
############
#
 
proc stream:animteur {nick host hand chan} {
putquick "PRIVMSG $chan :\2\0031\[\0032$hand\0031\] \002\0035Animateur R-n-G "
pushmode $::salradio +h $nick
}
 
proc stream:animatrice {nick host hand chan} {
putquick "PRIVMSG $chan :\2\0031\[\0032$hand\0031\] \002\0035Animatrice R-n-G "
pushmode $::salradio +h $nick
}
 
putlog "\0036STREAM.TCL CREER PAR [Flo] POUR RNG"



Mon souci est le suivant:

La commandes !titre ne veux pas fonctionné en multichannel j'ai eu beau tout essayer dans les systemes que je connais rien à faire.

ensuite mon seconds problème, est que j'arrive pas à faire en sorte que les dédicaces sois dans le privé de l'animateur en cour.

merci de vos futures réponse.

Cdl [Flo]
Répondre Avertir
#2
Déjà, je vois des erreurs dans les procédures "titre":
TCL
proc stream:pub:titre {nick uhost handle channel data} {
   set ::page "http://www.r-n-g.fr/website_sources/shoutcast.inc.php"
   set ::oups [http::geturl $::page ]
   set ::titre [http::data $::oups ]
   set ::titre [split $::titre]
   set ::titre2 [ debuf $::titre ]
   if { $::titre2 != $::basetitre } {
      foreach a [channels] {
         if {[string equal -nocase $channel $a]} {
            set ::basetitre $::titre2
            putquick "NOTICE $nick :\0033..::: \0034$::anim \0033:::..\0033 \0032Vous Propose d'écouter: \0033..::: \0034 $::titre2 \0033:::..\0032"
         } else {
            return $::titre2
         }
         utimer 15 [list untel 1]
      }
   }
}


Donc la, tu boucles sur tous les canaux de l'eggdrop et si l'utilisateur est sur l'un des canaux (ce qui semble évident), on lui envoie une notice. Sinon la procédure fait un return (à rien) du titre.
Et tu as un timer qui appelle une proc inconnue (untel ?)
TCL
proc stream:msg:titre {nick uhost channel handle data} {
set ::page "http://www.r-n-g.fr/website_sources/shoutcast.inc.php"
set ::oups [http::geturl $::page ]
set ::titre [http::data $::oups ]
set ::titre [split $::titre]
set ::titre2 [ debuf $::titre ]
if { $::titre2 != $::basetitre } {
foreach a $::salon {
if {[string equal -nocase $channel $a]} {
set ::basetitre $::titre2
putquick "NOTICE $nick :\0033..::: \0034$::anim \0033:::..\0033 \0032Vous Propose d'écouter: \0033..::: \0034 $::titre2 \0033:::..\0032"
      } else {
return $::titre2
   }
   utimer 15 [list untel 1]
      }
   }
}


Même chose qu'au dessus, sauf que tu t'es trompé dans les arguments de la fonction, channel ne peut pas être présent dans une commande par message. Donc la procédure doit te faire une belle erreur dès son appel.
Répondre
#3
salut,

est pourtant la commande ne marche pas sur tout les salon mise à part le salon principal...

la untel me sert à rehash le titre sinon il garde l'anciens titre en mémoire et le met pas à jour...
Répondre Avertir


Atteindre :


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