summaryrefslogtreecommitdiffstats
path: root/columbo/__init__.py
blob: 6318e6d9507cca16bf2f5b886cff4d104d039dfc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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}']))