PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Eggdrop] In Datei schreiben


G-Fire
06.06.2006, 07:59
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


darton
06.06.2006, 12:35
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
}

G-Fire
06.06.2006, 13:39
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.

darton
06.06.2006, 16:54
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 ;)

G-Fire
06.06.2006, 17:25
danke,

was genau ist da eigentlich dafuer verantwortlich ob es schon vorhanden ist ?

darton
06.06.2006, 17:30
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.

G-Fire
07.06.2006, 13:27
was kann ich eigentlich bei tcl noch alles mit einer txt datei anstellen ?

Google hilft mir da nicht wirklich

darton
07.06.2006, 18:05
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. ;)