En galère avec un codage de script de dédi
#1
Bonjour,

Je me suis lancé dans la confection d'un tcl pour faire des dédicaces mais hélas je tombe sur un os...
TCL
######################################################################
##																	##
##																	##
##  	-Système de dédicace pour webradio "Minut'Radio"            ##
## 			Partenaire de Secretchat.fr - Version 1.0				##
##																	##
##																	##
######################################################################
 
 
 
set chans "#staff"
set chansource "#control"
set chanradio "#Radio"
 
 
bind pub - "!addedi" add:edi
bind pub - "!deledi" del:msg
bind pub - "!edi" msg:edi
 
 
proc add:edi {n ht hd ch a} {
set edi [lrange $a 0 end]
	if {$ch == $::chanradio} {
		if {$edi == ""} {putserv "notice $n :Syntaxe => !addedi < message >"; return}
		if {![file exists "scripts/dedi.dab"]} {set files [open "scripts/dedi.dab" a+]; close $files}
		# enregistrement de la dedi #
		set num [expr {int(rand() * 37)}]
		set files [open "scripts/dedi.dab" a+]
		puts $files "$num $n $edi"
		close $files
		putserv "notice $n :Dedi enregistré et validé"
	} else {
		putserv "notice $n :Erreur Salon"
	} 
}
 
proc del:msg {n ht hd ch a} {
set num [lindex $a 0]
set stop 0
if {$ch == $::chans} {
	if {$num == ""} {putserv "notice $n :Syntaxe => !deledi < numéro >"; return}
	if {![file exists "scripts/dedi.dab"]} {putserv "notice $n :Aucune dedi actuellement"}
	# suppression de la dedi #
	catch {open "scripts/dedi.dab" r} liste
	while {![eof $liste]} { gets $liste verif; if {![string compare -nocase $num [lindex $verif 0]]} { set stop 1 }; if {[string compare -nocase $num [lindex $verif 0]] && $verif!=""} { lappend salle "$verif" } }
	catch {close $liste}
	if {$stop == 0} {putserv "notice $n :Numéro Inconnu"; return}
	if {[info exists salle]} {
		set del [open "scripts/dedi.dab" w+]; foreach delchan $salle { puts $del "$delchan"}; close $del
	} else { set del [open "scripts/dedi.dab" w+]; close $del }
	putserv "notice $n :La dedi vient d'être supprimer"
} else {
	putserv "notice $n :Erreur Salon"
} }
 
proc msg:edi {n ht hd ch a} {
set stop 0
if {$ch == $::chans} {
	putserv "notice $n :13~6~13~6~12 Liste des dedi 13~6~13~6~"
	putserv "notice $n : "
	if {![file exists "scripts/dedi.dab"]} {putserv "notice $n :12Aucune dedi actuellement"}
	
	# securité anti beug #
	catch {open "scripts/dedi.dab" r} secu
	while {![eof $secu]} {gets $secu xs; if {[lindex $xs 0] != ""} {
		lappend verif "[llength $xs]"
	} }; catch {close $secu}
	# Calcul nombre de ligne #
	if {[info exists verif]} {
		if {[llength $verif] > "15"} {set stop 2; putserv "notice $n :4/!\\ Alerte Surcharge /!\\ 14Merci de supprimer des dedi"}
		if {[llength $verif] > "20"} {set stop 2; putserv "notice $n :4/!\\ Alerte Surcharge Excessif /!\\ 14Supprimer des dedi Impérativement 4/!\\ Alerte Surcharge Excessif /!\\"}
		if {[llength $verif] == "25"} {set stop 5; putserv "notice $n :4/!\\ Alerte Suppression de toutes les  dedi /!\\ 14Trop de dedi on été enregistrer : $verif 4/!\\ Alerte Suppression de toutes les dedi /!\\"}
	}
	# Fin control anti beug #
	if {$stop == 5} {exec rm -rf "scripts/dedi.dab"}
	if {$stop == 2} {
		catch {open "scripts/dedi.dab" r} files
		while {![eof $files]} {gets $files x; if {[lindex $x 0] != ""} {
			putserv "privmsg $n :6\[\4 [lindex $x 0] 6\]\ 10Mis par :7 [lindex $x 1] 1-12 [lrange $x 2 end]"; set stop 1
		} }; catch {close $files}
	}
	if {$stop == 0} {
		catch {open "scripts/dedi.dab" r} files
		while {![eof $files]} {gets $files x; if {[lindex $x 0] != ""} {
			putserv "notice $n :6\[\4 [lindex $x 0] 6\]\ 10Mis par :7 [lindex $x 1] 1-12 [lrange $x 2 end]"; set stop 1
		} } ; catch {close $files}
	}
	if {$stop == 0} {putserv "notice $n :12Aucune dedi actuellement"}
	putserv "notice $n : "
	putserv "notice $n :13~6~13~6~12 Fin de la liste des dedi 13~6~13~6~"
} else {
	putserv "notice $n :Erreur Salon"
} }



La commande !edi et !deledi fonctionne mais en revanche pour la commande !addedi je me trouve avec une erreur salon sur les 3 salons en question...


Merci d'avance de votre aide.
Répondre Avertir
#2
Et quelle est l'erreur ?
Répondre
#3
Mince je pensais l'avoir mise ! C'est juste que sa me met erreur salon à la commande !addedi
Répondre Avertir
#4
Je vote à 110% pour un problème de casse.
Remplace:
TCL
if {$ch == $::chanradio} {


par:
TCL
if {[string tolower $ch] == [string tolower $::chanradio]} {



On a dit et répété je ne sais combien de fois qu'il fallait toujours comparer les pseudos, handles et canaux en minuscule.

Et tu aurais pu simplement débuguer en remplaçant:
TCL
putserv "notice $n :Erreur Salon"


par:
TCL
putserv "notice $n :Erreur Salon => $ch != $::chanradio"


Répondre
#5
Ah merci ! tout est nickel
Répondre Avertir
#6
 
TCL
if { [string equal -nocase $ch $::chanradio] } {
...


Pourquoi faire simple ?
Parce que !
 
Répondre Avertir
#7
J'ai encore une question voir deux. Si je souhaite mettre la commande en par exemple /dedi <texte> j'ai qu'à mettre une aliase sur unreal de ce type :
Citation : alias "DEDIBOT" {
nick "DEDIBOT";
type robot;
};
alias "dedi" {
nick "DEDIBOT";
type robot;
};

Et pour lire les dedi je souhaite mettre sur des vhosts je dois rajouter au début de ma conf :
TCL
set permission1 {
  *@*Anim.Domaine.fr  
}


Puis dans le codage ces deux lignes ?
TCL
foreach salons $autorisation1 {
    foreach vhost $permission1 {


Donc en gros
TCL
proc msg:edi {n ht hd ch a} {
set stop 0
if {$ch == $::chans} {
foreach salons $autorisation1 {
    foreach vhost $permission1
   putserv "notice $n :13~6~13~6~12 Liste des dedi 13~6~13~6~"
   putserv "notice $n : "
   if {![file exists "scripts/dedi.dab"]} {putserv "notice $n :12Aucune dedi actuellement"}



Merci de vos réponses et aides.
Répondre Avertir
#8
Pouvez répéter la question ?
Qu'est-ce que Unreal vient faire dans un codage tcl ? Quel est ton souci ? Et si tu as déjà une idée du code, pourquoi ne le teste tu pas ?
Répondre
#9
Salut,

Pourquoi pas partir sur un tcl de shoutcast ?
Me semble que sa serait le mieux adapter à ce type de demande..
Si y'as un dj de disponible, l'eggdrop enverra un privé au dj en lui stipulant que intel désire tel musique et la phrase de dedi..

Sa serait beaucoup plus simple non ?
Voir des trucs ircop, machin truc arrêter..

Si des utilisateurs désire inclure dans un de leur eggdrops, ce type de tcl ils font comment ?
Là vous passer tout par o:line, "ircop,link etc.." Sa ne sert strictement à rien.
Répondre Avertir
#10
Citation :Qu'est-ce que Unreal vient faire dans un codage tcl ?
Parce que j'aimerai mettre la commande en /dedi au lieu de !dedi qui est pas trop discret..

et pour le reste je préfère demande avant de tester :s
Répondre Avertir
#11
Ta /msg lebot dedi phrase
Qui serait discret :p
Mais pour les alias pour les server je sais pas faire jamais utiliser toujours trouver pas utiles pour ce que je faisait.
Peut être que quelqu'un sera t'aider ici Smile

Envoyé de mon GT-N7000 en utilisant Tapatalk
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir
#12
Ah.. Parce que moi c'est le contraire je sais pas code le /msg bot dedi phrase :s
Répondre Avertir
#13
Regarde sue les bind msg
Tape : .tcl bind msg
Sa donne genre : bind msg - !dedi dedic
Proc dedic { nick host hand arg } {
...

C'est ce genre la.
Tu veut un bon exemple de base pas compliquer c'est simple dll : gestion.bot v2 si ya encore sur ce site.
Et dessus ta des exemples.
Après si tu trouve pas rien dit moi ! Je viendrais taider

Envoyé de mon GT-N7000 en utilisant Tapatalk
Vous interdisez les erreurs, vous empêchez ainsi la victoire.

Ma super kikoo-page loll
Répondre Avertir


Atteindre :


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