AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Lazarus/Delphi]IRC-Bot Atelerix (Crossplatform)
Thema durchsuchen
Ansicht
Themen-Optionen

[Lazarus/Delphi]IRC-Bot Atelerix (Crossplatform)

Ein Thema von inherited · begonnen am 25. Okt 2008
Antwort Antwort
Benutzerbild von inherited
inherited
Registriert seit: 19. Dez 2005
Moin,

hier ist ein kleiner aber feiner IRC-Bot namens Atelerix, geschrieben für Windows und Linux, sollte aber auch unter MacOS funktionieren.

Was kann Atelerix?
  • Crossplattform: Atelerix wird in gleicher Weise von Linux und Windows unterstützt, wenn auch Linux einen kleinen "Heimvorteil" hat
  • Dynamisch: Atelerix lebt von Modulen. Diese können in jeder beliebigen Programmiersprache erstellt werden, die das Erstellen von dynamischen Bibliotheken erlaubt. Damit sind dem Funktionsumfang praktisch keine Grenzen gesetzt. Module können dynamisch zur Laufzeit geladen und entladen werden, ganz einfach durch Bot-Kommandos (siehe unten)
  • Vorgefertigte Module: Es gibt drei kleinere Module die den Umgang mit der Schnittstelle zeigen und natürlich nach belieben erweitert, angepasst oder verbessert werden können. Dafür ist natürlich auch eure Mitarbeit gefragt! Den Header findet ihr bei den Sourcen (uPluginHeader.pas), Beispiele für Delphi/Freepascal ebenfalls.

Quickstart Guide
-Entpacke die Binarys in ein beliebiges Verzeichnis
-Öffne eine Console/Eingabeaufforderung und begebe dich in das Verzeichnis (cd)
-Erstelle, wenn nicht schon vorhanden, eine "supermaster.txt" im Programmverzeichnis, die deinen Nicknamen enthält. Damit erhälst du später die Kontrolle über den Bot. Für das Plugin "AdvCommand" kannst du zusätzlich eine "master.txt" erstellen, die nach dem gleichen Prinzip funktioniert: Jede Zeile ein Nick.
-Rufe atelerix auf:
Windows: atelerix.exe
Linux: ./atelerix
-Benutze bei Bedarf einen oder mehrere der unten aufgeführten Parameter, zB
" ./atelerix -H irc.freenode.net -p 6667 -n testBot -j "#testchannel" -m "advcommand,titleparser,log" "
-Wenn du kein -j Parameter hast, gib "connect" ein, bestätige, gefolgt von "join #channel" um den Bot einem Channel beitreten zu lassen
-Begib dich mit einem IRC-Client deiner Wahl auf den gleichen Server wie der Bot, am besten auch in einen gleichen Channel
-Benutze beliebige Kommandos wie unten beschrieben, beispielsweise "!insmod log" um das Log-Modul zu laden (Benötigt supermaster-Rechte) oder so etwas sinnloses wie "!time" um die Systemzeit ausgeben zu lassen (benötigt master-Rechte)

Wie funktioniert Atelerix?
Zitat:
Die folgenden Kommandozeilenparameter stehen für Atelerix zur Verfügung:
-h --help Gibt eine Hilfe aus
-H --host <String> benutze <String> als Host
-p --port <Integer> benutze <Integer> als Port
-n --nick <String> benutze <String> als Nickname
-j --join <String> autoconnect und automatisches Joinen der in <String> angegebenen Channel, mehrere Channels werden durch Kommata getrennt (" " benutzen!)
-m --modules <String> automatisches Laden der in <String> angegebenen Module, mehrere Module wieder durch Kommata getrennt

Innerhalb des Programms können per Kommandozeile "connect", "join #channel" und "quit" genutzt werden.
Um Module zur Laufzeit zu laden, muss dein Nick in der Datei "supermaster.txt" stehen. In jeder zeile steht ein Nick.
Folgende Kommandos stehen zur Verfügung:
"!insmod name" Lade Modul "name"
"!rmmod name" Entferne Modul "name" (Beachte, dass du zum Laden dn Dateiname ohne Dateiendung brauchst, zum Entladen den tatsächlichen Modulname, den du mit folgendem befehl herausfindest:
"!lsmod" listet alle geladenen Module auf

Die Module befinden sich im Unterordner "plugins"
Im Moment gibt es drei Demo-Plugins
log: Ein kleiner Logger, der alles Geschriebene mit-loggt
titleparser: Ein Modul, das, sobald in einer Mitteilung eine URL ist, die Website herunterlädt, den Titel daraus parst und diesen dann dem Channel mitteilt
advcommand: Gibt mehr Kontrolle für alle Benutzer die in der "master.txt" (Nicht supermaster.txt!) aufgelistet sind
Folgende Kommandos stehen den "masters" zur Verfügung:
-"!insmaster $name", "!rmmaster $name", "!lsmaster": Fügt $name hinzu, löscht $name oder zeigt alle Nicks in master.txt an
-"!say $channel $text": Lasse den Bot $text in $Channel sagen (kann auch ein anderer User sein)
-"!time", "!date": Was wohl
-"!join $channel", -"!part $channel": Tritt dem Channel $channel bei, bzw. verlässt ihn.
Ein Aufruf könnte zum Beispiel so aussehen:
./atelerix -H irc.freenode.net -p 6667 -n testBot -j "#testchannel" -m "advcommand,titleparser,log"

Mein Dank gilt auch The-Master für die tolle Unterstützung bezüglich des dynamischen Bibliotheken-Ladens
Das gnaze Projekt ist Open-Source: Ihr dürft es ändern, neu Verteilen und was auch immer machen, solange ihr meinen Namen und den des Originalprodukts mit angebt!

P.S: Das ganze ist zwar für Lazarus erstellt, sollte aber auch mit Delphi kompilieren.

Viel Spaß beim herumspielen

Edit: Da waren noch überreste mit in die Sourcen gerutscht, die das ganze auf >1MB aufgebläht haben. Jetzt hat es die richtige größe von 15kb
Angehängte Dateien
Dateityp: zip atelerix-1.0-src_124.zip (14,4 KB, 35x aufgerufen)
Dateityp: zip atelerix-1.0_277.zip (2,71 MB, 18x aufgerufen)

SWIM SWIM HUNGRY!
Neuer Blog: hier!
 
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz