Mercurial > xib
view start_bots_from_xml_config.py @ 22:e2bd4de698e5
Solved an XMPP resource conflict that would have happened when someone on IRC changed its nickname and later its old nickname would be used again. In other words, the bot no longer uses nicknames as XMPP resources.
Signed-off-by: Charly COSTE <changaco@changaco.net>
author | Charly COSTE <changaco@changaco.net> |
---|---|
date | Thu, 20 Aug 2009 17:49:40 +0200 |
parents | 801160b4136f |
children | bfa32b017fc9 |
line wrap: on
line source
#!/usr/bin/env python # -*- coding: utf-8 -*- # *** LICENSE *** # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. from bot import bot from time import sleep from xml.dom.minidom import parse import sys import traceback try: if len(sys.argv) > 1: config = parse(sys.argv[1]) else: config = parse('config.xml') except IOError: print '[Error] configuration file is missing or cannot be read' quit(1) bots_jids = [] for bot_el in config.getElementsByTagName('bot'): if bot_el.getAttribute('jid') in bots_jids: print '[Error] you cannot have two bots using the same JID' quit(2) bots_jids.append(bot_el.getAttribute('jid')) try: bots = [] for bot_el in config.getElementsByTagName('bot'): debug = False if bot_el.hasAttribute('debug'): if bot_el.getAttribute('debug') == 'true': debug = True bot_ = bot(bot_el.getAttribute('jid'), bot_el.getAttribute('password'), bot_el.getAttribute('nickname'), debug=debug) bots.append(bot_) for bridge_el in bot_el.getElementsByTagName('bridge'): xmpp_room = bridge_el.getElementsByTagName('xmpp-room')[0] irc = bridge_el.getElementsByTagName('irc')[0] say_level = 'all' if bridge_el.hasAttribute('say_level'): say_level = bridge_el.getAttribute('say_level') if bridge_el.hasAttribute('mode'): mode = bridge_el.getAttribute('mode') else: mode = 'normal' bridge_ = bot_.new_bridge(xmpp_room.getAttribute('jid'), irc.getAttribute('chan'), irc.getAttribute('server'), mode, say_level) while True: sleep(1) except: for bot in bots: del bot traceback.print_exc() quit(3)