diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Database.py | 9 | ||||
| -rw-r--r-- | src/IRCBot.py | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/Database.py b/src/Database.py index f1563ac0..67fe4a6f 100644 --- a/src/Database.py +++ b/src/Database.py @@ -24,7 +24,7 @@ class Servers(Table): def get_all(self): return self.database.execute_fetchall( "SELECT server_id, alias FROM servers") - def get(self, id: int) -> typing.Tuple[int, typing.Optional[str], str, + def get(self, id: int)-> typing.Tuple[int, typing.Optional[str], str, int, typing.Optional[str], bool, bool, typing.Optional[str], str, typing.Optional[str], typing.Optional[str]]: return self.database.execute_fetchone( @@ -32,6 +32,13 @@ class Servers(Table): ipv4, bindhost, nickname, username, realname FROM servers WHERE server_id=?""", [id]) + def get_by_alias(self, alias: str) -> typing.Optional[int]: + value = self.database.execute_fetchone( + "SELECT server_id FROM servers WHERE alias=? COLLATE NOCASE", + [alias]) + if value: + return value[0] + return value class Channels(Table): def add(self, server_id: int, name: str): diff --git a/src/IRCBot.py b/src/IRCBot.py index d5beb766..0abfb432 100644 --- a/src/IRCBot.py +++ b/src/IRCBot.py @@ -84,11 +84,17 @@ class Bot(object): del self.other_sockets[sock.fileno()] self.poll.unregister(sock.fileno()) - def get_server(self, id: int) -> typing.Optional[IRCServer.Server]: + def get_server_by_id(self, id: int) -> typing.Optional[IRCServer.Server]: for server in self.servers.values(): if server.id == id: return server return None + def get_server_by_alias(self, alias: str) -> typing.Optional[IRCServer.Server]: + alias_lower = alias.lower() + for server in self.servers.values(): + if server.alias.lower() == alias_lower: + return server + return None def connect(self, server: IRCServer.Server) -> bool: try: @@ -235,7 +241,7 @@ class Bot(object): self._events.on("server.disconnect").call(server=server) self.disconnect(server) - if not self.get_server(server.id): + if not self.get_server_by_id(server.id): reconnect_delay = self.config.get("reconnect-delay", 10) self._timers.add("reconnect", reconnect_delay, server_id=server.id) |
