|
|
- import logging
- from typing import Any, Awaitable, Callable, 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] = {}
-
- CmdHandler = Callable[
- [Server, Client, Message],
- Awaitable[None],
- ]
-
-
- def register_cmd_handler(cmd: str, argc: int, handler: CmdHandler) -> 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)
|