import logging from typing import Any, Dict from paircd.client import Client from paircd.log import log_client from paircd.message import Message from paircd.server import Server CMD_HANDLERS: Dict[str, Any] = {} CMD_EXPECTED_ARGC: Dict[str, int] = {} def register_cmd_handler(cmd: str, argc: int, handler) -> None: CMD_EXPECTED_ARGC[cmd] = argc CMD_HANDLERS[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=logging.WARN) return await CMD_HANDLERS[msg.cmd](server, client, msg)