from logging import WARN from typing import Dict from paircd.client import Client from paircd.command_handler import CommandHandler from paircd.log import log_client from paircd.message import Message from paircd.server import Server from paircd.handler.join import JoinHandler from paircd.handler.nick import NickHandler from paircd.handler.privmsg import PrivmsgHandler from paircd.handler.user import UserHandler HANDLER_CLASSES = [ JoinHandler, NickHandler, PrivmsgHandler, UserHandler, ] CMD_HANDLERS: Dict[str, CommandHandler] = {} def register_cmd_handlers() -> None: for handler_cls in HANDLER_CLASSES: handler = handler_cls() # type: ignore CMD_HANDLERS[handler.cmd] = handler async def handle_cmd(server: Server, client: Client, msg: Message) -> None: if msg.cmd not in CMD_HANDLERS: log_client(client, f"used unknown command {msg.cmd}", level=WARN) return await CMD_HANDLERS[msg.cmd].handle(server, client, msg)