python ircd using asyncio
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

22 lines
650 B

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)