diff --git a/bot.ini.example b/bot.ini.example index fd57ebe..0233406 100644 --- a/bot.ini.example +++ b/bot.ini.example @@ -2,3 +2,5 @@ server = chat.freenode.invalid nickname = matchmaking-bot channels = #matchmaking-test +#Skipping ':' means using default port 1234 +connections = tilde tildeverse.org foo foo.bar:6969 diff --git a/bot.py b/bot.py index fa762b9..2b633f2 100755 --- a/bot.py +++ b/bot.py @@ -7,6 +7,7 @@ from ircrobots import ConnectionParams servers = [] match_players = {} +connections = {} def update_file(name): file = open(f"playerlist-{name}.txt", "w") @@ -36,7 +37,15 @@ class Server(BaseServer): ping += f"{channel.users[pfold].nickname} " await self.send(build("PRIVMSG", [chan, f"Pinging users: {ping}"])) - + if connections[self.name]: + for connection,address in connections[self.name].items(): + if connection in line.params[1]: + if ':' in address: + realaddress = address.split(':')[0] + port = address.split(':')[1] + self.send(build("PRIVMSG", [chan, f"Connect using nc {realaddress} {port}"])) + else: + self.send(build("PRIVMSG", [chan, f"Connect using nc {address} 1234"])) elif line.params[1].startswith(".matchadd"): user = line.source.split('!')[0] @@ -82,8 +91,16 @@ async def main(): exit(1) server = config[section]['server'] nickname = config[section]['nickname'] - channels = set(config[section]['channels'].split(' ')) - # servers.update([(section, {'server':server, 'nickname':nickname, 'channels':channels})]) + channels = set(config[section]['channels'].split()) + if config[section]['connections']: + if len(config[section]['connections'].split()) % 2 != 0: # If connections isn't even + print(f"ERROR: The section {section} has an invalid 'connections' defined.") + exit(1) + config_connections = config[section]['connections'].split() + connections.update({section:{}}) + for i in range(0, len(config_connections), 2): + connections[section].update({config_connections[i]:config_connections[i+1]}) + servers.append({'name':section, 'opts':{'server':server, 'nickname':nickname, 'channels':channels}}) for channel in channels: match_players.update([(section + '-' + channel, set())])