IRC-Client
Sehe ich nicht so. Besser noch eine .0 anhängen, also 1.20.0, damit die Leute nicht so leicht auf die Idee kommen es wäre ein Dezimalbruch. Das würde ja sonst bedeuten man müsste nach einer 0.9 zwangsläufig eine 1.0 veröffentlichen, auch wenn noch gar nicht alle Ziele erreicht wurden, die man sich dafür gesteckt hat.
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:
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 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
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))
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 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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ja, und damit auch der Weg bei dem man am meisten falsch machen kann.Nocta hat geschrieben:Das ganze selbst mit Sockets/Threads/KA-was-alles zu machen, ist wahrscheinlich der umständlichste Weg oder?
Kannst dir gatskerd.py ansehen, der IRC-Part dort ist echt simpel.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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
Ü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
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
Oh, das sieht ja richtig einfach und simpel ausTrundle hat geschrieben:Ein kleines (noch nicht wirklich Bot) IRC-Beispiel mit asynchat.
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])
Was genau ist denn das Problem?
Okay, das erklärt aber nicht die vielen warning: unhandled exception. Das kommt solange, bis ich abbrecheLeonidas hat geschrieben:Du hast Strg+C (KezboardInterrupt) gedrueckt?Nocta hat geschrieben:Was genau ist denn das Problem?