Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 20.06.2009, 12:36 Titel: [Netzwerk] [Win/Lin] MuhBot |
|
|
Link: GitHub
Beschreibung:
Ich bastel schon seit ner ganzen weile an meinem Bot, hab nun beschlossen nen neues Projekt anzufangen und übergebe den Bot damit der Community. Hier die Einzelheiten:
Edit: Entwicklung wieder aufgenommen. Vieles neu geschrieben. Siehe unten.
Features:
- Plugin-System (per dll)
- (mehrere) Admin-Accounts
- "Tickets" für die Administration
- Basis-Kommandos wie:
* Join
* Quit
* Ping
* Leave
* Nick
(Sowie Kommandos zum User-, Ticket- und Plugin-Management)
Known Issues:
Bot beendet nicht sauber wenn ein Plugin entladen / neu geladen wurde und ein SIGQUIT / SIGINT den Bot erreicht. Bei SIGKILL beendet er immer sauber
Das Plugin "play" funktioniert aktuell nicht
Schlechte Performance wenn mehrere Kommandos gleichzeitig / zeitnah eingehen
----------
An dieser Stelle ganz viel Lob und Dank an ThePuppetMaster für seine Hilfe und die Bereitstellung von TSNE (darauf baut der Bot natürlich auf) und seine Lektionen im "LinkedList"-Programmieren. Und einen kleinen dank an Max06, der mich mit seiner Kritik angespornt hat.
Oh, bevor ich es vergesse: Der Bot selbst ist momentan als "Unstabil" zu betrachten, auch wenn ich ihn schon 2 Tage im dauerbetrieb hatte. Ich übernehme keine Garantie dafür das der Bot funktioniert, das die Commits die ich im Git mache "sauber" sind und für verlorene Daten und genervte User übernehme ich keine Haftung.
Noch zwei Hinweise am Rande:
Bitte nervt mit diesem Bot keine Nutzer eines Friedlichen Channels. Fragt dort Vorher um Erlaubnis - und setzt im Zweifelsfall den Reply-Mode auf "whisper".
Mfg
The_Muh _________________ // nicht mehr aktiv //
Zuletzt bearbeitet von The_Muh am 02.01.2011, 01:36, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 20.06.2009, 12:42 Titel: |
|
|
irc://irc.freenode.net/bots-de <- hier laufen lassen, da stört's keinen.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 20.06.2009, 15:03 Titel: |
|
|
Code: | #IF Defined(__FB_Linux__)
If Dir("plugins/lib" & S & ".so", -1) = "" Then Return 0
#ELSEIF Defined(__FB_Linux__)
If Dir("plugins/"& S & ".dll", -1) = "" Then Return 0
#ELSE
#ERROR "Platform not supportet!"
#ENDIF |
In Zeile 1086 sollte es wohl Win sein.
Und TSNE gibt auch einen Fehler aus, ich glaub du hast eine alte Version reingepackt, meine läuft nämlich problemlos.
edit: und es geht trotzdem nicht:
|
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
Verfasst am: 20.06.2009, 15:10 Titel: |
|
|
Code: | [...]\MuhBot\TSNE_V3.bi(682) warning 3(1): Passing different pointer types, at parameter 4 of SETSOCKOPT()
D:\Programme\FreeBASIC\bin\win32\ld.exe: cannot find -lc |
Bei mir kommen die obigen zwei Fehler, wenn ich zu kompilieren versuche und die von MOD vorgeschlagene Änderung (FB_LINUX in FB_WIN32 ändern) durchführe.
//edit: hab grad gesehen, dass es nicht nur bei mir nicht funzt (WinXP) ^ ^
"Platform not supportet" schreibt man übrigens so: "Platform not supported" (Zeile 1089 und 1102) _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 21.06.2009, 14:40 Titel: |
|
|
Der Plugin-Code is in der Basis von TPM, und den Rechtschreibfehler hab ich übersehen und drin gelassen.
Das mit dem "cannot find -lc" liegt wohl am kill-signal-abfänger (kp wie man des sonst nennen soll).
Und der Fehler mit TSNE liegt nicht in meinem Zuständigkeitsbereich... allerdings leg ich gleich mal die aktuelle versions ins archiv
der Fix vom rest erfolgt auch gleich.
/edit: sollte jetz laufen. (selbe URL) _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 21.06.2009, 14:58 Titel: |
|
|
Zitat: |
Das mit dem "cannot find -lc" liegt wohl am kill-signal-abfänger (kp wie man des sonst nennen soll). |
es liegt einfach daran, dass die library "c" nicht gefunden wird.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.12.2010, 17:06 Titel: |
|
|
PUSH
Ich arbeite schon seit einer ganzen weile wieder am Bot, zu sehen (und zu verfolgen) ist das ganze hier:
GitHub - MuhBot
Hab ziemlich viel neu geschrieben, gerade was das ganze Plugin-Handling angeht. Vieles ist jetzt schneller, der bot segfaultet nicht mehr (so häufig), es bleibt wenig bis gar nichts im RAM hängen (aktuell 21kb, arbeite aber dran) wenn der bot beendet wird. Das Connection-handling wird von mir gerade bearbeitet, da main() einfach unlesbar ist.
Ich überlege ja einen thread pro Verbindung zu machen um zu prüfen ob die Verbindung noch lebt und um entsprechend zu reagieren.
danach will ich versuchen die ganzen UDTs etwas zu entschlacken und die Plugin-Schnittstelle zu erweitern - so das auch auf "nicht-Kommandos" (syntax: !<cmd>[(<arg1>,<arg2>...)] ) reagiert werden kann. Und die Verarbeitungsgeschwindigkeit sollte ich auch noch steigern können - die ist aber im Vergleich zum alten bot viel höher.
P.S.:
Ich liebe ja git. Vor-allem ist es praktisch wenn man an mehreren Rechnern gleichzeitig entwickelt aber immer nur einer am Netz is.
P.P.S.: Die TSNE-Version die ich nutze ist von TPM für mich modifiziert, also nicht wundern warum ich V_CON als Argument in den Callbacks habe.
Nachtrag1: Windows-Support nur bedingt gegeben. Bei Tests vor einigen Tagen lief er zwar, aber ich glaube nicht das er so sauber beendet wie unter Linux. _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 24.12.2010, 23:39 Titel: |
|
|
PUSH 2:
Hab viel getan seid dem letzten post, hier der commit-log (seit dem 3.12):
(Bereinigt)
- use customized tsne_v3. So i dont have to search for the con_ptr.
- use con_ptr in plugins now (message.con_ptr)
- started refactoring of the connection-handling
- reconnect-code inside the disconnected-callback
- first commit for floodlock
- bugfix (does not longer disconnect without any reason)
- CRITICAL bugfix: dont quit if user uses "))" at the end of the command (like
- Coding style / little tweaks
- don't access directly to func_list inside the plugins:
- performance tweak for the LL (rebuild your plugins!)
- use "last" when its possible [.last() is much faster than .item(.count) ]
- the plugin "play" now uses the add_func-callback
- performance-tweak for the list
- more tweaks
- little fix for the topic-getting
- new "split_msg()" for splitting the i
- nothing special (little bit code-cleaning)
- fix for the irc-msg-splitter (yes, i'm stupid)
Momentan arbeite ich auf bessere Performance hin, da die Verarbeitung von Kommandos teilweise recht lange dauert. gerade wenn die Kommando schnell hintereinander kommen gibt es da Probleme. Wenn mir jemand einen Denkanstoß geben könne wäre das super. _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 02.01.2011, 01:42 Titel: |
|
|
PUSH (die dritte)
Ich habe große teile meiner ursprünglichen To-Do bereits abgearbeitet:
der Parser für die Kommandos ist soweit komplett und durchgetestet,
die Administrations-Funktionen beinahe vollständig,
das Ticket-System erfolgreich eingebaut (es fehlen noch einige Tests und ein paar Funktionen),
das Plugin-Management klappt einigermaßen (siehe oben unter "known issues) - hier muss ich nurnoch eine Schnittstelle für "nicht-kommandos" einbauen ("JOIN", "PRIVMSG", etc)
das Connection-Handling ist verbessert (und vor allem leserlicher) - danke TPM!
Was mir jetzt noch fehlt sind ein paar Anregungen um die Performance zu steigern und vielleicht ein paar Ideen für Sinnvolle Erweiterungen. Oh, und bevor ich es vergesse: Ein paar Tester wären nicht schlecht.
P.S.: Ideen für eine brauchbare "Help()"-Funktion habe ich bereits. _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
|