Suche irclib.py Doku/Beispiel

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Donnerstag 21. Februar 2008, 19:55

Hi,
ich suche zu der Python irclib noch eine Doku und vielleicht ein Beispiel. Bis auf die Comments in irclib.py selbst hab ich aber noch nichts weiter gefunden.

Gibt es da nichts oder suche ich in der falschen Ecke?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 21. Februar 2008, 20:41

Du kannst dir ja auf der python-irclib aufbauende Projekte wie ePyCycle ansehen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Freitag 22. Februar 2008, 08:06

von ePyCycle finde ich nur leere oder tote Seiten. Das Projekt scheint wohl tot zu sein.

Nach langer geduldiger Suche hab ich etwas gefunden das helfen könnte
http://www.devshed.com/c/a/Python/IRC-o ... her-Level/

Ich hab es aber noch nicht gelesen

Edit: es gibt noch zwei Artikel
http://www.devshed.com/c/a/Python/IRC-o ... Concluded/
http://www.devshed.com/c/a/Python/IRC-o ... Continued/
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 22. Februar 2008, 11:37

burli hat geschrieben:von ePyCycle finde ich nur leere oder tote Seiten. Das Projekt scheint wohl tot zu sein.
Richtig, ist es auch. Es sollte in einem anderen Bot, circuit, aufgehen aber daraus ist nichts geworden. Du kannst aber den Code dort sicher weiterverwenden.

Aber ich habe einige alte Versionen online und ich glaub bei Savannah sind die Dateien noch im CVS.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Freitag 22. Februar 2008, 12:38

Ok, danke. Aber mal schauen. Ich werde mir erstmal die drei Anleitungen auf devshed.com antun. Die sehen vielversprechend aus
Benutzeravatar
tiax
User
Beiträge: 152
Registriert: Samstag 23. Juli 2005, 17:28
Kontaktdaten:

Freitag 22. Februar 2008, 14:36

bei der python-irclib sind doch einige Beispiele dabei
Ne invoces expellere non possis
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Freitag 22. Februar 2008, 14:45

tiax hat geschrieben:bei der python-irclib sind doch einige Beispiele dabei
Asche auf mein Haupt :oops: Ich habe irgendwie nur nach *.py Dateien geschaut. Und da gibt es nur die beiden Libs irclib.py und ircbot.py und ein Beispiel testbot.py. Die anderen Dateien sind mir schlichtweg entgangen :oops:

Nagut, dann hab ich jetzt 3 Anleitungen und ne Handvoll Beispiele. Damit sollte ich doch was zusammenkriegen ;)
burli
User
Beiträge: 1116
Registriert: Dienstag 9. März 2004, 18:22

Freitag 22. Februar 2008, 22:58

Eine Anmerkung zu den Beispielen auf devshed für den Fall das jemand mal hier drüber stolpert:

In den Beispielen gibt es einen kleinen Schönheitsfehler durch den sie nicht funktionieren. In den Beispielen wird unmittelbar nach dem Connect ein Join durchgeführt. Nur dummerweise wird der Join Befehl sofort ausgeführt und es wird nicht gewartet bis der Server eine Verbindung hergestellt hat

Hier ist ein korrigiertes Beispiel von Seite 3: Events

Code: Alles auswählen

import irclib

# Connection information
network = 'irc.freenode.net'
port = 6667
channel = '#irclib'
nick = 'PyTest'
name = 'Test One'

#irclib.DEBUG = True

def on_connect(connection, event):
    if irclib.is_channel(channel):
        connection.join(channel)
    else:
        while 1:
            line = sys.stdin.readline()
            if not line:
                break
            connection.privmsg(channel, line)
        connection.quit("Using irclib.py")

        
        
# Generic echo handler ( space added )
# This is used to output some initial information from the server
def handleEcho ( connection, event ):

   print
   print ' '.join ( event.arguments() )

# Generic echo handler ( no space added )
def handleNoSpace ( connection, event ):

   print ' '.join ( event.arguments() )

# Handle private notices
def handlePrivNotice ( connection, event ):

   if event.source():
      print ':: ' + event.source() + ' ->' + event.arguments() [ 0 ]
   else:
      print event.arguments() [ 0 ]

# Handle channel joins
def handleJoin ( connection, event ):

   # The source needs to be split into just the name
   # It comes in the format nickname!user@host
   print event.source().split ( '!' ) [ 0 ] + ' has joined ' + event.target()

# Create the IRC object
irc = irclib.IRC()

# Register handlers
irc.add_global_handler ( 'privnotice', handlePrivNotice ) # Private notice
#irc.add_global_handler ( 'welcome', handleEcho ) # Welcome message
irc.add_global_handler ( 'yourhost', handleEcho ) # Host message
irc.add_global_handler ( 'created', handleEcho ) # Server creation message
irc.add_global_handler ( 'myinfo', handleEcho ) # "My info" message
irc.add_global_handler ( 'featurelist', handleEcho ) # Server feature list
irc.add_global_handler ( 'luserclient', handleEcho ) # User count
irc.add_global_handler ( 'luserop', handleEcho ) # Operator count
irc.add_global_handler ( 'luserchannels', handleEcho ) # Channel count
irc.add_global_handler ( 'luserme', handleEcho ) # Server client count
irc.add_global_handler ( 'n_local', handleEcho ) # Server client count/maximum
irc.add_global_handler ( 'n_global', handleEcho ) # Network client count/maximum
irc.add_global_handler ( 'luserconns', handleEcho ) # Record client count
irc.add_global_handler ( 'luserunknown', handleEcho ) # Unknown connections
irc.add_global_handler ( 'motdstart', handleEcho ) # Message of the day ( start )
irc.add_global_handler ( 'motd', handleNoSpace ) # Message of the day
irc.add_global_handler ( 'edofmotd', handleEcho ) # Message of the day ( end )
irc.add_global_handler ( 'join', handleJoin ) # Channel join
irc.add_global_handler ( 'namreply', handleNoSpace ) # Channel name list
irc.add_global_handler ( 'endofnames', handleNoSpace ) # Channel name list ( end )
irc.add_global_handler ("welcome", on_connect)


# Create a server object, connect and join the channel
server = irc.server()
server.connect ( network, port, nick, ircname = name )
#server.join ( channel )

# Jump into an infinite loop
irc.process_forever()
Entscheidend ist die Zeile irc.add_global_handler ("welcome", on_connect)
und die Funktion on_connect
Antworten