choisir un fichier aleatoire
#1
Bonjour, j'aimerais avoir un peu d'aide car je cherche en vain comment faire pour que mon bot ecrive lui meme dans un fichier voulu.

J'explique
le fichier de configuration de mon quizz se nomme quizz.conf
dans ce fichier doit figurer le nom de la base de donnée des questions sous forme "QUIZZFile=scripts/1.db"

Maintenant je possede plusieurs bases de données qui sont "1.db" "2.db" "3.db" etc...

J'aimerais faire en sorte que toutes les 2 heures mon egg ecrive lui meme dans le fichier "quizz.conf" au hasard une de mes bases de données qui sont comprise ente 1.db et 5.db. C'est a dire le quizz s'active et 2 heures apres le l'egg ecris lui meme au hasard QUIZZFile=scripts/1.db ou au hasard QUIZZFile=scripts/3.db histoire que mes questions tournes assez.

Merci
Répondre Avertir
#2
voici un petit bout de code si quelqu'un peut m'aider ce serais gentil.

TCL
proc ::AutoRotation {min hour args} {
global botnick fname
set mot1 [lindex $text 0]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$mot1.db"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}
 
bind time -|- {*0 * * * *} ::AutoRotation
 
proc ::AutoRotation {min hour args} {
global botnick fname
set mot1 [lindex $text 0]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$mot1.db"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}



J'ai actuellement 5 bases de données et j'aimerais donc que toutes les 2 heures ca change de base de donnée ainsi de suite.
Les bases de données se nommes 1.db 2.db 3.db 4.db et 5.db
Répondre Avertir
#3
Tu peux faire un tirage aléatoire du fichier avec quelque chose du genre:
TCL
set mydb [glob -dir scripts *.tcl]
set QUIZZFile [lindex $mydb [rand [llength $mydb]]]



(à adapter bien sûr)
Répondre
#4
J'ai testé comme ca

TCL
bind time -|- {*/2 * * * *} ::AutoRotation
 
proc ::AutoRotation {min hour args} {
global botnick fname
set mydb [glob -dir scripts *.db]
set QUIZZFile [lindex $mydb [rand [llength $mydb]]]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$mydb"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}



Cela ne marche pas et je n'ai aucune erreur en PL :s
Répondre Avertir
#5
TCL
bind time -|- {*/2 * * * *} ::AutoRotation
 
proc ::AutoRotation {min hour args} {
global botnick fname
set mydb [glob -dir scripts *.db]
set QUIZZFile [lindex $mydb [rand [llength $mydb]]]
set f [open "$fname" "a"]
puts $f "QUIZZFile=scripts/$QUIZZFile"
close $f
puthelp "PRIVMSG #chan :rotation des questions"
}


Par contre, il faut vérifier ce qui est mis dans $QUIZZFile: le fichier ou path + fichier.
Vive le putlog.
Répondre
#6
en fait c'est dans le dossier scripts il y a un fichier quizz.cfg
et ce fichier quizz.conf contient l'info ecrite QUIZZFile=scripts/1.db ou QUIZZFile=scripts/2.db en fonction de ce que le bot
pourrais choisir comme .db
Répondre Avertir
#7
Maintenant, tu as tous les éléments pour faire ce que tu veux, donc cherche un peu, je ne te donnerai pas la solution directe. Surtout parce que je n'ai pas tous les éléments et que si c'est pour que tu recopies bêtement, ça ne t'apportera rien.

Tu sais désormais choisir un fichier aléatoirement, à toi de te servir de ça.
Répondre


Atteindre :


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