TCL Scripts

Selbst geschriebene TCL-Skripte für Eggdrop-Bots auf dem Quakenet. Von Channel-Protection bis zum vollständigen Clan-Organizer — entwickelt und im produktiven Einsatz erprobt seit 2002.

Was ist TCL? Tool Command Language — eine kompakte, eingebettete Skriptsprache. Eggdrop nutzt TCL als native Erweiterungssprache. Mit TCL lassen sich eigene Befehle, Timer, Bindings auf IRC-Events und komplexe Logik direkt in den Bot einbauen.

// Eigene Scripts

🛡️

ZERBERUSCHANPROT.TCL

by robkey.de
v1.0.6 Quakenet Channel Protection 318 Zeilen
Release 11.2003
Latest Release 19.12.2008 — Version 1.0.6
Codezeilen 318
Aktiv in #action.dac (Quakenet)
Bot [PeaceM]
Public Commands (none)
Dokumentation (none)
Source Code view online
Download v1.0.6 Prev: v1.0.4 · v1.0.5
Support robkey board

Ein Channelprotection-Script speziell für das Quakenet. Der Channel wird auf mehreren Ebenen geschützt: durch den Selbstschutz des Bots, den Schutz der Channeluser und die Überwachung der Channelmodes. Da der Bot bei Q geautht ist und Masterrechte (+amo) besitzt, kann selbst ein User mit geklautem Q-Auth-Nick wirksam bekämpft werden. Wird der Bot aus dem Channel gekickt, setzt das Script automatisch Q- bzw. L-Befehle ab und bestraft den Angreifer.

Überwachte Modes & Events:
  • Kick, Deop und Ban des Bots selbst
  • Massbanning und Massdeoping von Channel-Usern
  • Setzen der Overtake-Modes +i +m +l
Reaktion gegen Angreifer:
  • chanlev -aovt+b & permanenter Q-Ban, wenn Q da
  • chanlev -aov & globaler Temp-Ban + Kick, wenn L da
  • Channelmodes -i -m -l werden zurückgesetzt
  • Op-Wiederherstellung via Q / L
📅

PWP_WARPLANER.TCL

by robkey.de
v0.2.3 Quakenet Clan Organizer MySQL 1.782 Zeilen
Release 04.11.2002
Latest Release 20.08.2003 — Version 0.2.3
Codezeilen 1.782
Aktiv in #action.gamers (Quakenet)
Bot BBanks
Public Commands Nicht public (Alpha/Beta-Phase)
Dokumentation (none)
Download Nicht verfügbar — nicht öffentlich

Ein Clan-Organizer-Script speziell für das Quakenet. Das Script kombiniert Warplanung, Email-System und ein Private-Message-System in einem. Durch die Anbindung an eine MySQL-Datenbank lassen sich alle Daten bequem abrufen und verwalten. Die Autorisierung erfolgt ausschließlich über Q-Auths — kein doppeltes Passwort nötig, vollständig sicher.

Features im Überblick:
  • Warplanung direkt über IRC-Commands
  • Integriertes Email-System
  • Private Messaging zwischen Clan-Mitgliedern
  • MySQL-Datenbankanbindung
  • Autorisierung via Quakenet Q-Auth
  • Clan-Mitgliederverwaltung

Status

Dieses Script ist nicht öffentlich. Mit 1.782 Codezeilen eines der umfangreichsten Projekte auf robkey.de — intern entwickelt, intern betrieben. Kein öffentlicher Download geplant.

// TCL Grundlagen

Wichtige Konzepte

TCL in Eggdrop basiert auf Bindings — Funktionen werden an IRC-Events gebunden und automatisch aufgerufen.

bind pub Öffentliche Channel-Nachricht
bind msg Private Nachricht an Bot
bind join User joint Channel
bind part User verlässt Channel
bind time Timer / zeitgesteuerter Event
bind nick Nick-Change eines Users
bind kick User wird aus Channel gekickt
bind mode Channel-Mode wird gesetzt
Binding Beispiel — komplettes Script
# Script wird mit "source scripts/hello.tcl" # in eggdrop.conf geladen # Bind: wenn jemand !hello schreibt bind pub - "!hello" hello:greet proc hello:greet {nick uhost hand chan arg} { # $nick = wer den Command abschickt # $chan = in welchem Channel putchan $chan \ "Hallo $nick, willkommen auf $chan!" } # Bind auf Mode-Change (Zerberuschanprot-Prinzip) bind mode - "* +i" prot:overtake proc prot:overtake {nick uhost hand chan mode arg} { putquick "MODE $chan -i" putquick "KICK $chan $nick :Overtake attempt!" } # Bestätigung in der Partyline putlog "Script geladen."

// Tipps aus der Praxis

💾

Daten speichern

Für persistente Daten über Bot-Restarts hinweg: Dateizugriff via open, puts und gets. Für größere Mengen: MySQL via mysqltcl oder SQLite über das tcllib-Paket.

🐛

Debugging

Mit putlog "text" in die Eggdrop-Logdatei schreiben. Live-Tests über die DCC-Partyline mit .tcl <code> direkt im laufenden Bot.

Performance

Globale Variablen mit global sparsam einsetzen. Timer-Bindings ( utimer, timer) für wiederkehrende Tasks nutzen statt busy loops im proc.