from paircd.client import Client from paircd.command_handler import CommandHandler from paircd.message import Message from paircd.reply import ( ERR_NOSUCHNICK, ERR_NOTEXTTOSEND, ERR_NOTREGISTERED, PRIVMSG, RPL_AWAY, ) from paircd.server import Server class PrivmsgHandler(CommandHandler): def __init__(self) -> None: super().__init__("PRIVMSG", 2) async def handle(self, server: Server, client: Client, msg: Message) -> None: recipient, raw_msg = msg.args if len(raw_msg) == 0: client.write_message(ERR_NOTEXTTOSEND(client.nickname)) return out = PRIVMSG(recipient, raw_msg, prefix=client.id()) for name, other_client in server.clients_by_nick.items(): if name == recipient: if other_client.away: client.write_message( RPL_AWAY(client.nickname, name, other_client.away) ) other_client.write_message(out) return for name, channel in server.channels_by_name.items(): if name == recipient: channel.write_message(out) return client.write_message(ERR_NOSUCHNICK(client.nickname, recipient))