bot: Try to reconnect after disconnect.

This commit is contained in:
Brett Smith 2020-04-20 10:19:23 -04:00
parent 96df7f89b2
commit f562d698b2
2 changed files with 12 additions and 1 deletions

View file

@ -45,7 +45,6 @@ def main(arglist=None, stdout=sys.stdout, stderr=sys.stderr):
if not config.ready(): if not config.ready():
return 3 return 3
bot = bot_mod.ForwardBot(config) bot = bot_mod.ForwardBot(config)
bot.connect()
bot.process() bot.process()
return 0 return 0

View file

@ -28,9 +28,21 @@ class ForwardBot(slixmpp.ClientXMPP):
self.register_plugin(xep.value) self.register_plugin(xep.value)
setattr(self, xep.name.lower(), self.plugin[xep.value]) setattr(self, xep.name.lower(), self.plugin[xep.value])
self.add_event_handler('disconnected', self.handle_disconnected)
self.add_event_handler('connection_failed', self.handle_connection_failed)
self.add_event_handler('session_start', self.handle_start) self.add_event_handler('session_start', self.handle_start)
self.add_event_handler('forward::queryhost', self.handle_queryhost) self.add_event_handler('forward::queryhost', self.handle_queryhost)
self.add_event_handler('message', self.handle_message) self.add_event_handler('message', self.handle_message)
self.event('disconnected')
async def handle_disconnected(self, data=None):
self.connect()
async def handle_connection_failed(self, error):
# If the connection isn't going to be retried, or if the retry has
# gotten excessive, give up.
if not (0 < self.connect_loop_wait < self.max_retry_wait):
self.loop.stop()
async def handle_start(self, event): async def handle_start(self, event):
self.send_presence() self.send_presence()