Seite 2 von 2

Verfasst: Montag 7. Januar 2008, 23:53
von Nocta
Ist auch egal mit den Versionsnummern jetzt.
Ich hab mir jetzt mal Twisted angeschaut.
Da hab ich mir gleich mal ein Beispielprogramm für einen IRC Log-Bot angeschaut ... Naja irgendwie blick ich da nicht so ganz durch.
Sowas wie:

Code: Alles auswählen

        if msg.startswith(self.nickname + ":"):
            msg = "%s: I am a log bot" % user
            self.msg(channel, msg)
            self.logger.log("<%s> %s" % (self.nickname, msg))
Versteh ich, ist ja irgendwie auch selbsterklärend. Aber das Problem ist eher, dass ich einfach nicht durchblicke, wenn eine neue Klasse erstellt wird, die von irgendeiner Klasse erbt, die ich natürlich nicht kenne, weil ich das Twisted-Framework noch nie benutzt hab.
Außerdem war der Bot auch recht lahm, der antwortet einem bei einer Query-Message immer "It isn't nice to whisper! Play nice with the group."
Das kommt dann so ca. 15 sekunden später an :o Aber kann ja auch andere Gründe haben.

Ja ich weiß, Tutorials lesen würde das Problem beheben, dass ich nicht so richtig durchblicke, man kann sich nicht ein paar Codebeispiele anschaun und dann erwarten, dass man versteht, wie das ganze Funktioniert.
Aber irgendwie mag ich Twisted jetzt schon nicht :p Mag sein, dass ich Twisted irgendwann schätzen werde, wenn ich merke, wie umständlich ich's hab wenn ich's nicht benutze.
Ich guck mir vielleicht erstmal an, wie die IRC-lib so ist und danach kann ich ja immer noch Twisted nehmen, wenn mir das noch weniger gefällt :p
Das ganze selbst mit Sockets/Threads/KA-was-alles zu machen, ist wahrscheinlich der umständlichste Weg oder? Aber vielleicht auch der lehrreichste :p

Verfasst: Dienstag 8. Januar 2008, 00:00
von Leonidas
Nocta hat geschrieben:Das ganze selbst mit Sockets/Threads/KA-was-alles zu machen, ist wahrscheinlich der umständlichste Weg oder?
Ja, und damit auch der Weg bei dem man am meisten falsch machen kann.

Kannst dir gatskerd.py ansehen, der IRC-Part dort ist echt simpel.

Verfasst: Dienstag 8. Januar 2008, 09:38
von Hyperion
Um das Thema Versionsnummern abzuschließen noch ein paar Hinweise dazu: Kopete (KDE Multi Protokoll Messenger) und XCDRoast (http://www.xcdroast.org/) sind wohl gute Beispiele dafür. Wobei letzteres seit 10 Jahren "unfertig" ist :D

Verfasst: Dienstag 8. Januar 2008, 15:30
von Y0Gi
Über Twisted habe ich zwar ein Buch im Regal, aber so richtig grün geworden bin und gemocht habe ich es bisher nie.

Für kleine Bots habe ich mit der irclib keine Probleme gehabt, würde in Zukunft aber wohl auf Supybot oder Gozerbot setzen.

Wenn es dir darum geht, etwas zu lernen (und ziemlich gute IRC-Clients gibt es ja bereits) und mit dem Protokoll zu spielen, dann ist ein recht niedriger Ansatz über Sockets oder ggf. über asyncore/asynchat (habe ich bisher leider noch nicht benutzt) wohl die beste Wahl. Netzwerkprogrammierung kann aber sehr tricky sein, von daher bin ich letztlich doch meistens von eigenen Implementierungen auf bewährte Lösungen gewechselt ;)

Verfasst: Dienstag 8. Januar 2008, 16:21
von Trundle

Verfasst: Samstag 2. Februar 2008, 19:47
von Nocta
Oh, das sieht ja richtig einfach und simpel aus :)
Ich glaub damit komm ich gut zurecht, danke für das Beispiel.
Kommt mir auf jeden Fall viel einfacher vor als Twisted oder so.
Edit:
Ich hab das jetzt mal grad so ausprobiert, wie es im Paste stehst und folgendes krieg ich von Python:

Code: Alles auswählen

warning: unhandled exception
warning: unhandled exception
warning: unhandled exception
warning: unhandled exceptionerror: uncaptured python exception, closing channel <__main__.IRCBot at 0xc5ab98> (<type 'exceptions.KeyboardInterrupt'>: [C:\Python25\lib\asyncore.py|_exception|84] [C:\Python25\lib\asyncore.py|handle_expt_event|400] [C:\Python25\lib\asyncore.py|handle_expt|423] [C:\Python25\lib\asyncore.py|log_info|376] [C:\Python25\lib\idlelib\rpc.py|__call__|597] [C:\Python25\lib\idlelib\rpc.py|remotecall|211] [C:\Python25\lib\idlelib\rpc.py|asyncreturn|240] [C:\Python25\lib\idlelib\rpc.py|getresponse|280] [C:\Python25\lib\idlelib\rpc.py|_getresponse|308] [C:\Python25\lib\threading.py|wait|214])
Ähm ja ... Hä?!
Was genau ist denn das Problem?

Verfasst: Freitag 8. Februar 2008, 12:32
von Leonidas
Nocta hat geschrieben:Was genau ist denn das Problem?
Du hast Strg+C (KezboardInterrupt) gedrueckt? ;)

Verfasst: Sonntag 10. Februar 2008, 21:47
von Nocta
Leonidas hat geschrieben:
Nocta hat geschrieben:Was genau ist denn das Problem?
Du hast Strg+C (KezboardInterrupt) gedrueckt? ;)
Okay, das erklärt aber nicht die vielen warning: unhandled exception. Das kommt solange, bis ich abbreche :shock: