Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

[Netzwerk] [Win/Lin] MuhBot

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 20.06.2009, 12:36    Titel: [Netzwerk] [Win/Lin] MuhBot Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 20.06.2009, 12:42    Titel: Antworten mit Zitat

irc://irc.freenode.net/bots-de <- hier laufen lassen, da stört's keinen. Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 20.06.2009, 15:03    Titel: Antworten mit Zitat

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:

Zitat:
cannot find -lc
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 20.06.2009, 15:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 21.06.2009, 14:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 21.06.2009, 14:58    Titel: Antworten mit Zitat

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. Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.12.2010, 17:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 24.12.2010, 23:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 02.01.2011, 01:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz