111 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| irclib -- Internet Relay Chat (IRC) protocol client library
 | |
| -----------------------------------------------------------
 | |
| 
 | |
| The home of irclib.py is now:
 | |
| 
 | |
|     http://python-irclib.sourceforge.net
 | |
| 
 | |
| This library is intended to encapsulate the IRC protocol at a quite
 | |
| low level.  It provides an event-driven IRC client framework.  It has
 | |
| a fairly thorough support for the basic IRC protocol, CTCP and DCC
 | |
| connections.
 | |
| 
 | |
| In order to understand how to make an IRC client, I'm afraid you more
 | |
| or less must understand the IRC specifications.  They are available
 | |
| here:
 | |
| 
 | |
|     http://www.irchelp.org/irchelp/rfc/
 | |
| 
 | |
| Requirements:
 | |
| 
 | |
|   * Python 2.2 or newer.
 | |
| 
 | |
| Installation:
 | |
| 
 | |
|   * Run "python setup.py install" or copy irclib.py and/or ircbot.py
 | |
|     to an appropriate Python module directory.
 | |
| 
 | |
| The main features of the IRC client framework are:
 | |
| 
 | |
|   * Abstraction of the IRC protocol.
 | |
|   * Handles multiple simultaneous IRC server connections.
 | |
|   * Handles server PONGing transparently.
 | |
|   * Messages to the IRC server are done by calling methods on an IRC
 | |
|     connection object.
 | |
|   * Messages from an IRC server triggers events, which can be caught
 | |
|     by event handlers.
 | |
|   * Reading from and writing to IRC server sockets are normally done
 | |
|     by an internal select() loop, but the select()ing may be done by
 | |
|     an external main loop.
 | |
|   * Functions can be registered to execute at specified times by the
 | |
|     event-loop.
 | |
|   * Decodes CTCP tagging correctly (hopefully); I haven't seen any
 | |
|     other IRC client implementation that handles the CTCP
 | |
|     specification subtilties.
 | |
|   * A kind of simple, single-server, object-oriented IRC client class
 | |
|     that dispatches events to instance methods is included.
 | |
|   * DCC connection support.
 | |
| 
 | |
| Current limitations:
 | |
| 
 | |
|   * The IRC protocol shines through the abstraction a bit too much.
 | |
|   * Data is not written asynchronously to the server (and DCC peers),
 | |
|     i.e. the write() may block if the TCP buffers are stuffed.
 | |
|   * Like most projects, documentation is lacking...
 | |
| 
 | |
| Unfortunately, this library isn't as well-documented as I would like
 | |
| it to be.  I think the best way to get started is to read and
 | |
| understand the example program irccat, which is included in the
 | |
| distribution.
 | |
| 
 | |
| The following files might be of interest:
 | |
| 
 | |
|   * irclib.py
 | |
| 
 | |
|     The library itself.  Read the code along with comments and
 | |
|     docstrings to get a grip of what it does.  Use it at your own risk
 | |
|     and read the source, Luke!
 | |
| 
 | |
|   * irccat
 | |
| 
 | |
|     A simple example of how to use irclib.py.  irccat reads text from
 | |
|     stdin and writes it to a specified user or channel on an IRC
 | |
|     server.
 | |
| 
 | |
|   * irccat2
 | |
| 
 | |
|     The same as above, but using the SimpleIRCClient class.
 | |
| 
 | |
|   * servermap
 | |
| 
 | |
|     Another simple example.  servermap connects to an IRC server,
 | |
|     finds out what other IRC servers there are in the net and prints
 | |
|     a tree-like map of their interconnections.
 | |
| 
 | |
|   * testbot.py
 | |
| 
 | |
|     An example bot that uses the SingleServerIRCBot class from
 | |
|     ircbot.py.  The bot enters a channel and listens for commands in
 | |
|     private messages or channel traffic.  It also accepts DCC
 | |
|     invitations and echos back sent DCC chat messages.
 | |
| 
 | |
|   * dccreceive
 | |
| 
 | |
|     Receives a file over DCC.
 | |
| 
 | |
|   * dccsend
 | |
| 
 | |
|     Sends a file over DCC.
 | |
| 
 | |
| 
 | |
| NOTE: If you're running one of the examples on a unix command line, you need to escape the # symbol in the channel. For example, use \#test instead of #test.
 | |
| 
 | |
| 
 | |
| Enjoy.
 | |
| 
 | |
| Maintainer:
 | |
| keltus <keltus@users.sourceforge.net>
 | |
| 
 | |
| Original Author:
 | |
| Joel Rosdahl <joel@rosdahl.net>
 |