Mercurial > xib
changeset 14:1a1f2a0d35c7
Fixed bug that prevented the bot from connecting to freenode and all other servers that don't send "umode"
Signed-off-by: Charly COSTE <changaco@changaco.net>
author | Charly COSTE <changaco@changaco.net> |
---|---|
date | Mon, 17 Aug 2009 13:20:25 +0200 |
parents | a9077fa9cac9 |
children | 5aa4399c0530 |
files | README bot.py irclib.py |
diffstat | 3 files changed, 38 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/README +++ b/README @@ -1,3 +1,5 @@ +> Introduction + This is the first release of xib so some things are not implemented yet, if you want/need an error-safe bot, don't use this one ! Here is the list of the important things that still need to be implemented: @@ -11,17 +13,35 @@ and a list of features that should be im xib includes its own version of the old irclib.py <http://python-irclib.sourceforge.net/> because this library doesn't correctly handle the different character encodings, I'm sorry about it but I don't have time to contribute to the upstream version right now, I don't know if it still has developers anyway -xib depends on: + +> xib dependencies: - python 2.6 - xmppony 0.1 -How to install and run xib bots: +> Contributors: +Changaco <changaco@changaco.net> + + +> Changelog: +0.1.1: + - fixed bug that prevented the bot from connecting to freenode and all other servers that don't send "umode" + - added optional parameter to start_bots_from_xml_config.py +0.1: Initial release + + +> How to install and run xib bots: If you are not installing xib from a package manager I suggest you put the files in /usr/local/share/xib -To start xib bots just execute start_bots_from_xml_config.py, this script will search the *current* directory for a file named "config.xml" which must have the same schema as "example_config.xml". +To start xib bots just execute "start_bots_from_xml_config.py", this script takes the path to a configuration file as optional first parameter, if no such parameter is given it will search the *current* directory for a file named "config.xml". + + +> How to write a configuration file understandable by "start_bots_from_xml_config.py": -How to log xib bots output: +Copy "example_config.xml" and modify it to fit your needs. + + +> How to log xib bots output: xib does not directly handle logging for now so you have to do it the old school way, for example: mkdir /var/log/xib
--- a/bot.py +++ b/bot.py @@ -15,14 +15,6 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. -# *** CONTRIBUTORS *** -# Contributor: Changaco <changaco@changaco.net> - - -# *** Changelog *** -# 0.1: First release - - # *** Versioning *** # Major will pass to 1 when xib will be considered fault-tolerant # After that major will only be changed if the new version is not retro-compatible (e.g. requires changes in config file) @@ -206,7 +198,7 @@ class bot(Thread): if 'motd' in event.eventtype(): self.error('=> Debug: ignoring event containing "motd" in the eventtype ('+event.eventtype()+')', debug=True) return - if event.eventtype() in ['pong', 'welcome', 'yourhost', 'created', 'myinfo', 'featurelist', 'luserclient', 'luserop', 'luserchannels', 'luserme', 'n_local', 'n_global', 'endofnames', 'luserunknown']: + if event.eventtype() in ['pong', 'privnotice']: self.error('=> Debug: ignoring '+event.eventtype(), debug=True) return if event.eventtype() == 'pubmsg' and connection.get_nickname() != connection.bridge.irc_connection.get_nickname(): @@ -215,6 +207,17 @@ class bot(Thread): if event.eventtype() == 'ping': connection.pong(connection.get_server_name()) return + if event.eventtype() in ['umode', 'welcome', 'yourhost', 'created', 'myinfo', 'featurelist', 'luserclient', 'luserop', 'luserchannels', 'luserme', 'n_local', 'n_global', 'endofnames', 'luserunknown', 'luserconns']: + if connection.really_connected == False: + connection.really_connected = True + self.error('===> Debug: now really connected', debug=True) + if connection.nick_callback: + connection.nick_callback(None) + else: + self.error('=> Debug: no nick callback for "'+str(event.target())+'"', debug=True) + self.error('connection.nick_callback='+str(connection.nick_callback), debug=True) + self.error('=> Debug: ignoring '+event.eventtype(), debug=True) + return self.error('==> Debug: Received IRC event.', debug=True) self.error('server='+connection.get_server_name(), debug=True) self.error('eventtype='+event.eventtype(), debug=True) @@ -243,13 +246,6 @@ class bot(Thread): else: self.error('=> Debug: no nick callback for "'+str(event.target())+'"', debug=True) return - elif event.eventtype() == 'umode': - if connection.nick_callback: - connection.nick_callback(None) - else: - self.error('=> Debug: no nick callback for "'+str(event.target())+'"', debug=True) - self.error('connection.nick_callback='+str(connection.nick_callback), debug=True) - return elif event.eventtype() == 'namreply': for nickname in re.split('(?:^[@\+]?|(?: [@\+]?)*)', event.arguments()[2].strip()): if nickname == '':
--- a/irclib.py +++ b/irclib.py @@ -375,6 +375,7 @@ class ServerConnection(Connection): def __init__(self, irclibobj): Connection.__init__(self, irclibobj) self.connected = 0 # Not connected yet. + self.really_connected = False self.socket = None self.ssl = None @@ -411,7 +412,7 @@ class ServerConnection(Connection): if self.connected: self.disconnect("Changing servers") - self.closing = False # added for xib + self.closing = False self.previous_buffer = "" self.handlers = {} self.real_server_name = ""