Seite 1 von 1

Suche irclib.py Doku/Beispiel

Verfasst: Donnerstag 21. Februar 2008, 19:55
von burli
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?

Verfasst: Donnerstag 21. Februar 2008, 20:41
von Leonidas
Du kannst dir ja auf der python-irclib aufbauende Projekte wie ePyCycle ansehen.

Verfasst: Freitag 22. Februar 2008, 08:06
von burli
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/

Verfasst: Freitag 22. Februar 2008, 11:37
von Leonidas
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.

Verfasst: Freitag 22. Februar 2008, 12:38
von burli
Ok, danke. Aber mal schauen. Ich werde mir erstmal die drei Anleitungen auf devshed.com antun. Die sehen vielversprechend aus

Verfasst: Freitag 22. Februar 2008, 14:36
von tiax
bei der python-irclib sind doch einige Beispiele dabei

Verfasst: Freitag 22. Februar 2008, 14:45
von burli
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 ;)

Verfasst: Freitag 22. Februar 2008, 22:58
von burli
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