diff options
Diffstat (limited to 'src/IRCBot.py')
| -rw-r--r-- | src/IRCBot.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/IRCBot.py b/src/IRCBot.py index f7e0dfe9..befc2a72 100644 --- a/src/IRCBot.py +++ b/src/IRCBot.py @@ -27,6 +27,7 @@ class Bot(object): self.add_socket(Socket.Socket(self._trigger_server, lambda _, s: None)) self._trigger_functions = [] + self.events.hook("timer.reconnect", self._timed_reconnect) def trigger(self, func: typing.Callable[[], typing.Any]=None): self.lock.acquire() @@ -127,13 +128,15 @@ class Bot(object): pass del self.servers[server.fileno()] - @utils.hook("timer.reconnect") - def reconnect(self, event: EventManager.Event): - server = self.add_server(event["server_id"], False) + def _timed_reconnect(self, event: EventManager.Event): + if not self.reconnect(event["server_id"]): + event["timer"].redo() + def reconnect(self, server_id: int) -> bool: + server = self.add_server(server_id, False) if self.connect(server): self.servers[server.fileno()] = server - else: - event["timer"].redo() + return True + return False def set_setting(self, setting: str, value: typing.Any): self.database.bot_settings.set(setting, value) |
