From e89b4b6a835475b5ba2b046240176acd6811ed00 Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 2 Jul 2018 12:08:26 +0100 Subject: Don't add a server to bot.servers until it's connected --- IRCBot.py | 9 +-------- start.py | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/IRCBot.py b/IRCBot.py index 4c3caf1e..1108aaf6 100644 --- a/IRCBot.py +++ b/IRCBot.py @@ -24,7 +24,6 @@ class Bot(object): if not new_server.get_setting("connect", True): return self.events.on("new").on("server").call(server=new_server) - self.servers[new_server.fileno()] = new_server if connect and new_server.get_setting("connect", True): self.connect(new_server) return new_server @@ -35,15 +34,9 @@ class Bot(object): sys.stderr.write("Failed to connect to %s\n" % str(server)) traceback.print_exc() return False + self.servers[server.fileno()] = server self.poll.register(server.fileno(), select.EPOLLOUT) return True - def connect_all(self): - for server in self.servers.values(): - if server.get_setting("connect", True): - if not self.connect(server): - return False - return True - def setup_timers(self, event): for setting, value in self.find_settings("timer-%"): id = setting.split("timer-", 1)[1] diff --git a/start.py b/start.py index 848a2a08..53cba532 100755 --- a/start.py +++ b/start.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -import argparse, time +import argparse, sys, time import IRCBot, Config, Database def bool_input(s): @@ -25,14 +25,20 @@ bot.config_object = config_object bot.args = args bot.modules.load_modules() -servers = database.get_servers() -for server in servers: - bot.add_server(*server) -if len(bot.servers): +server_details = database.get_servers() +servers = [] +for server_detail in server_details: + server = bot.add_server(*server_detail) + if not server == None: + servers.append(server) +if len(servers): bot.events.on("boot").on("done").call() - time.sleep(5) - if bot.connect_all(): - bot.run() + for server in servers: + if not bot.connect(server): + sys.stderr.write("failed to connect to '%s', exiting\r\n" % ( + str(server))) + sys.exit(1) + bot.run() else: try: if bool_input("no servers found, add one?"): -- cgit v1.3.1-10-gc9f91