Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Quoteur
#1
Bonjour je remets un petit code, voila j'aimerais que l'eggdrop detecte les quotes des gens qu'il l'ajoute dans un fichier quote.txt ( si possible avec les meme couleurs que ceux de l'user qui aura mis sa cote.

Et ensuite que le bot dise une quote au hasard quand quelqu'un tape
!lire ou bien si possible dise une quote au hasard toutes les 10 minutes. Voici un morceau du code que j'ai essayer de faire, il ajoute bien les quotes dans le fichier voulu mais quand je tape !lire il me marque sur le salon toutes les quotes en fond noir ecriture verte.
Et j'aimerai une astuce pour qu'une quote soit sortie au hasard toutes les 10 minutes.


tcl
#nom du fichier texte à lire 
set fname "scripts/quote.txt" 
 
bind pub - !quote pub:!quote 
proc pub:!quote { nick host hand chan text } { 
global fname 
set f [open "$fname" "a"] 
puts $f "$text" 
close $f 
} 
 
bind pub - !lire pub:!lire 
proc pub:!lire { nick uhost hand chan args } { 
global fname 
set fp [open $fname "r"] 
set fc -1
   while {![eof $fp]} { 
      set data [gets $fp] 
            incr fc 
     if { $data != "" } { 
      putserv "PRIVMSG $chan :4,1#$fc - $data" 
     } 
    unset data 
   } 
  close $fp 
}

#2
Peut-être as-tu déjà vu ça et préfères-tu faire ton propre script, mais au cas où :
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#3
Bin ca a l'air interressant pour les 3 proposé, mais dans l'ordre j'aimerais donc que :

TOUT les users si il tapent !quote blablabla ca ajoute la quote

Et une possibilité que le bot sorte une des quotes au hasard toutes les 10 minutes donc dans le cas là qu'il lise une quote dans le fichier ou seront stocké les quotes

Et si possible que les quote soit enregistrés avec les memes couleurs d'origine

Est ce que cela est possible sur un des 3 proposé ?
#4
Pour les 2 autres je ne sais pas, mais Public Quotes System fait exactement ce que tu veux, sauf sortir aléatoirement une quote toutes les 10mn (c'est une fonctionnalité qu'on m'a déjà demandé, je l'ajouterai dans une prochaine version).
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#5
Dans le Public Quotes System Où seront stocké les quotes ??

Car je pense qu'apres je devrais pouvoir trouver une façon de lire aleatoirement une quote du fichier toutes les 10 minutes.
#6
Si tu cliques sur le lien que je t'ai donné, tu verras dans la description du téléchargement que les questions que tu poses on été abordées :
Quote:Un répertoire du nom de quotes.db sera créé dans le répertoire de l'eggdrop; il contiendra les bases de données de citations.

D'autres précisions peuvent être trouvées à l'intérieur même du script sous forme de commentaires.
Toute l'actualité de mes scripts ici     (dernière mise à jour le 22/04/2020)

Tout programme comporte au moins un bug et pourrait être raccourci d'au moins une instruction, de quoi l'on peut déduire que tout programme peut être réduit à une seule instruction qui ne fonctionne pas.
#7
Bon j'ai testé un petit code qui donc est censé quand quelqu'un tape !quote, ca enregistre les quotes dans un fichier nommé quote.txt
et le script quand il detecte le mot quote il devrais aller dans le fichier de stockae et sortir une quote au hasard.

Voici le tcl

tcl
#nom du fichier texte à lire 
set fname "scripts/quote.txt" 
 
bind pub - !quote pub:!quote 
proc pub:!quote { nick host hand chan text } { 
global fname 
set f [open "$fname" "a"] 
puts $f "Quote ajouté par $nick [clock format [clock seconds] -format {le %A %d %B %Y } ] ==> $text" 
close $f 
} 
 
 
 
proc fun:pub:quote {nick uhost hand channel arg} {
global fun quote botnick
if ![matchattr $nick $fun(ignflags) $channel] {
   if {[fun:flood $nick $uhost]} {
      return 0
   }
}
if {(([lsearch -exact [string tolower $quote(chans)] [string tolower $channel]] != -1) || ($quote(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   putserv "PRIVMSG $channel :[lindex $quote(msgs) [rand [llength $quote(msgs) ]]]"
   return 1
}
}
 
bind pubm -|- *quote* fun:pub:quote
 
# Channels où le bot répondra :
set quote(chans) "*"


Seulement j'ai un soucis ca enregistre bien les quotes dans le fichier voulu, mais quand il doit lire une quote au hasard j'ai cette erreure "Tcl error [fun:pub:quote]: can't read "fname": no such variable"
#8
bonjour,
Quote:"Tcl error [fun:pub:quote]: can't read "fname": no such variable"
ton message te signale qu' il trouve pas la variable fname pour te balancer ta quote .

essaye de remplacer cet ligne


tcl
set f [open "$fname" "a"]


par


tcl
set f [open "$::fname" "a"]

La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
#9
Cela ne fonctionne toujours pas mais je pense que je me suis trompé
dans cette partie


tcl
if {(([lsearch -exact [string tolower $quote(chans)] [string tolower $channel]] != -1) || ($quote(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   putserv "PRIVMSG $channel :[lindex $quote(msgs) [rand [llength $quote(msgs) ]]]"
   return 1
}
}

#10
Bon j'ai essayé de modifié mon tcl le voici


tcl
#nom du fichier texte à lire 
set fname "scripts/quote.txt" 
 
bind pub - !quote pub:!quote 
proc pub:!quote { nick host hand chan text } { 
global fname 
set f [open "$::fname" "a"] 
puts $f "Quote ajouté par $nick [clock format [clock seconds] -format {le %A %d %B %Y } ] ==> $text" 
close $f 
} 
 
 
 
proc fun:pub:quote {nick uhost hand channel arg} {
global fun quote botnick
if ![matchattr $nick $fun(ignflags) $channel] {
   if {[fun:flood $nick $uhost]} {
      return 0
   }
}
if {(([lsearch -exact [string tolower $quote(chans)] [string tolower $channel]] != -1) || ($quote(chans) == "*")) && (![matchattr $hand b]) && ($nick != $botnick)} {
   putserv "PRIVMSG $channel :[lindex $quote(msgs) [rand [llength $quote(msgs) ]]]"
   return 1
}
}
 
bind pubm -|- *quote* fun:pub:quote
 
# Channels où le bot répondra :
set quote(chans) "*"
 
# Fichier qu'ouvriras le bot pour lire les quotes
set quote(msgs) "[open "$fname" "a"]"


il ajoute bien les quotes dans "scripts/quote.txt" mais quand il detecte le mot quote il ne donne pas une quote au hasard mais il ecris sur le salon file9 donc je pense qu'il n'arrive pas à aller chercher une quote dans le dossier "scripts/quote.tcl"

une idée ?
#11
Bon vu que je ne trouve pas comment faire suite à mon probleme
je vais surement essayer de regarder les quoteur de Dav34 et MenzAgitat et voir si je peux modifier quelque chose dedans qui pourrais correspondre à ma recherche.

Merci encore pour votre aide.


Forum Jump:


Users browsing this thread: 1 Guest(s)