Anmerkung:
Dieser TCL-WorkShop wurde von einem GastAutor erstellt, weiteres unten.
Er wurde unzensiert und unbehandelt auf IRC-Mania.de
aufgenommen !
Sollte ein hier präsentierter WorkShop extrem viele Fehler aufweisen,
bitte ich um eine Benachrichtigung WorkShopKritik@IRC-Mania.de
Autor: TheNoxier
URL: www.sf-web-creations.de
Partner: www.net-xperts.org
(Erstveröffentlichung von neuen Tutorials und Scripten)
Email: tcl@sf-web-creations.de
TCL für Eggdrops
Gruppe: Anfänger Workshop.
Erstveröffentlichung auf irc-mania.de
Titel: Mein ersten Schritte mit TCL.
Ziel: Grundkenntnisse in TCL, um selber kleine Scripte zu schreiben.
Voraussetzung ist, ihr habt den Eggdrop eingerichtet und das man in den
letzten Zeilen von der eggdrop.conf (oder wie ihr sie auch immer genannt
habt) den Pfad, relativ zum Programmverzeichnis hinzufügen könnt
In der Regel packt man die Scripts einfach in /Scripts Unterverzeichnis
und schreib man
source scripts/meinscript.tcl
Wenn ihr schon Scripts installiert habt, dann wisst ihr ja wie es geht.
Und nach dem Hochladen immer schon den Bot rehashen oder restarten ;-).
Das Coden:
Alle Zeilen, die mit # (Raute) anfangen, sind Kommentare und werden nicht
ausgeführt.
z.b.
# Ich bin ein Kommentar, damit ich dem Leser des Scripts etwas mitteilen
kann.
Das erste Script:
# Nun folgt mein 1. Script
bind pub - .testemich meinefunktion
proc meinefunktion { nick uhost hand chan args } {
putserv "PRIVMSG $chan : Hallo Welt!"
}
(Das in einer Text-Datei abspeichern unter der Erweiterung .tcl und vergehen
wie oben und in der Eggdrop Hilfe beschrieben.
Dann könnt ihr im Channel, in dem der Bot läuft, einfach mal
nur .testemich eintippen und schauen was kommt.
Erklärung:
bind pub - .testemich meinefunktion
Das ist der Befehl um einer Zeichenfolge/Wort/Buchstabe an eine "Funktion"
oder wie es wohl in TCL heißt "Prozedur" (proc) zu binden.
Ich bin leider das Wort Funktion von PHP gewöhnt.
Grobe Syntax:
bind ORT FLAGS ZEICHENFOLGE FUNKTION
"bind" kann man sich ganz einfach mit "Bindung" merken.
Ich bin etwas zusammen.
Danach kommt der Ort wo der Bot nach der Zeichenfolge ausschau halten
soll.
In dem Fall "pub" für Public, also öffentlich im Channel
wo der Bot läuft.
Es gäbe noch z.b.:
Dcc Für das Abhören in der Partyline
Msg Für das Abhören in einem Query zum Bot.
Als Nächstes folgt "FLAGS".
Hier kann man angeben, welche Flags, als "status" der User haben
muss, damit er abgehört wird. Wenn man - macht ist es egal welche
FLAG er hat:
Es gibt unter anderem:
o für Operator
v für Personen mit Voice
Im Prinzip alle Flags die man auch einem User geben kann.
Danach Folgt die Zeichenfolge.
Damit man nicht ohne es zu wollen eine Befehl erwischt, schreibt man am
besten irgend ein Zeichen wie . oder ! oder ? davor, so wird der Befehl
eindeutiger.
Danach folgt der Funktionsname. In unserem Fall: meinefunktion
Welche die Funktionen schon woanders her kennen werden sich vielleicht
wundern, warum man keine Parameter übergibt, obwohl welche verlangt
werden. Ganz einfach, bei "bind" werden automatisch einige Parameter
mit übertragen: nick uhost hand chan args
So kommen wir auch gleich zu der Funktion meinefunktion.
Eine Funktion ist nichts andere als eine Script, das erst dann aufgerufen
wird, wenn man es braucht, in dem Fall mit .testemich.
In der Funktion sind ganz Befehle die ausgeführt werden sollen.
(für Profis: Variablen, die außerhalb deklariert sind, nicht
automatisch innerhalb verfügbar und umgekehrt. Hierzu gibt es den
Befehle global )
In dem Fall beinhaltet unsere Funktion nur einen Befehl, den in dem Channel
wo wir sind, den Text "Halle Welt!" auszuspucken.
proc meinefunktion { nick uhost hand chan args } {
putserv "PRIVMSG $chan : Hallo Welt!"
}
proc leitet die Funktion ein. Danach kommt der Namen den sie haben, soll
und dann geschweiften Klammern die einzelnen Variablen die übergeben
werden. In dem Fall sind es
nick uhost hand chan args. Diese kommen wie oben schon erwähnt durch
die Verwendung von dem Befehl bind. Der hat schon eine Platte wichtiger
Variablen aus dem Channel mit sich dabei.
putserv "PRIVMSG $chan : Hallo Welt!"
Mit diesem Befehl "putserv" schickt ihr eine Nachricht an den
Server.
PRIVMSG steht für "Private Nachricht". Egal ob Query oder
in den Channel, bei beiden ist es PRIVMSG.
Dann folgt der Empfänger in dem Fall der Inhalt der Variable $chan.
$chan beinhaltet den Channelnamen, in dem die Zeichenfolge von bind ausgeführt
wird.
Würde man an dieser Stelle einen Nickname eintragen käme es
als Query an.
Dann ein Leerzeichen, ein Doppelpunkt und dann der Text. Hier gibt es
keinen Zeilenumbruch. Das ganze endet mit wieder mit einem ".
Anmerkung:
nick = Nickname des Users der die Zeichenfolge eingetippt hat
uhost = Sein Host-Adresse (und noch ein wenig mehr ;-))
hand = sein "handle" entweder sein Nickname oder ein *
chan = der Channel in dem sich der Users befindet , der die Zeichenfolge
eingetippt hat
args = Alle Zeichen die nach dem gebindeten Wort kommen.
TIPP: ich hab bemerkt, dass es eher Schwierigkeiten macht, wenn man mehrere
der Variablen weg lässt, also immer schon alle 5 hinschreiben. ;-)
Das sind eigentlich die Beiden meist benutzen Sachen, wenn man mit dem
User interagieren will.
@2003 TheNoxier www.sf-web-creations.de for IRC-Mania .de
Mehr Tutorials (bald) auf www.net-xperts.org oder auch auf www.irc-mania.de
|