from . import irc_client from dataclasses import dataclass import irctokens import trio @dataclass class Config: clients: list[irc_client.Config] async def start(config): async with trio.open_nursery() as nursery: channel, inbox = trio.open_memory_channel(0) for client in config.clients: nursery.start_soon(irc_client.connect, client, channel) async for source, line in inbox: outbox, client = source print(f'Got line: {line.format()}') reply_target = None if line.params[0] == client.current_nick: reply_target = line.hostmask.nickname elif line.params[1].startswith(','): reply_target = line.params[0] if reply_target: await outbox.send(irctokens.build('PRIVMSG', [reply_target, f'Hi {line.hostmask.nickname}']))