Archiv verlassen und diese Seite im Standarddesign anzeigen : [Eggdrop] In Datei schreiben
Guten Morgen,
ich brauch mal wieder eure Hilfe,
ich code gerade (bzw ich versuche es) einen bot fuer ein onlineradio. Leider scheitere ich schon an einer warscheinlich einfachen Aufgabe.
bind pub - !wunsch echo:wunsch
proc echo:wunsch { nick uhost handle chan arg } {
set wunsch [lindex $arg 2]
puts open ./logs/wuensche.txt a "$wunsch"
close ./logs/wuensche.txt
}
}
Ich denke es sollte klar sein, was ich machen will.
Danke schon jetzt
MfG G-Fire
Vermutlich möchtest du sowas in der Art:
set fname logs/wuensche.txt
if {![file exists $fname]} { close [open $fname w] }
bind pub - !wunsch echo:wunsch
proc echo:wunsch {nick uhost hand chan arg} {
global fname
set fp [open $fname "a"]
puts $fp $arg
close $fp
}
danke erstmal fuer deine antwort, genau das wollte ich.
Aber nun zwei andere Fragen
1. wie bekomm ich es nun noch hin das schon vorhandene "wuensche" nicht noch einmal in die Datei geschrieben werden ?
2. Wie muss ich das machen um eine reihe wieder zu loeschen ?
Danke.
1. set fname logs/wuensche.txt
if {![file exists $fname]} { close [open $fname w] }
bind pub - !wunsch echo:wunsch
proc echo:wunsch {nick uhost hand chan arg} {
global fname
set fp [open $fname r+]
while {![eof $fp]} {
lappend list [gets $fp]
}
if {[lsearch -glob $list $arg] == -1} {
puts $fp $arg
close $fp
putserv "PRIVMSG $chan :Wunsch erfolgreich hinzugefügt."
} else {
putserv "PRIVMSG $chan :Wunsch bereits vorhanden."
}
}
2. Kommt noch, denk ich ;)
danke,
was genau ist da eigentlich dafuer verantwortlich ob es schon vorhanden ist ?
2. bind pub - !delwunsch del:wunsch
proc del:wunsch {nick uhost hand chan arg} {
set fname "logs/wuensche.txt"
if {![string is integer $arg]} {
putserv "PRIVMSG $chan :Du hast keine Zahl eingegeben."
} else {
if {![file exists $fname]} {
putserv "PRIVMSG $chan :Die Datei existiert nicht."
} else {
set fp [open $fname "r"]
set data [read -nonewline $fp]
close $fp
set lines [split $data "\n"]
if {[llength $lines] < $arg} {
putserv "PRIVMSG $chan :Wunsch existiert nicht."
} else {
set line_to_delete [expr $arg - 1]
set lines [lreplace $lines $line_to_delete $line_to_delete]
set fp [open $fname "w"]
puts $fp [join $lines "\n"]
close $fp
putserv "PRIVMSG $chan :Wunsch [expr $line_to_delete + 1] gelöscht."
}
}
}
}
Wenn das -1 ergibt:
if {[lsearch -glob $list $arg] == -1} {
Dann ist der Wunsch noch nicht vorhanden.
was kann ich eigentlich bei tcl noch alles mit einer txt datei anstellen ?
Google hilft mir da nicht wirklich
So, hab das oben stehende Script nochmal verändert, sodass der überprüft, ob die Zeile wirklich existiert und ob du eine Zahl eingegeben hast.
Mit dem eggdrop kann man so einiges mit Textdateien machen, eigentlich fast alles. ;)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.